type:internal
This MR brings several demanded modifications on the Trace module :
- The warnings handlers as been packed with the errors handlers -> function raising error and warnings only need to have the parameter
~raise
and not add_warning anymore - The function inside raise has been split into two records: raise and catch. -> This adds encapsulation making "raiser functions" not able to access triggers errors or warnings, and "handler functions" not able to raise any error or warning
- collect have been added. This is a function that takes a list of raisers and returns the list of values if all success or the list of all raised error if any failed
- Using collect, Front-end and middle-end passes can raise several errors at the same time ( at most one per declaration).
With extra work, it is possible to have tracers for warnings and to specialise them for every passes (As we do for errors).
Changelog details:
The compiler is now able to report all errors corresponding to the same step of compilation at the same time