I just noticed a drawback of this approach: Open a new workspace, type foo := 6 * 7 and *debug it*. While the debugger is open, take a look at the debugger again. Of course, foo is still styled as invalid, because #expressionEvaluated:result: has not yet been called.
What do you think, would this drawback be worth another hook in #evaluateSelectionAndDo:? This additional hook could be named #expressionCompiled:, for example ...
Best,
Christoph