4 ms·
I think I understand why semicolons make good error messages easier to implement. However, I don't see anything that makes that same quality of error messages i
by roryokane 11y ago
I think I understand why semicolons make good error messages easier to implement. However, I don't see anything that makes that same quality of error messages impossible in a language without semicolons. It's just a matter of how much time the language writer is willing to spend on slightly improving the user experience.
Semicolons help get a better error message for the following typo, if `foo` can take either 0 or 1 arguments:
if (true) {
foo(;
bar *= 2;
baz(
"first",
"second",
);
}
The compiler can easily tell you that you forgot a ) on line 2. If semicolons were optional, the program would be this:
if (true) {
foo(
bar *= 2
baz(
"first",
"second",
)
}
The simplest error message to implement would complain that you forgot a ) somewhere within lines 2 to 7, and also that the argument to `foo` contains two statements instead of one expression. This error message would be less helpful.
However, with the semicolonless language, you could still write the compiler to give the better error message. You could have a heuristic that that this combination of errors suggests a different error, or you could parse indentation for error-checking purposes. It would just require more work on the part of the compiler writer.