Emit an AST even if errors occur during semantic analysis
Currently, the Curry compiler monad (CYT
for the transformer variant and CYM
for the IO-based variant) implements warning messages using a WriterT
and error messages using an ExceptT
.
This, however, prevents tools like the Curry language server from taking advantage of the 'broken' AST, which may still be syntactically correct, e.g. for features like context-aware code completion as the user types.
It would therefore be nice to have at least a Maybe
-wrapped version of the AST if parsing succeeds, but one of the semantic checks fails.