lean4-htt/tests/lean/run/errorExplanationLinting.lean
jrr6 32795911d2
feat: add initial error explanations (#8934)
This PR adds explanations for a few errors concerning noncomputability,
redundant match alternatives, and invalid inductive declarations.

These adopt a lower-case error naming style, which is also applied to
existing error explanation tests.
2025-06-23 17:24:09 +00:00

313 lines
4 KiB
Text

import Lean.ErrorExplanation
/-!
# Error Explanation Linting
Ensures that error explanation structure is correctly validated by the `register_error_explanation`
command.
-/
open Lean Meta
/-- error: Example 'Bar' is malformed: Expected a(n) `output` code block -/
#guard_msgs in
/--
# Examples
## Foo
```lean broken
```
```output
```
```lean fixed
```
## Bar
```lean broken
```
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/--
error: Example 'Foo' is malformed: Expected a(n) `output` code block, but found a(n) `lean` one
-/
#guard_msgs in
/--
Foo
# Examples
## Foo
```lean broken
```
```lean fixed
```
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/-- error: Expected level-2 header for an example section, but found `# End of Examples` -/
#guard_msgs in
/--
# Examples
# End of Examples
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/--
error: Example 'Example' is malformed: Expected a(n) broken `lean` code block, but found a(n) fixed `lean` one
-/
#guard_msgs in
/--
# Examples
## Example
```lean fixed
```
```output
```
```lean broken
```
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/--
error: Example 'Example' is malformed: Expected a(n) `output` code block, but found a(n) `lean` one
-/
#guard_msgs in
/--
# Examples
## Example
```lean broken
```
```lean broken
```
```output
```
```lean fixed
```
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/-- error: Example 'Example' is malformed: Expected a(n) fixed `lean` code block -/
#guard_msgs in
/--
# Examples
## Example
```lean broken
```
```output
```
# End of Example
```lean fixed
```
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/--
error: Example 'Example' is malformed: Invalid code block info string `lean broken_or_fixed`: offset 20: Invalid attribute `broken_or_fixed`
-/
#guard_msgs in
/--
# Examples
## Example
```lean broken_or_fixed
```
```output
```
```lean fixed
```
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/-- error: Expected level-2 header for an example section, but found `# Examples` -/
#guard_msgs in
/--
This is an explanation.
# Examples
## Ex
```lean broken
```
```output
```
```lean fixed
```
# Examples
Should fail
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/-- error: Expected level-2 header for an example section, but found `# New Section` -/
#guard_msgs in
/--
Pre-example
explanation.
```lean
-- non-example code block
```
# Examples
## First example
```lean broken
```
```output
```
```lean fixed
```
Explanation of first example.
## Second example
```lean broken
```
```output
```
```lean fixed
```
Explanation of second example.
# New Section
Foo
-/
register_error_explanation Lean.Example {
summary := ""
sinceVersion := ""
}
/--
# Examples
## Test
```lean broken
```
```output
```
```lean fixed
```
-/
register_error_explanation Lean.WorkingExample₁ {
summary := ""
sinceVersion := ""
}
/--
General explanation
General explanation
# Examples (Not)
## Not an example
```lean
def foo := 32
```
# Also Not Examples
Test
# Examples
## My Example
```lean broken
```
```output
```
```lean fixed (title := "Foo")
```
Explanation of example.
-/
register_error_explanation Lean.WorkingExample₂ {
summary := ""
sinceVersion := ""
}
/--
Link: [`lean.someErrorName`](lean-manual://errorExplanation/lean.someErrorName)
# Examples
## Example 1
```lean broken
```
```output
```
```lean fixed
```
Link: [`lean.someErrorName`](lean-manual://errorExplanation/lean.someErrorName)
-/
register_error_explanation Lean.WorkingExample₃ {
summary := ""
sinceVersion := ""
}
/--
# Examples
## Nested Code Fences
````lean broken
```
````
`````output
````
`````
`````lean fixed
`````
-/
register_error_explanation Lean.WorkingExample₄ {
summary := ""
sinceVersion := ""
}