summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/java/javac.vim7
-rw-r--r--test/handler/test_javac_handler.vader3
2 files changed, 8 insertions, 2 deletions
diff --git a/ale_linters/java/javac.vim b/ale_linters/java/javac.vim
index 0b429e05..97530882 100644
--- a/ale_linters/java/javac.vim
+++ b/ale_linters/java/javac.vim
@@ -59,11 +59,14 @@ function! ale_linters#java#javac#Handle(buffer, lines) abort
" Main.java:16: error: ';' expected
let l:pattern = '\v^.*:(\d+): (.+):(.+)$'
+ let l:col_pattern = '\v^(\s*\^)$'
let l:symbol_pattern = '\v^ +symbol: *(class|method) +([^ ]+)'
let l:output = []
- for l:match in ale#util#GetMatches(a:lines, [l:pattern, l:symbol_pattern])
- if empty(l:match[3])
+ for l:match in ale#util#GetMatches(a:lines, [l:pattern, l:col_pattern, l:symbol_pattern])
+ if empty(l:match[2]) && empty(l:match[3])
+ let l:output[-1].col = len(l:match[1])
+ elseif empty(l:match[3])
" Add symbols to 'cannot find symbol' errors.
if l:output[-1].text ==# 'error: cannot find symbol'
let l:output[-1].text .= ': ' . l:match[2]
diff --git a/test/handler/test_javac_handler.vader b/test/handler/test_javac_handler.vader
index d190ab78..2cf32072 100644
--- a/test/handler/test_javac_handler.vader
+++ b/test/handler/test_javac_handler.vader
@@ -14,11 +14,13 @@ Execute(The javac handler should handle cannot find symbol errors):
\ },
\ {
\ 'lnum': 2,
+ \ 'col': 5,
\ 'text': 'error: cannot find symbol: BadName',
\ 'type': 'E',
\ },
\ {
\ 'lnum': 34,
+ \ 'col': 5,
\ 'text': 'error: cannot find symbol: BadName2',
\ 'type': 'E',
\ },
@@ -29,6 +31,7 @@ Execute(The javac handler should handle cannot find symbol errors):
\ },
\ {
\ 'lnum': 42,
+ \ 'col': 11,
\ 'text': 'error: cannot find symbol: bar()',
\ 'type': 'E',
\ },