lean4-htt/tests/pkg/module/Module
Robert J. Simmons 3a309ba4eb
feat: improve error message in the case of type class synthesis failure (#11245)
This PR improves the error message encountered in the case of a type
class instance resolution failure, and adds an error explanation that
discusses the common new-user case of binary operation overloading and
points to the `trace.Meta.synthInstance` option for advanced debugging.

## Example

```lean4
def f (x : String) := x + x
```

Before:
```
failed to synthesize
  HAdd String String ?m.5

Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command.
```

After:
```
failed to synthesize instance of type class
  HAdd String String ?m.5

Hint: Type class instance resolution failures can be inspected with the `set_option trace.Meta.synthInstance true` command.
Error code: lean.failedToSynthesizeTypeclassInstance
[View explanation](https://lean-lang.org/doc/reference/latest/find/?domain=Manual.errorExplanation&name=lean.failedToSynthesizeTypeclassInstance)
```

The error message is changed in three important ways:
* Explains *what* failed to synthesize, using the "type class"
terminology that's more likely to be recognized than the "instance"
terminology
* Points to the `trace.Meta.synthInstance` option which is otherwise
nearly undiscoverable but is quite powerful (see also
leanprover/reference-manual#663 which is adding commentary on this
option)
* Gives an error explanation link (which won't actually work until the
next release after this is merged) which prioritizes the common-case
explanation of using the wrong binary operation
2025-11-21 21:24:27 +00:00
..
Basic.lean chore: make compilation type mismatch error message from non-exposed defs a lot less mysterious (#11177) 2025-11-14 10:50:43 +00:00
Basic2.lean fix: import-merging theorems under the module system (#10556) 2025-09-26 13:02:51 +00:00
ConflictingImported.lean fix: import-merging theorems under the module system (#10556) 2025-09-26 13:02:51 +00:00
Imported.lean feat: improve error message in the case of type class synthesis failure (#11245) 2025-11-21 21:24:27 +00:00
ImportedAll.lean fix: privacy checks and import all (#10550) 2025-09-26 13:26:10 +00:00
ImportedAllImportedAll.lean fix: privacy checks and import all (#10550) 2025-09-26 13:26:10 +00:00
ImportedAllPrivateImported.lean chore: avoid confusing public import all combination (#10051) 2025-08-22 12:04:42 +00:00
ImportedImportedAll.lean feat: make private the default in module (#9044) 2025-06-28 16:30:53 +00:00
ImportedPrivateImported.lean chore: even more module system fixes and refinements from Mathlib porting (#10726) 2025-10-15 14:59:09 +00:00
MetaImported.lean fix: detect private references in inferred type of public def (#10762) 2025-10-15 12:51:54 +00:00
NonModule.lean refactor: move import validation to parser & Lake (#9716) 2025-08-05 22:36:54 +00:00
PrivateImported.lean chore: even more module system fixes and refinements from Mathlib porting (#10726) 2025-10-15 14:59:09 +00:00