[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Review request: javac in compilation-error-regexp-alist-alist
From: |
Mattias Engdegård |
Subject: |
Re: Review request: javac in compilation-error-regexp-alist-alist |
Date: |
Fri, 28 Feb 2020 18:11:21 +0100 |
27 feb. 2020 kl. 19.17 skrev Filipp Gunbin <address@hidden>:
> Besides that, `java' symbol in the said list is a misnomer: it handles
> java exceptions (why? we would never normally have them in the
> compilation output), and valgrind output. Looks like we should just
> rename it to `valgrind'.
Maybe, but as you can see there are several questionably-named entries in the
list. Renaming them may break user customisation.
As it is, it would be useful with a comment explaining the difference between
'java' and 'javac' in the list.
> + (javac
> + ,(concat
> + ;; line1
> + "^\\(\\(?:[A-Za-z]:\\)?[^:\n]+\\): *" ;file
> + "\\([0-9]+\\): *" ;line
> + "\\(?:error:\\|\\(warning\\):\\)?[^\n]*\n" ;type (optional) and
> message
> + ;; line2: source line containing error
> + "[^\n]*\n"
> + ;; line3: single "^" under error position in line2
> + "[[:space:]]*\\^\n")
(Could I entice you into writing this regexp in rx? Not mandatory in any way,
but at least some of us who read it will thank you.)
Regexps in this list are good to keep tight; don't cast a net wider than you
have to. For instance, don't use " *" unless you know that there may actually
be any number of spaces. Most regexps here don't match; optimise for that,
rejecting false attempts as early as possible. Be stingy.
There's an unnecessary ambiguity after the line number and colon; a string of
spaces can match in multiple ways. Also, avoid [[:space:]] since you don't
control that syntax class in the buffer; more likely it should just be plain
spaces, as it's very unlikely that the javac caret output routine would use
anything else.
> + 1 2
> + (lambda ()
If you add a comma before the lambda-expression, it gets evaluated,
byte-compiled, syntax-checked etc.
> + ("/src/Test.java:5: ';' expected\n foo foo\n ^\n" 1
> 15 5 "/src/Test.java" 2)
> + ("e:\\src\\Test.java: 7: warning: ';' expected\n foo foo\n
> ^\n" 1 10 7 "e:\\src\\Test.java" 1)
Why the differences in spacing before the line number? Is it a difference
between platforms, error/warning, javac versions, or just different compilers
altogether? Comments explaining this would be useful. Be sure to include
variants in compilation.txt.