From: Javier Sagredo Date: Thu, 7 May 2026 00:58:29 +0000 (+0200) Subject: Use abstract names in unresolved-faminst placeholder example X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=086b6364fbf8473ab293350941a84bcbdb32c0a7;p=classgraph.git Use abstract names in unresolved-faminst placeholder example Drop the ChainDepState / BlockProtocol / Praos references and replace with neutral F / G / Bar shapes. The viewer is meant to be project-agnostic; baking downstream package vocabulary into the UI text was a leak. Co-Authored-By: Claude Opus 4.7 (1M context) --- diff --git a/data/viewer.js b/data/viewer.js index 0e63c78..8355b8a 100644 --- a/data/viewer.js +++ b/data/viewer.js @@ -1975,7 +1975,7 @@

Use site that classgraph couldn't match against any known fam-instance. Two common reasons:

  1. External family — the family's equations live in a package you haven't extracted. Re-run the plugin against the defining package to surface them here.
  2. -
  3. Nested or abstract args — classgraph doesn't fully simulate GHC's type-family rewrite chain. For example, ChainDepState (BlockProtocol blk) won't match a concrete instance like ChainDepState (Praos c) unless we can first reduce BlockProtocol blk to a Praos _ shape; if blk stays abstract or the inner reduction fails, the outer family looks unresolvable even though the equations are in your dumps.
  4. +
  5. Nested or abstract args — classgraph doesn't fully simulate GHC's type-family rewrite chain. For example, F (G a) won't match a concrete instance like F (Bar c) unless we can first reduce G a to a Bar _ shape; if a stays abstract or the inner reduction fails, the outer family looks unresolvable even though the equations are in your dumps.

Open the family node (the diamond above this row) to see all the fam-instances we do have for it — one of them may be the satisfier in the actual program.