mirror of
https://github.com/dense-analysis/ale
synced 2024-12-27 16:42:19 +00:00
Merge pull request #1907 from guill/compile_commands_fix
Fix bug where last C compile flag was ignored
This commit is contained in:
commit
f538bb440a
@ -50,12 +50,17 @@ function! ale#c#ParseCFlags(path_prefix, cflag_line) abort
|
||||
let l:cflags_list = []
|
||||
let l:previous_options = []
|
||||
|
||||
for l:option in split(a:cflag_line, '-')
|
||||
let l:split_lines = split(a:cflag_line, '-')
|
||||
let l:option_index = 0
|
||||
|
||||
while l:option_index < len(l:split_lines)
|
||||
let l:option = l:split_lines[l:option_index]
|
||||
let l:option_index = l:option_index + 1
|
||||
call add(l:previous_options, l:option)
|
||||
" Check if cflag contained a '-' and should not have been splitted
|
||||
let l:option_list = split(l:option, '\zs')
|
||||
|
||||
if len(l:option_list) > 0 && l:option_list[-1] isnot# ' '
|
||||
if len(l:option_list) > 0 && l:option_list[-1] isnot# ' ' && l:option_index < len(l:split_lines)
|
||||
continue
|
||||
endif
|
||||
|
||||
@ -81,7 +86,7 @@ function! ale#c#ParseCFlags(path_prefix, cflag_line) abort
|
||||
call add(l:cflags_list, l:option)
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
endwhile
|
||||
|
||||
return join(l:cflags_list, ' ')
|
||||
endfunction
|
||||
|
@ -141,6 +141,22 @@ Execute(ParseCFlags should handle -D with minuses):
|
||||
\ . ' -DTEST=`date +%s` -c file.c'
|
||||
\ )
|
||||
|
||||
Execute(ParseCFlags should handle flags at the end of the line):
|
||||
AssertEqual
|
||||
\ '-Dgoal=9'
|
||||
\ . ' ' . ale#Escape('-I' . ale#path#Simplify(g:dir. '/test_c_projects/makefile_project/subdir'))
|
||||
\ . ' -Dmacro-with-dash'
|
||||
\ . ' ' . ale#Escape('-I' . ale#path#Simplify(g:dir. '/test_c_projects/makefile_project/dir with spaces'))
|
||||
\ . ' ' . ale#Escape('-I' . ale#path#Simplify(g:dir. '/test_c_projects/makefile_project/dir-with-dash'))
|
||||
\ . ' ' . ale#Escape('-I' . ale#path#Simplify(g:dir. '/test_c_projects/makefile_project/kernel/include')),
|
||||
\ ale#c#ParseCFlags(
|
||||
\ ale#path#Simplify(g:dir. '/test_c_projects/makefile_project'),
|
||||
\ 'gcc -Dgoal=9 -Tlinkerfile.ld blabla -Isubdir '
|
||||
\ . '-Dmacro-with-dash '
|
||||
\ . '-I''dir with spaces''' . ' -Idir-with-dash'
|
||||
\ . ' -I'. ale#path#Simplify('kernel/include')
|
||||
\ )
|
||||
|
||||
Execute(FlagsFromCompileCommands should tolerate empty values):
|
||||
AssertEqual '', ale#c#FlagsFromCompileCommands(bufnr(''), '')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user