By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Take the assertion scope from the keyword rather than overwriting it The assertion production hardcoded AssertionScopeReal and extra_assertion then rewrote it, so the first write was always dead and a third way to build an assertion that forgot the rewriter would have silently got Real. The production now yields a function awaiting the scope, so there is one write and nowhere to forget. The assertion failure error also names which of the two balances it computed. 'Calculated:' was unambiguous only while there was one balance to mean.