summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/c.vim3
-rw-r--r--test/test_c_flag_parsing.vader12
2 files changed, 14 insertions, 1 deletions
diff --git a/autoload/ale/c.vim b/autoload/ale/c.vim
index 5e7aa92a..6ac2d398 100644
--- a/autoload/ale/c.vim
+++ b/autoload/ale/c.vim
@@ -221,7 +221,7 @@ function! ale#c#ParseCompileCommandsFlags(buffer, file_lookup, dir_lookup) abort
let l:file_list = get(a:file_lookup, l:basename, [])
for l:item in l:file_list
- if bufnr(l:item.file) is a:buffer
+ if bufnr(l:item.file) is a:buffer && has_key(l:item, 'command')
return ale#c#ParseCFlags(l:item.directory, l:item.command)
endif
endfor
@@ -234,6 +234,7 @@ function! ale#c#ParseCompileCommandsFlags(buffer, file_lookup, dir_lookup) abort
for l:item in l:dir_list
if ale#path#Simplify(fnamemodify(l:item.file, ':h')) is? l:dir
+ \&& has_key(l:item, 'command')
return ale#c#ParseCFlags(l:item.directory, l:item.command)
endif
endfor
diff --git a/test/test_c_flag_parsing.vader b/test/test_c_flag_parsing.vader
index b09526a1..340f3ccf 100644
--- a/test/test_c_flag_parsing.vader
+++ b/test/test_c_flag_parsing.vader
@@ -167,6 +167,18 @@ Execute(ParseCompileCommandsFlags should parse some basic flags):
\ },
\ ] }, {})
+Execute(ParseCompileCommandsFlags should tolerate items without commands):
+ noautocmd execute 'file! ' . fnameescape(ale#path#Simplify('/foo/bar/xmms2-mpris/src/xmms2-mpris.c'))
+
+ AssertEqual
+ \ '',
+ \ ale#c#ParseCompileCommandsFlags(bufnr(''), { "xmms2-mpris.c": [
+ \ {
+ \ 'directory': '/foo/bar/xmms2-mpris',
+ \ 'file': '/foo/bar/xmms2-mpris/src/xmms2-mpris.c',
+ \ },
+ \ ] }, {})
+
Execute(ParseCompileCommandsFlags should fall back to files in the same directory):
noautocmd execute 'file! ' . fnameescape(ale#path#Simplify('/foo/bar/xmms2-mpris/src/xmms2-mpris.c'))