Added NASM linter

Added NASM linter (for nasm filetype).
This commit is contained in:
Øyvind Ingvaldsen
2018-05-04 21:44:32 +02:00
parent 726a768464
commit 27144eee8c
6 changed files with 162 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
Before:
Save g:ale_nasm_nasm_executable
Save g:ale_nasm_nasm_options
unlet! g:ale_nasm_nasm_executable
unlet! b:ale_nasm_nasm_executable
unlet! g:ale_nasm_nasm_options
unlet! b:ale_nasm_nasm_options
runtime ale_linters/nasm/nasm.vim
let b:command_tail =
\ ' -X gnu -I ' . ale#Escape(getcwd() . '/') . ' %s'
let b:command_tail_opt =
\ ' -X gnu -I ' . ale#Escape(getcwd() . '/') . ' -w+orphan-labels %s'
After:
Restore
unlet! b:command_tail
unlet! b:command_tail_opt
unlet! b:ale_nasm_nasm_executable
unlet! b:ale_nasm_nasm_options
call ale#linter#Reset()
Execute(The executable should be configurable):
AssertEqual 'nasm', ale_linters#nasm#nasm#GetExecutable(bufnr(''))
let b:ale_nasm_nasm_executable = '/opt/nasm/nasm'
AssertEqual '/opt/nasm/nasm', ale_linters#nasm#nasm#GetExecutable(bufnr(''))
Execute(The executable should be used in the command):
AssertEqual
\ ale#Escape('nasm') . b:command_tail,
\ ale_linters#nasm#nasm#GetCommand(bufnr(''))
let b:ale_nasm_nasm_executable = '~/nasm'
AssertEqual
\ ale#Escape('~/nasm') . b:command_tail,
\ ale_linters#nasm#nasm#GetCommand(bufnr(''))
Execute(The options should be configurable):
AssertEqual '', ale_linters#nasm#nasm#GetOptions(bufnr(''))
let b:ale_nasm_nasm_options = '-w-macro-params'
AssertEqual '-w-macro-params', ale_linters#nasm#nasm#GetOptions(bufnr(''))
Execute(The options should be used in command):
let b:ale_nasm_nasm_options = '-w+orphan-labels'
AssertEqual
\ ale#Escape('nasm') . b:command_tail_opt,
\ ale_linters#nasm#nasm#GetCommand(bufnr(''))

View File

@@ -0,0 +1,30 @@
Before:
runtime ale_linters/nasm/nasm.vim
After:
call ale#linter#Reset()
Execute(The nasm handler should parse GCC style output from nasm correctly):
AssertEqual
\ [
\ {
\ 'lnum': 2,
\ 'text': "label alone on a line without a colon might be in error",
\ 'type': 'W',
\ },
\ {
\ 'lnum': 4,
\ 'text': "invalid combination of opcode and operands",
\ 'type': 'E',
\ },
\ {
\ 'lnum': 7,
\ 'text': "unable to open include file `bar.asm'",
\ 'type': 'E',
\ },
\ ],
\ ale_linters#nasm#nasm#Handle(357, [
\ "tmp.asm:2: warning: label alone on a line without a colon might be in error",
\ "tmp.asm:4: error: invalid combination of opcode and operands",
\ "tmp.asm:7: fatal: unable to open include file `bar.asm'"
\ ])