Matthew Lutze
Matthew Lutze
Also please test this with namespaces. Source locations are tricky when you have e.g. `instance N.C[a]`
Did you copy-paste the wrong error after your parser change? It doesn't have an underscore there.
I think the `op` should not be a part of the effect syntax, but instead at the same level as the other type ops. My alternative grammar proposal is this:...
Then maybe an `Empty` constant for those rare cases when we need `{}` outside of arrows
And actually since `var` and `(...)` are already in `type`, it simplifies to this: ```ebnf (* effect sets *) set = "{", const, { ",", const } "}" ; (*...
With read/write: ```ebnf (* effect set members *) mem = "Read", "(", type, { "," type } ")" | "Write", "(", type, { "," type } ")" | const ;...
We can't do the simplification since we need to desugar effect sets later :(
I think there may be some amount of simplification that can be done, but it won't be pretty. (It's already ugly though so at least we are not regressing.)
We're importing methods that return arrays with regions. A normal (regionless) array is `Array[a, Static]` so even a subtype check would be insufficient because `Static` is not a subtype of...
What are "optional dependencies"?