audit-ct-tidy: close milestone ct-tidy via ctt.tidy

This commit is contained in:
2026-05-12 22:36:32 +02:00
parent 0d3f44bee1
commit 0dcdaab924
4 changed files with 180 additions and 8 deletions
+13 -5
View File
@@ -1732,13 +1732,18 @@ wording is fixed; the categories and their triggers are:
**Class-schema diagnostics** (validation of class declarations):
- `KindMismatch` — class param appears in applied position in any
method signature (e.g., `f a` where `f` is the class param).
- `InvalidSuperclassParam` — superclass `type` differs from the
class's own `param`.
- `ConstraintReferencesUnboundTypeVar` — a constraint mentions a
type variable not bound by the surrounding `forall`.
A class param appearing in applied position (e.g., `f a` where `f`
is the class param) is rejected earlier by the canonical-form
validator as `BareCrossModuleTypeRef` — `f` is a bare,
non-primitive name not declared as a `TypeDef` in the owning
module — so the dedicated `KindMismatch` diagnostic was retired
at iter ctt.3.
**Typecheck diagnostics** (per function body):
- `MissingConstraint` — body's residual constraint is not covered
@@ -1758,9 +1763,12 @@ axis-5 (kind `*` only) covers the space.
- **Multi-parameter classes** (`class Foo a b where ...`). Schema
rejects: `ClassDef.param` is a string, not a list.
- **Higher-kinded class params** (`class Functor f`). Diagnostic
S1 (`KindMismatch`) at class declaration if any method applies
the param.
- **Higher-kinded class params** (`class Functor f`). Rejected at
workspace-load time: `BareCrossModuleTypeRef` from canonical-form
validation fires before class-schema validation if any method
body uses the param as a `Type::Con` head — bare non-primitive
names must be declared as a `TypeDef` in the owning module, and
a class param is not.
- **Higher-rank polymorphism** (`forall a. (forall b. b -> b) -> a`).
Already rejected at parse time per the typeclass-conversation
rationale recorded in JOURNAL; constraint-bearing