summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <w0rp@users.noreply.github.com>2017-02-14 19:06:25 +0000
committerGitHub <noreply@github.com>2017-02-14 19:06:25 +0000
commit78135103fbc6d1d4107f3eef448828c1498f9bcf (patch)
treeee8f341c963a3d14b7025275d5f1d4eaf0ed9d2b
parentafd07302487b0a9138c0a6c6aa5de6b887a09576 (diff)
parent68b6be57f13762e7efb33629d04bfbf249f88372 (diff)
downloadale-78135103fbc6d1d4107f3eef448828c1498f9bcf.zip
Merge pull request #342 from Exteris/bugfix/gfortran-6.3.1
Update line marker pattern for new gfortran
-rw-r--r--ale_linters/fortran/gcc.vim2
-rw-r--r--test/test_fortran_handler.vader118
2 files changed, 119 insertions, 1 deletions
diff --git a/ale_linters/fortran/gcc.vim b/ale_linters/fortran/gcc.vim
index 73ec7886..8d15cc00 100644
--- a/ale_linters/fortran/gcc.vim
+++ b/ale_linters/fortran/gcc.vim
@@ -12,7 +12,7 @@ function! ale_linters#fortran#gcc#Handle(buffer, lines) abort
"
" :21.34:
" Error: Expected comma in I/O list at (1)
- let l:line_marker_pattern = '^:\(\d\+\)\.\(\d\+\):$'
+ let l:line_marker_pattern = ':\(\d\+\)[.:]\=\(\d\+\)\=:\=$'
let l:message_pattern = '^\(Error\|Warning\): \(.\+\)$'
let l:looking_for_message = 0
let l:last_loclist_obj = {}
diff --git a/test/test_fortran_handler.vader b/test/test_fortran_handler.vader
new file mode 100644
index 00000000..7648ff66
--- /dev/null
+++ b/test/test_fortran_handler.vader
@@ -0,0 +1,118 @@
+Execute(The fortran handler should parse lines from GCC 4.1.2 correctly):
+ runtime ale_linters/fortran/gcc.vim
+
+ AssertEqual
+ \ [
+ \ {
+ \ 'bufnr': 357,
+ \ 'lnum': 4,
+ \ 'vcol': 0,
+ \ 'col': 0,
+ \ 'text': "Symbol ‘b’ at (1) has no IMPLICIT type",
+ \ 'type': 'E',
+ \ 'nr': -1,
+ \ },
+ \ {
+ \ 'bufnr': 357,
+ \ 'lnum': 3,
+ \ 'vcol': 0,
+ \ 'col': 0,
+ \ 'text': "Symbol ‘a’ at (1) has no IMPLICIT type",
+ \ 'type': 'E',
+ \ 'nr': -1,
+ \ },
+ \ ],
+ \ ale_linters#fortran#gcc#Handle(357, [
+ \ " In file :4",
+ \ "",
+ \ "write(*,*) b",
+ \ " 1",
+ \ "Error: Symbol ‘b’ at (1) has no IMPLICIT type",
+ \ " In file :3",
+ \ "",
+ \ "write(*,*) a",
+ \ " 1",
+ \ "Error: Symbol ‘a’ at (1) has no IMPLICIT type",
+ \ ])
+
+After:
+ call ale#linter#Reset()
+
+
+Execute(The fortran handler should parse lines from GCC 4.9.3 correctly):
+ runtime ale_linters/fortran/gcc.vim
+
+ AssertEqual
+ \ [
+ \ {
+ \ 'bufnr': 357,
+ \ 'lnum': 3,
+ \ 'vcol': 0,
+ \ 'col': 12,
+ \ 'text': "Symbol ‘a’ at (1) has no IMPLICIT type",
+ \ 'type': 'E',
+ \ 'nr': -1,
+ \ },
+ \ {
+ \ 'bufnr': 357,
+ \ 'lnum': 4,
+ \ 'vcol': 0,
+ \ 'col': 12,
+ \ 'text': "Symbol ‘b’ at (1) has no IMPLICIT type",
+ \ 'type': 'E',
+ \ 'nr': -1,
+ \ },
+ \ ],
+ \ ale_linters#fortran#gcc#Handle(357, [
+ \ ":3.12:",
+ \ "",
+ \ "write(*,*) a",
+ \ " 1",
+ \ "Error: Symbol ‘a’ at (1) has no IMPLICIT type",
+ \ ":4.12:",
+ \ "",
+ \ "write(*,*) b",
+ \ " 1",
+ \ "Error: Symbol ‘b’ at (1) has no IMPLICIT type",
+ \ ])
+
+After:
+ call ale#linter#Reset()
+
+
+
+Execute(The fortran handler should parse lines from GCC 6.3.1 correctly):
+ runtime ale_linters/fortran/gcc.vim
+
+ AssertEqual
+ \ [
+ \ {
+ \ 'bufnr': 337,
+ \ 'lnum': 3,
+ \ 'vcol': 0,
+ \ 'col': 12,
+ \ 'text': "Symbol ‘a’ at (1) has no IMPLICIT type",
+ \ 'type': 'E',
+ \ 'nr': -1,
+ \ },
+ \ {
+ \ 'bufnr': 337,
+ \ 'lnum': 4,
+ \ 'vcol': 0,
+ \ 'col': 12,
+ \ 'text': "Symbol ‘b’ at (1) has no IMPLICIT type",
+ \ 'type': 'E',
+ \ 'nr': -1,
+ \ },
+ \ ],
+ \ ale_linters#fortran#gcc#Handle(337, [
+ \ "<stdin>:3:12:",
+ \ "",
+ \ "Error: Symbol ‘a’ at (1) has no IMPLICIT type",
+ \ "<stdin>:4:12:",
+ \ "",
+ \ "Error: Symbol ‘b’ at (1) has no IMPLICIT type",
+ \ ])
+
+After:
+ call ale#linter#Reset()