The compiler has a lot of odd features as we wanted to be 100% backward 
compatible.

One of them is the idea of the “interactive” state.

-> a compiler compiled with a requestor or without.
-> Interactive use needs a requestor
        - to print error messages
        - to lookup variables

The requestor can implement #interactive to return false. This is used to hook 
into error handling by implementing a fake requestor.
MethodChunkCompilerRequestor is an example of that.

But in addition, the compiler added “interactive” as local state of the 
compilation context: you could make the compiler without a requestor
Interactive, or turn off the compiler interactive even though the requestor was 
interactive.

This makes no sense (and I think does not even work).

This PR simplifies the idea of #isInteractive: if there is no requestor, we are 
not interactive.

This means we do not need the flag "interactive" on CompilationContext and can 
simplify.

For now we keep the feature that requestors can implement #interactive and 
return false, to support MethodChunkCompilerRequestor.

I think we should simplify that, too, but that is another step.

PR is here https://github.com/pharo-project/pharo/pull/11392

(And already merged)


        Marcus


Reply via email to