summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Maria Perez Ramos <jose.m.perez.ramos+git@gmail.com>2021-07-17 14:51:17 +0200
committerGitHub <noreply@github.com>2021-07-17 21:51:17 +0900
commita6a8131306f873c33c1983fbc74f0989bc6a4921 (patch)
tree9892f9a277082bf51edf0e663c3d87d4e2955fae
parent1893abdb1903fb45e7b28d3cd8ae7dd4197e0c3b (diff)
downloadale-a6a8131306f873c33c1983fbc74f0989bc6a4921.zip
Update erlang format for OTP24 (#3823)
Erlang's erlc error format includes the column in OTP24. See https://blog.erlang.org/My-OTP-24-Highlights/#column-number-in-warnings-and-errors
-rw-r--r--ale_linters/erlang/erlc.vim6
-rw-r--r--test/linter/test_erlang_erlc.vader22
2 files changed, 25 insertions, 3 deletions
diff --git a/ale_linters/erlang/erlc.vim b/ale_linters/erlang/erlc.vim
index e78dc341..0c67a73f 100644
--- a/ale_linters/erlang/erlc.vim
+++ b/ale_linters/erlang/erlc.vim
@@ -25,7 +25,7 @@ function! ale_linters#erlang#erlc#Handle(buffer, lines) abort
" error.erl:4: variable 'B' is unbound
" error.erl:3: Warning: function main/0 is unused
" error.erl:4: Warning: variable 'A' is unused
- let l:pattern = '\v^([a-zA-Z]?:?[^:]+):(\d+): (Warning: )?(.+)$'
+ let l:pattern = '\v^([a-zA-Z]?:?[^:]+):(\d+):(\d+:)? (Warning: )?(.+)$'
" parse_transforms are a special case. The error message does not indicate a location:
" error.erl: undefined parse transform 'some_parse_transform'
@@ -65,8 +65,8 @@ function! ale_linters#erlang#erlc#Handle(buffer, lines) abort
endif
let l:line = l:match[2]
- let l:warning_or_text = l:match[3]
- let l:text = l:match[4]
+ let l:warning_or_text = l:match[4]
+ let l:text = l:match[5]
" If this file is a header .hrl, ignore the following expected messages:
" - 'no module definition'
diff --git a/test/linter/test_erlang_erlc.vader b/test/linter/test_erlang_erlc.vader
index 7d659a07..0651b512 100644
--- a/test/linter/test_erlang_erlc.vader
+++ b/test/linter/test_erlang_erlc.vader
@@ -38,3 +38,25 @@ Execute(The command should accept configured options.):
\ g:matched,
\ -1,
\ 'Command error: expected [' . g:cmd . '] to match [' . g:regex . ']'
+
+Execute(Linter should recognize OTP23 format.):
+ let g:lines = ["t.erl:6: only association operators '=>' are allowed in map construction"]
+ let g:output_text = ale_linters#erlang#erlc#Handle(bufnr(''), g:lines)[0].text
+
+ let g:expected = "only association operators '=>' are allowed in map construction"
+ AssertEqual
+ \ g:output_text,
+ \ g:expected,
+ \ 'Command error: expected [' . g:output_text . '] to match [' . g:expected . ']'
+
+Execute(Linter should recognize OTP24 format.):
+ let g:lines = ["t.erl:6:16: only association operators '=>' are allowed in map construction",
+ \ "% 6| #{ a => A, b := B }.",
+ \ "% | ^"]
+ let g:output_text = ale_linters#erlang#erlc#Handle(bufnr(''), g:lines)[0].text
+
+ let g:expected = "only association operators '=>' are allowed in map construction"
+ AssertEqual
+ \ g:output_text,
+ \ g:expected,
+ \ 'Command error: expected [' . g:output_text . '] to match [' . g:expected . ']'