google / google/codeworld

Error message sanitizer is a house of cards about to fall down

Aperta
#421 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
cleanup
Lingua principale
Haskell
Stelle
1.3k
Fork
201
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

The error message sanitizer is currently a series of plain regular expression replacements that is run on all output at either compile or runtime. This is clearly wrong! Some obvious improvements would include:

1. Distinguishing between compile-time and runtime output, and applying only the appropriate sanitizations to each.
2. Distinguishing, at runtime, between error messages from base:Prelude.error (which have call stacks and such), and those that come from a user (which don't), and stop trying to sanitize the latter.
3. Separate different compiler diagnostics, and don't match sections of text that span multiple.
4. Write a real parser that is more powerful than regular expressions; for example, it can understand only to sanitize stack trace lines when in a stack trace, and things like that.
5. Get some code reuse, so that for instance the pattern for a possibly-qualified module name could be defined once and reused in several bigger patterns.

There have already been several bugs where unexpected compiler output accidentally matches some regular expressions in dumb ways and gets mangled.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.