diff options
-rw-r--r-- | autoload/ale/c.vim | 3 | ||||
-rw-r--r-- | test/test_c_flag_parsing.vader | 12 |
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')) |