summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/javascript/eslint.vim19
-rw-r--r--test/test_eslint_handler.vader43
2 files changed, 60 insertions, 2 deletions
diff --git a/ale_linters/javascript/eslint.vim b/ale_linters/javascript/eslint.vim
index e9b7d959..94086b0a 100644
--- a/ale_linters/javascript/eslint.vim
+++ b/ale_linters/javascript/eslint.vim
@@ -30,17 +30,32 @@ function! ale_linters#javascript#eslint#Handle(buffer, lines)
" /path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]
" /path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]
let l:pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\) \[\(.\+\)\]$'
+ " This second pattern matches lines like the following:
+ "
+ " /path/to/some-filename.js:13:3: Parsing error: Unexpected token
+ let l:parsing_pattern = '^.*:\(\d\+\):\(\d\+\): \(.\+\)$'
let l:output = []
for l:line in a:lines
let l:match = matchlist(l:line, l:pattern)
if len(l:match) == 0
+ " Try the parsing pattern for parsing errors.
+ let l:match = matchlist(l:line, l:parsing_pattern)
+ endif
+
+ if len(l:match) == 0
continue
endif
- let l:type = split(l:match[4], '/')[0]
- let l:text = l:match[3] . ' [' . l:match[4] . ']'
+ let l:type = 'Error'
+ let l:text = l:match[3]
+
+ " Take the error type from the output if available.
+ if !empty(l:match[4])
+ let l:type = split(l:match[4], '/')[0]
+ let l:text .= ' [' . l:match[4] . ']'
+ endif
" vcol is Needed to indicate that the column is a character.
call add(l:output, {
diff --git a/test/test_eslint_handler.vader b/test/test_eslint_handler.vader
new file mode 100644
index 00000000..57efa6b0
--- /dev/null
+++ b/test/test_eslint_handler.vader
@@ -0,0 +1,43 @@
+Execute(The eslint handler should parse lines correctly):
+ runtime ale_linters/javascript/eslint.vim
+
+ AssertEqual
+ \ [
+ \ {
+ \ 'bufnr': 347,
+ \ 'lnum': 47,
+ \ 'vcol': 0,
+ \ 'col': 14,
+ \ 'text': 'Missing trailing comma. [Warning/comma-dangle]',
+ \ 'type': 'W',
+ \ 'nr': -1,
+ \ },
+ \ {
+ \ 'bufnr': 347,
+ \ 'lnum': 56,
+ \ 'vcol': 0,
+ \ 'col': 41,
+ \ 'text': 'Missing semicolon. [Error/semi]',
+ \ 'type': 'E',
+ \ 'nr': -1,
+ \ },
+ \ {
+ \ 'bufnr': 347,
+ \ 'lnum': 13,
+ \ 'vcol': 0,
+ \ 'col': 3,
+ \ 'text': 'Parsing error: Unexpected token',
+ \ 'type': 'E',
+ \ 'nr': -1,
+ \ },
+ \ ],
+ \ ale_linters#javascript#eslint#Handle(347, [
+ \ 'This line should be ignored completely',
+ \ '/path/to/some-filename.js:47:14: Missing trailing comma. [Warning/comma-dangle]',
+ \ '/path/to/some-filename.js:56:41: Missing semicolon. [Error/semi]',
+ \ 'This line should be ignored completely',
+ \ '/path/to/some-filename.js:13:3: Parsing error: Unexpected token',
+ \ ])
+
+After:
+ call ale#linter#Reset()