(1) Quantifiers can contain multiple declarations. E.g.,
some x: A, y: B | ...
However, since A and B are arbitrary expressions, B can technically use the variable x. Our last-checker module does not currently add (x A) to the environment used for checking the expression B, resulting in a confusing error. This PR rolls the expanded environment forward across all decl domains, from left to right.
(2) Our last-checker module wasn't ever checking the right-hand side of a minus expression. Now if that exists, it's subjected to last-checker scrutiny.
(1) Quantifiers can contain multiple declarations. E.g.,
some x: A, y: B | ...
However, sinceA
andB
are arbitrary expressions,B
can technically use the variablex
. Our last-checker module does not currently add(x A)
to the environment used for checking the expressionB
, resulting in a confusing error. This PR rolls the expanded environment forward across all decl domains, from left to right.(2) Our last-checker module wasn't ever checking the right-hand side of a minus expression. Now if that exists, it's subjected to last-checker scrutiny.