lean4-htt/src/Lean
Robert J. Simmons 3bd1dd633f
feat: identifier suggestions on some autobinding failures (#11621)
This PR causes Lean to search through `@[suggest_for]` annotations on
certain errors that look like unknown identifiers that got incorrectly
autobound. This will correctly identify that a declaration of type
`Maybe String` should be `Option String` instead.

## Example

```
example : Except String Unit := return .ok ()
```

```
Function expected at
  Result
but this term has type
  ?m.1

Note: Expected a function because this term is being applied to the argument
  String

Hint: The identifier `Result` is unknown, and Lean's `autoImplicit` option causes an unknown identifier to be treated as an implicitly bound variable with an unknown type. However, the unknown type cannot be a function, and a function is what Lean expects here. This is often the result of a typo or a missing `import` or `open` statement.

Perhaps you meant `Except` in place of `Result`?
```

The last line is added by this PR.
2025-12-11 21:40:16 +00:00
..
Compiler chore: remove IR elim dead branches (#11576) 2025-12-11 10:39:02 +00:00
Data feat: ToJson and FromJson for String.Slice (#11548) 2025-12-08 10:19:42 +00:00
DocString chore: minor String API improvements (#11439) 2025-12-01 11:44:14 +00:00
Elab feat: identifier suggestions on some autobinding failures (#11621) 2025-12-11 21:40:16 +00:00
ErrorExplanations chore: fix spelling (#11531) 2025-12-06 13:54:27 +00:00
Language refactor: port shell option processing to Lean (v2) (#11434) 2025-12-02 17:41:51 +00:00
LibrarySuggestions fix: improve "no library suggestions engine registered" error message (#11464) 2025-12-02 00:55:46 +00:00
Linter feat: document that backward options may disappear (#11304) 2025-11-24 17:49:46 +00:00
Meta fix: apply ring normalizer to equalities coming from grind to core to lia (#11613) 2025-12-11 14:32:54 +00:00
Parser refactor: String functions foldr, all, any, contains to go trough String.Slice (#11357) 2025-11-25 15:42:43 +00:00
ParserCompiler chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
PrettyPrinter refactor: deprecate String.posOf and variants in favor of unified String.find (#11276) 2025-11-23 18:39:53 +00:00
Server chore: minor String API improvements (#11439) 2025-12-01 11:44:14 +00:00
Util chore: fix spelling (#11531) 2025-12-06 13:54:27 +00:00
Widget chore: rename String.Range to Lean.Syntax.Range (#10852) 2025-10-21 07:32:25 +00:00
AddDecl.lean test: avoid testing colliding private inductives (#11041) 2025-11-01 11:47:52 +00:00
Attributes.lean chore: fix spelling (#11531) 2025-12-06 13:54:27 +00:00
AuxRecursor.lean perf: handle per-constructor noConfusion in toLCNF (#11566) 2025-12-10 09:03:55 +00:00
BuiltinDocAttr.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Class.lean
Compiler.lean chore: remove public section from end of files (#10684) 2025-10-06 13:30:48 +00:00
CoreM.lean fix: teach Exception.isRuntime to detect nested errors (#11490) 2025-12-10 10:19:33 +00:00
Data.lean chore: remove public section from end of files (#10684) 2025-10-06 13:30:48 +00:00
Declaration.lean chore: >6 month old deprecations (#10969) 2025-10-26 22:48:41 +00:00
DeclarationRange.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
DefEqAttrib.lean
DocString.lean
Elab.lean feat: with_weak_namespace command (#11338) 2025-11-25 02:37:40 +00:00
EnvExtension.lean feat: shake import minimizer aware of the module system and arbitrary elaboration dependencies (#10575) 2025-09-28 16:00:00 +00:00
Environment.lean perf: avoid blocking on proof elaboration in Environment.hasUnsafe (#11606) 2025-12-11 17:24:01 +00:00
ErrorExplanation.lean chore: rename String.ValidPos to String.Pos (#11240) 2025-11-24 16:40:21 +00:00
ErrorExplanations.lean feat: improve error messages for invalid field access (#11456) 2025-12-02 17:46:12 +00:00
Exception.lean fix: teach Exception.isRuntime to detect nested errors (#11490) 2025-12-10 10:19:33 +00:00
Expr.lean feat: @[suggest_for] attribute to inform replacements (#11367) 2025-12-04 13:20:37 +00:00
ExtraModUses.lean feat: shake: make Mathlib-ready (#11496) 2025-12-05 09:37:58 +00:00
HeadIndex.lean
Hygiene.lean chore: do not set unused Option.Decl.group (#11307) 2025-11-21 16:44:38 +00:00
IdentifierSuggestion.lean feat: identifier suggestions on some autobinding failures (#11621) 2025-12-11 21:40:16 +00:00
ImportingFlag.lean
InternalExceptionId.lean chore: reorganize Init imports around strings (#10289) 2025-09-07 17:09:14 +00:00
KeyedDeclsAttribute.lean fix: some ExtraModUses (#10620) 2025-10-03 15:50:40 +00:00
LabelAttribute.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Level.lean fix: move the monad argument for ForIn, ForIn', and ForM (#10204) 2025-11-25 12:20:37 +00:00
LibrarySuggestions.lean fix: make library suggestions available in module files (#11373) 2025-11-26 05:39:27 +00:00
Linter.lean chore: remove public section from end of files (#10684) 2025-10-06 13:30:48 +00:00
LoadDynlib.lean refactor: use String.Slice in String.take and variants (#11180) 2025-11-18 16:13:48 +00:00
LocalContext.lean fix: move the monad argument for ForIn, ForIn', and ForM (#10204) 2025-11-25 12:20:37 +00:00
Log.lean fix: teach Exception.isRuntime to detect nested errors (#11490) 2025-12-10 10:19:33 +00:00
Message.lean fix: teach Exception.isRuntime to detect nested errors (#11490) 2025-12-10 10:19:33 +00:00
Meta.lean feat: @[method_specs] to generate specification theorems from class instances (#10302) 2025-09-15 11:17:06 +00:00
MetavarContext.lean fix: remove superfluous Monad instances from some spec lemmas (#10564) (#10618) 2025-09-29 15:02:43 +00:00
Modifiers.lean chore: more module system fixes and refinements for finishing batteries port (#10819) 2025-10-21 08:19:50 +00:00
MonadEnv.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Namespace.lean
Parser.lean feat: hexnum parser (#10716) 2025-10-08 21:12:03 +00:00
ParserCompiler.lean doc: correct typos in documentation and comments (#11465) 2025-12-02 06:38:05 +00:00
PrettyPrinter.lean chore: do not set unused Option.Decl.group (#11307) 2025-11-21 16:44:38 +00:00
PrivateName.lean
ProjFns.lean chore: delete obsolete C++ file (#11561) 2025-12-09 15:47:54 +00:00
ReducibilityAttrs.lean feat: allow setting reducibilityCoreExt in async contexts (#11301) 2025-11-21 09:23:14 +00:00
Replay.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
ReservedNameAction.lean
ResolveName.lean chore: more module system fixes and refinements for finishing batteries port (#10819) 2025-10-21 08:19:50 +00:00
Runtime.lean
ScopedEnvExtension.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
Server.lean feat: revamp server logging (#10787) 2025-10-28 16:26:59 +00:00
Setup.lean fix: symbol clashes between packages (#11082) 2025-11-19 02:24:44 +00:00
Shell.lean refactor: port shell option processing to Lean (v2) (#11434) 2025-12-02 17:41:51 +00:00
Structure.lean chore: remove redundant imports in core (#10750) 2025-10-16 20:27:46 +00:00
SubExpr.lean refactor: use String.split instead of String.splitOn or String.splitToList (#11250) 2025-11-19 09:35:19 +00:00
Syntax.lean fix: move the monad argument for ForIn, ForIn', and ForM (#10204) 2025-11-25 12:20:37 +00:00
ToExpr.lean feat: support for Rat scientific literals (#10961) 2025-10-26 02:05:26 +00:00
ToLevel.lean
Util.lean feat: instantiate tactic parameter optimizer (#10916) 2025-10-23 01:22:33 +00:00
Widget.lean chore: remove public section from end of files (#10684) 2025-10-06 13:30:48 +00:00