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', \ },