291ff159

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Build each assertion from its own keyword

The previous fix put a function in the parse result, which is worse than the
overwrite it replaced.  Each keyword now carries the assertion body itself, so
the scope is still written exactly once and nothing awaiting a scope is ever
constructed.

Only the virtual form labels which balance it computed.  The existing message
is the one people already read, and the real form still means what it always
meant, so there is nothing there to disambiguate.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 1s 1s 1s 0s
Eval 1s 14s 14s 15s 0s
Build 13s 4m41s 2m19s 2m33s 0s
Suite 0s 4m57s 2m32s 2m33s 0s

Timeline

0s20s40s1m1m20s1m40s2m2m20s