Skip to content

Fix dropping of error locations#37

Open
cchalmers wants to merge 3 commits into
masterfrom
fix-error-locations
Open

Fix dropping of error locations#37
cchalmers wants to merge 3 commits into
masterfrom
fix-error-locations

Conversation

@cchalmers

Copy link
Copy Markdown
Owner

Since #14 the error locations often pointed to the end of the circuit instead of the correct location. That should now be fixed, along with a regression test.

Hopefully resolves #35.

cchalmers and others added 2 commits June 9, 2026 23:35
Since #14 the error locations often pointed to the end of the circuit instead of the correct location. That should now be fixed, along with a regression test.
The error-location test shells out to a bare ghc to compile BusError.hs
with the plugin enabled, which only works when circuit-notation is
resolvable as a package. During a plain `nix build` of the package it
isn't registered yet, so ghc reported "Could not find module
'CircuitNotation'" and the test failed claiming the fixture compiled.

* error-location: probe whether the ambient ghc can compile against the
  plugin and skip (with a message) when it can't, instead of failing.
* flake: add a per-ghc `checks` output that runs all test suites against
  a ghc with circuit-notation registered, so the error-location test
  actually runs under nix. CI nix job now uses it across all ghcs.
* cabal: ship the fixtures via extra-source-files.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@martijnbastiaan

Copy link
Copy Markdown
Collaborator

Cool! I did find an issue in the meantime, but I have yet to make a minimal reproducer out of it. I'll have a look.

Perhaps for testing you can use this structure:

https://github.com/clash-lang/checked-literals/blob/568a8603491bca0dbb24586828edf3040f30ee6f/tests/Test/Tasty/AssertGhc.hs

and

https://github.com/clash-lang/checked-literals/blob/568a8603491bca0dbb24586828edf3040f30ee6f/flake.nix#L42-L51

That way it doesn't just run in Nix.

Replaces the skip + Nix-only `checks` approach from the previous commit
with the mechanism martijnbastiaan suggested on the PR (as used by
clash-lang/checked-literals): wire the in-place package database into
GHC_PACKAGE_PATH during the package's own check phase, so the regular
error-location test suite runs everywhere -- cabal CI and the plain
`nix build` -- rather than only under a separate Nix derivation.

* flake: set NIX_GHC_PACKAGE_PATH_FOR_TEST in preCheck (via developPackage's
  modifier) so the subprocess ghc finds circuit-notation; drop the bespoke
  `checks` output.
* error-location: drop the probe/skip; it now always runs for real.
* ci: revert the nix job to a single `nix build`, whose check phase runs
  the suites.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Track confusing error messages

2 participants