summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ale_linters/c/clangd.vim2
-rw-r--r--ale_linters/crystal/crystal.vim4
-rw-r--r--test/command_callback/test_c_clangd_command_callbacks.vader12
-rw-r--r--test/handler/test_crystal_handler.vader10
4 files changed, 19 insertions, 9 deletions
diff --git a/ale_linters/c/clangd.vim b/ale_linters/c/clangd.vim
index ab8a0259..c42d4497 100644
--- a/ale_linters/c/clangd.vim
+++ b/ale_linters/c/clangd.vim
@@ -8,7 +8,7 @@ call ale#Set('c_build_dir', '')
function! ale_linters#c#clangd#GetCommand(buffer) abort
let l:build_dir = ale#c#GetBuildDirectory(a:buffer)
- return '%e -x c'
+ return '%e'
\ . ale#Pad(ale#Var(a:buffer, 'c_clangd_options'))
\ . (!empty(l:build_dir) ? ' -compile-commands-dir=' . ale#Escape(l:build_dir) : '')
endfunction
diff --git a/ale_linters/crystal/crystal.vim b/ale_linters/crystal/crystal.vim
index 3c2fefb7..8a905b12 100644
--- a/ale_linters/crystal/crystal.vim
+++ b/ale_linters/crystal/crystal.vim
@@ -5,6 +5,10 @@ function! ale_linters#crystal#crystal#Handle(buffer, lines) abort
let l:output = []
for l:error in ale#util#FuzzyJSONDecode(a:lines, [])
+ if !has_key(l:error, 'file')
+ continue
+ endif
+
call add(l:output, {
\ 'lnum': l:error.line + 0,
\ 'col': l:error.column + 0,
diff --git a/test/command_callback/test_c_clangd_command_callbacks.vader b/test/command_callback/test_c_clangd_command_callbacks.vader
index 555122f6..753dc9a8 100644
--- a/test/command_callback/test_c_clangd_command_callbacks.vader
+++ b/test/command_callback/test_c_clangd_command_callbacks.vader
@@ -9,18 +9,14 @@ Before:
Save b:ale_c_build_dir_names
Save b:ale_c_parse_compile_commands
- let b:command_tail = ' -x c'
-
After:
- unlet! b:command_tail
-
call ale#assert#TearDownLinterTest()
Execute(The language string should be correct):
AssertLSPLanguage 'c'
Execute(The default executable should be correct):
- AssertLinter 'clangd', ale#Escape('clangd') . b:command_tail
+ AssertLinter 'clangd', ale#Escape('clangd')
Execute(The project root should be detected correctly):
call ale#test#SetFilename(tempname() . '/dummy.c')
@@ -34,12 +30,12 @@ Execute(The project root should be detected correctly):
Execute(The executable should be configurable):
let g:ale_c_clangd_executable = 'foobar'
- AssertLinter 'foobar', ale#Escape('foobar') . b:command_tail
+ AssertLinter 'foobar', ale#Escape('foobar')
Execute(The options should be configurable):
let b:ale_c_clangd_options = '-compile-commands-dir=foo'
- AssertLinter 'clangd', ale#Escape('clangd') . b:command_tail . ' ' . b:ale_c_clangd_options
+ AssertLinter 'clangd', ale#Escape('clangd') . ' ' . b:ale_c_clangd_options
Execute(The compile command database should be detected correctly):
call ale#test#SetFilename('clangd_paths/with_build_dir/dummy_src/dummy.c')
@@ -49,7 +45,7 @@ Execute(The compile command database should be detected correctly):
let b:ale_c_build_dir_names = ['unusual_build_dir_name']
let b:ale_c_parse_compile_commands = 1
- AssertLinter 'clangd', ale#Escape('clangd') . b:command_tail
+ AssertLinter 'clangd', ale#Escape('clangd')
\ . ' -compile-commands-dir='
\ . ale#Escape(ale#path#Simplify(g:dir . '/clangd_paths/with_build_dir/unusual_build_dir_name'))
diff --git a/test/handler/test_crystal_handler.vader b/test/handler/test_crystal_handler.vader
index a7b7f3ab..209632e9 100644
--- a/test/handler/test_crystal_handler.vader
+++ b/test/handler/test_crystal_handler.vader
@@ -16,3 +16,13 @@ Execute(The crystal handler should parse lines correctly and add the column if i
\ ale_linters#crystal#crystal#Handle(255, [
\ '[{"file":"/tmp/test.cr","line":2,"column":1,"size":null,"message":"unexpected token: EOF"}]'
\ ])
+
+Execute(The crystal handler should not fail when a missing file is required):
+ AssertEqual
+ \ [ { 'lnum':1, 'col': 1, 'text': 'while requiring "./nonexistent.cr"' } ],
+ \ ale_linters#crystal#crystal#Handle(255,
+ \ json_encode([
+ \ { "file":"/tmp/file.cr","line":1,"column":1,"size":0,"message":"while requiring \"./nonexistent.cr\"" },
+ \ { "message": "can't find file './nonexistent.cr' relative to '/tmp'" },
+ \ ])
+ \ )