From 6befe9e37c3a7bc07aba2f66cd7587fd6360359b Mon Sep 17 00:00:00 2001 From: Adriaan Zonnenberg Date: Thu, 2 Mar 2017 00:26:03 +0100 Subject: [PATCH] Fix PHP column matching for unexpected single quotes (#370) * PHP: Fix column matching for unexpected single quotes Unexpected single quotes resulted in an empty match, because PHP surrounds the errors with quotes, and we check for the next quote to be the ending delimiter. For example: an unexpected string 'foo' would be presented as `unexpected ''foo''`, and then the match would be `''`. The inner part of that match is an empty string. This adds a check for the keyword "expecting". Any quote after "expecting" won't be matched, so we can use greedy matching instead of non-greedy. * PHP: Use "very magic" The pattern started to get unreadable Also replaced non-greedy matching (`\{-}`) by greedy matching, because we don't need to match non-greedily anymore and it reads a little nicer. * PHP: Add tests for column matches And with that, also a test for unexpected single quotes. --- ale_linters/php/php.vim | 2 +- test/test_php_handler.vader | 40 +++++++++++++++++++++++++------------ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/ale_linters/php/php.vim b/ale_linters/php/php.vim index aa5229c..6edc66b 100644 --- a/ale_linters/php/php.vim +++ b/ale_linters/php/php.vim @@ -5,7 +5,7 @@ function! ale_linters#php#php#Handle(buffer, lines) abort " Matches patterns like the following: " " PHP Parse error: syntax error, unexpected ';', expecting ']' in - on line 15 - let l:pattern = 'Parse error:\s\+\(.\{-}unexpected ''\(.\{-}\)''.\{-}\|.*\) in - on line \(\d\+\)' + let l:pattern = '\vParse error:\s+(.+unexpected ''(.+)%(expecting.+)@