Skip to content

Capture and simplify constraints arising from running typed splices

Matthew Pickering requested to merge mpickering/ghc:t16195 into master

This fixes a regression caused by #15471 (closed) where splicing in a trivial program such as [|| return () ||] would fail as the dictionary for return would never get bound in the module containing the splice.

Arguably this is symptomatic of a major problem affecting TTH where we serialise renamed asts and then retype check them. The reference to the dictionary should be fully determined at the quote site so that splicing doesn't have to solve any implicits at all. It's a coincidence this works due to coherence but see #15863 and #15865 for examples where things do go very wrong.

Fixes #16195 (closed)

Merge request reports