summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Rathbone <stephen@stephenrathbone.co.uk>2017-12-13 21:23:18 +0000
committerStephen Rathbone <stephen@stephenrathbone.co.uk>2017-12-13 21:23:18 +0000
commit78d1f5f5dfdc3a362b3ecb304ffb07e9bb10a65c (patch)
tree9ddb9d93f71d157e48765ce34a8ecdc1e5479d02
parentd2a6d9a9152476ed89fcb10291c95d4fc3716423 (diff)
downloadale-78d1f5f5dfdc3a362b3ecb304ffb07e9bb10a65c.zip
Fix PHP linter to support PHP 7.2 lint output
-rw-r--r--ale_linters/php/php.vim6
-rw-r--r--test/handler/test_php_handler.vader12
2 files changed, 16 insertions, 2 deletions
diff --git a/ale_linters/php/php.vim b/ale_linters/php/php.vim
index b263c5f3..6470383b 100644
--- a/ale_linters/php/php.vim
+++ b/ale_linters/php/php.vim
@@ -4,12 +4,14 @@
function! ale_linters#php#php#Handle(buffer, lines) abort
" Matches patterns like the following:
"
- " Parse error: syntax error, unexpected ';', expecting ']' in - on line 15
- let l:pattern = '\v^%(Fatal|Parse) error:\s+(.+unexpected ''(.+)%(expecting.+)@<!''.*|.+) in - on line (\d+)'
+ " PHP 7.1<= - Parse error: syntax error, unexpected ';', expecting ']' in - on line 15
+ " PHP 7.2>= - Parse error: syntax error, unexpected ';', expecting ']' in Standard input code on line 15
+ let l:pattern = '\v^%(Fatal|Parse) error:\s+(.+unexpected ''(.+)%(expecting.+)@<!''.*|.+) in %(-|Standard input code) on line (\d+)'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
let l:col = empty(l:match[2]) ? 0 : stridx(getline(l:match[3]), l:match[2]) + 1
+
let l:obj = {
\ 'lnum': l:match[3] + 0,
\ 'col': l:col,
diff --git a/test/handler/test_php_handler.vader b/test/handler/test_php_handler.vader
index a6a4ba04..6fe9b323 100644
--- a/test/handler/test_php_handler.vader
+++ b/test/handler/test_php_handler.vader
@@ -54,6 +54,18 @@ Execute (The php handler should ignore lines starting with 'PHP Parse error'):
\ "PHP Parse error: syntax error, This line should be ignored completely in - on line 1",
\ ])
+Execute (The php handler should handle lines containing 'Standard input code'):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 47,
+ \ 'col': 0,
+ \ 'text': "Invalid numeric literal",
+ \ },
+ \ ],
+ \ ale_linters#php#php#Handle(347, [
+ \ "Parse error: Invalid numeric literal in Standard input code on line 47",
+ \ ])
Execute (The php handler should parse lines without column indication):
AssertEqual
\ [