Right now, a = 1/0; 10 returns 10. With this change, a would not be assigned and the expression would return a divide by zero error.
The original effect can still be achieved using a = { 1/0 }; 10, and this matches intuitions that errors will always fail fast (unless you explicitly make them lazy).
It also allows a = 1 to be handled in operator overloads, because the main blocker up to this point was adding an error location to the value.
Right now,
a = 1/0; 10returns 10. With this change,awould not be assigned and the expression would return a divide by zero error.The original effect can still be achieved using
a = { 1/0 }; 10, and this matches intuitions that errors will always fail fast (unless you explicitly make them lazy).It also allows
a = 1to be handled in operator overloads, because the main blocker up to this point was adding an error location to the value.