This PR adds a warning to any `def` of class type that does not also declare an appropriate reducibility. The warning check runs after elaboration (checking the actual reducibility status via `getReducibilityStatus`) rather than syntactically checking modifiers before elaboration. This is necessary to accommodate patterns like `@[to_additive (attr := implicit_reducible)]` in Mathlib, where the reducibility attribute is applied during `.afterCompilation` by another attribute, and would be missed by a purely syntactic check. --------- Co-authored-by: Paul Reichert <6992158+datokrat@users.noreply.github.com> Co-authored-by: Kim Morrison <kim@tqft.net> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
9 lines
419 B
Text
9 lines
419 B
Text
phashmap_inst_coherence.lean:8:0-9:30: warning: Definition `natDiffHash` of class type must be marked with `@[reducible]` or `@[implicit_reducible]`
|
|
phashmap_inst_coherence.lean:12:53-12:54: error: Application type mismatch: The argument
|
|
m
|
|
has type
|
|
@PersistentHashMap Nat Nat instBEqOfDecidableEq instHashableNat
|
|
but is expected to have type
|
|
@PersistentHashMap Nat Nat ?m natDiffHash
|
|
in the application
|
|
m.find?
|