45 lines
1 KiB
Text
45 lines
1 KiB
Text
/-!
|
|
# More helpful ranges of parser error messages on unexpected tokens
|
|
|
|
When the parser hits an unexpected token, it will now include all preceding
|
|
whitespace in the error message range as the expected token could be inserted
|
|
at any of these places to fix the error. -/
|
|
|
|
/-!
|
|
In the following example, we want the parser error to start right after
|
|
`exact` as the error belongs to this declaration, not the next one, and
|
|
otherwise would be too easy to overlook. -/
|
|
|
|
theorem lem1 : True := by
|
|
exact
|
|
|
|
theorem lem2 : True := ⟨⟩
|
|
|
|
/-!
|
|
Outside of tactics as well it is generally a better idea to place the error
|
|
right after the last correct token. -/
|
|
|
|
def f1
|
|
|
|
def f2 := 0
|
|
|
|
/-!
|
|
We do not currently special-case linebreaks in this; on a single line,
|
|
the shift is usually not very noticeable nor clearly worse than before. -/
|
|
|
|
def f3 := def f4 := 0
|
|
|
|
/-! Test other expected token errors as well -/
|
|
|
|
inductive
|
|
|
|
example := 0
|
|
|
|
-- merge of token errors
|
|
set_option pp.all
|
|
|
|
example := 0
|
|
|
|
/-! Do not shift other kinds of errors. -/
|
|
|
|
example := "a
|