Speed up 'maven' compilation error message regexp

Anchor the regexp at line-start to prevent quadratic behaviour when
it doesn't match (bug#39595).  It's unclear whether the type tag, like
[ERROR], is always present; we keep it optional just in case.

* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Rewrite 'maven' regexp, using rx for clarity.
* etc/compilation.txt (maven): More examples.
* test/lisp/progmodes/compile-tests.el
(compile-tests--test-regexps-data): No leading spaces; they seems to
stem from a misunderstanding in bug#11517.
This commit is contained in:
Mattias Engdegård 2020-02-14 21:26:20 +01:00
parent efc9d4fe3e
commit 96a269d045
3 changed files with 19 additions and 5 deletions

View file

@ -341,6 +341,8 @@ makepp: bla bla `/foo/bar.c' and `/foo/bar.h'
symbol: maven
FooBar.java:[111,53] no interface expected here
[ERROR] /Users/cinsk/hello.java:[651,96] ';' expected
[WARNING] /foo/bar/Test.java:[27,43] unchecked conversion
* MIPS lint; looks good for SunPro lint also

View file

@ -268,12 +268,24 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
(jikes-file
"^\\(?:Found\\|Issued\\) .* compiling \"\\(.+\\)\":$" 1 nil nil 0)
;; This used to be pathologically slow on long lines (Bug#3441),
;; due to matching filenames via \\(.*?\\). This might be faster.
(maven
;; Maven is a popular free software build tool for Java.
"\\(\\[WARNING\\] *\\)?\\([^ \n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\] " 2 3 4 (1))
,(rx bol
;; It is unclear whether the initial [type] tag is always present.
(? "["
(or "ERROR" (group-n 1 "WARNING") (group-n 2 "INFO"))
"] ")
(group-n 3 ; File
(not (any "\n ["))
(* (or (not (any "\n :"))
(: " " (not (any "\n/-")))
(: ":" (not (any "\n ["))))))
":["
(group-n 4 (+ digit)) ; Line
","
(group-n 5 (+ digit)) ; Column
"] ")
3 4 5 (1 . 2))
(jikes-line
"^ *\\([0-9]+\\)\\.[ \t]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)"

View file

@ -242,7 +242,7 @@
;; maven
("FooBar.java:[111,53] no interface expected here"
1 53 111 "FooBar.java" 2)
(" [ERROR] /Users/cinsk/hello.java:[651,96] ';' expected"
("[ERROR] /Users/cinsk/hello.java:[651,96] ';' expected"
15 96 651 "/Users/cinsk/hello.java" 2) ;Bug#11517.
("[WARNING] /foo/bar/Test.java:[27,43] unchecked conversion"
11 43 27 "/foo/bar/Test.java" 1) ;Bug#20556