Conversation
|
Is this #1511? |
|
Yep, although it also includes part of the proposal for #1901, as the requirements overlap: if you I'm having second thoughts about that though, as it's partially what is causing the current failure... plus it will have to behave a bit differently for module re-exports to work as they do now, since if you |
| updateBinder s@(pos, _) (OpBinder op) = | ||
| (,) s <$> (OpBinder <$> updateValueOpName op pos) | ||
| updateBinder s (TypedBinder t b) = do | ||
| (s'@ (span', _), b') <- updateBinder s b |
There was a problem hiding this comment.
This was unnecessary, the traversal already steps into the binder (duh).
| updateType t = return t | ||
| updateInConstraint :: Constraint -> m Constraint | ||
| updateInConstraint (Constraint name ts info) = | ||
| Constraint <$> updateClassName name pos <*> pure ts <*> pure info |
There was a problem hiding this comment.
Like that above case, need a different version of updateConstraints here that does not recurse on updateTypesEverywhere, as the traversal already does that.
These two traversal hiccups became apparent as the naming pass is even less idempotent than it was before. I'm pretty sure a case could be constructed that would cause both of these to fail.
|
Think I've got this figured out now. It's working the way where only exactly what you import can be referenced when it comes to values, types, etc. but you can still The traversal cases I commented on are the thing that mainly broke this before (aside from an update needed to |
|
The warnings causing the compile to fail should be fixed now. |
|
...forgot to update |
|
Rebased for the recent merges. |
|
Updated with a fix for #2148. It may also have been causing 2148. 😉 |
|
Looks great! |
This is still WIP. Trickier than it first seemed, since it seems we introduce qualified names in a few places during desugaring, so when we do so we need to update the imports also... or something.
Resolves #1511, fixes #2148.