javac support in compilation-parse-errors rules
* etc/compilation.txt: Add doc and example. * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist): Add javac rule. (compilation-parse-errors): Fix file/line/col test, so that lambda/closure (which are valid values) don't match. * test/lisp/progmodes/compile-tests.el (compile-tests--test-regexps-data, compile-test-error-regexps): Add test.
This commit is contained in:
parent
cddf85d256
commit
319a2a7427
3 changed files with 42 additions and 5 deletions
|
@ -237,6 +237,20 @@ Register 6 contains wrong type
|
|||
==1332== by 0x8008621: main (vtest.c:180)
|
||||
|
||||
|
||||
* javac Java compiler
|
||||
|
||||
symbol: javac
|
||||
|
||||
Should also work when compiling Java with Gradle. We use the position
|
||||
of "^" in the third line as column number because no explicit value is
|
||||
present.
|
||||
|
||||
Test.java:5: error: ';' expected
|
||||
foo foo
|
||||
^
|
||||
1 error
|
||||
|
||||
|
||||
* IBM jikes
|
||||
|
||||
symbols: jikes-file jikes-line
|
||||
|
|
|
@ -265,6 +265,20 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
|
|||
(java
|
||||
"^\\(?:[ \t]+at \\|==[0-9]+== +\\(?:at\\|b\\(y\\)\\)\\).+(\\([^()\n]+\\):\\([0-9]+\\))$" 2 3 nil (1))
|
||||
|
||||
(javac
|
||||
,(concat
|
||||
;; line1
|
||||
"^\\(\\(?:[A-Za-z]:\\)?[^:\n]+\\):" ;file
|
||||
"\\([0-9]+\\): " ;line
|
||||
"\\(warning: \\)?.*\n" ;type (optional) and message
|
||||
;; line2: source line containing error
|
||||
".*\n"
|
||||
;; line3: single "^" under error position in line2
|
||||
" *\\^$")
|
||||
1 2
|
||||
,(lambda () (1- (current-column)))
|
||||
(3))
|
||||
|
||||
(jikes-file
|
||||
"^\\(?:Found\\|Issued\\) .* compiling \"\\(.+\\)\":$" 1 nil nil 0)
|
||||
|
||||
|
@ -1466,9 +1480,15 @@ to `compilation-error-regexp-alist' if RULES is nil."
|
|||
nil) ;; Not anchored or anchored but already allows empty spaces.
|
||||
(t (setq pat (concat "^\\(?: \\)?" (substring pat 1)))))
|
||||
|
||||
(if (consp file) (setq fmt (cdr file) file (car file)))
|
||||
(if (consp line) (setq end-line (cdr line) line (car line)))
|
||||
(if (consp col) (setq end-col (cdr col) col (car col)))
|
||||
(if (and (consp file) (not (functionp file)))
|
||||
(setq fmt (cdr file)
|
||||
file (car file)))
|
||||
(if (and (consp line) (not (functionp line)))
|
||||
(setq end-line (cdr line)
|
||||
line (car line)))
|
||||
(if (and (consp col) (not (functionp col)))
|
||||
(setq end-col (cdr col)
|
||||
col (car col)))
|
||||
|
||||
(unless (or (null (nth 5 item)) (integerp (nth 5 item)))
|
||||
(error "HYPERLINK should be an integer: %s" (nth 5 item)))
|
||||
|
|
|
@ -176,6 +176,9 @@
|
|||
13 nil 217 "../src/Lib/System.cpp")
|
||||
("==1332== by 0x8008621: main (vtest.c:180)"
|
||||
13 nil 180 "vtest.c")
|
||||
;; javac
|
||||
("/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)
|
||||
;; jikes-file jikes-line
|
||||
("Found 2 semantic errors compiling \"../javax/swing/BorderFactory.java\":"
|
||||
1 nil nil "../javax/swing/BorderFactory.java")
|
||||
|
@ -431,8 +434,8 @@ The test data is in `compile-tests--test-regexps-data'."
|
|||
(compilation-num-warnings-found 0)
|
||||
(compilation-num-infos-found 0))
|
||||
(mapc #'compile--test-error-line compile-tests--test-regexps-data)
|
||||
(should (eq compilation-num-errors-found 93))
|
||||
(should (eq compilation-num-warnings-found 36))
|
||||
(should (eq compilation-num-errors-found 94))
|
||||
(should (eq compilation-num-warnings-found 37))
|
||||
(should (eq compilation-num-infos-found 26)))))
|
||||
|
||||
(ert-deftest compile-test-grep-regexps ()
|
||||
|
|
Loading…
Add table
Reference in a new issue