mirror of
https://github.com/danog/PHP-Parser.git
synced 2024-11-26 20:04:48 +01:00
Make keyword emulation check case-insensitive
This commit is contained in:
parent
88be6127fa
commit
b5351f883a
@ -9,7 +9,7 @@ abstract class KeywordEmulator extends TokenEmulator
|
|||||||
|
|
||||||
public function isEmulationNeeded(string $code): bool
|
public function isEmulationNeeded(string $code): bool
|
||||||
{
|
{
|
||||||
return strpos($code, $this->getKeywordString()) !== false;
|
return strpos(strtolower($code), $this->getKeywordString()) !== false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function emulate(string $code, array $tokens): array
|
public function emulate(string $code, array $tokens): array
|
||||||
|
@ -24,6 +24,17 @@ class EmulativeTest extends LexerTest
|
|||||||
$this->assertSame(0, $lexer->getNextToken());
|
$this->assertSame(0, $lexer->getNextToken());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider provideTestReplaceKeywords
|
||||||
|
*/
|
||||||
|
public function testReplaceKeywordsUppercase($keyword, $expectedToken) {
|
||||||
|
$lexer = $this->getLexer();
|
||||||
|
$lexer->startLexing('<?php ' . strtoupper($keyword));
|
||||||
|
|
||||||
|
$this->assertSame($expectedToken, $lexer->getNextToken());
|
||||||
|
$this->assertSame(0, $lexer->getNextToken());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider provideTestReplaceKeywords
|
* @dataProvider provideTestReplaceKeywords
|
||||||
*/
|
*/
|
||||||
@ -318,8 +329,11 @@ class EmulativeTest extends LexerTest
|
|||||||
return [
|
return [
|
||||||
['8.0', 'match', [[Tokens::T_MATCH, 'match']]],
|
['8.0', 'match', [[Tokens::T_MATCH, 'match']]],
|
||||||
['7.4', 'match', [[Tokens::T_STRING, 'match']]],
|
['7.4', 'match', [[Tokens::T_STRING, 'match']]],
|
||||||
|
// Keywords are not case-sensitive.
|
||||||
['7.4', 'fn', [[Tokens::T_FN, 'fn']]],
|
['7.4', 'fn', [[Tokens::T_FN, 'fn']]],
|
||||||
|
['7.4', 'FN', [[Tokens::T_FN, 'FN']]],
|
||||||
['7.3', 'fn', [[Tokens::T_STRING, 'fn']]],
|
['7.3', 'fn', [[Tokens::T_STRING, 'fn']]],
|
||||||
|
['7.3', 'FN', [[Tokens::T_STRING, 'FN']]],
|
||||||
// Tested here to skip testLeaveStuffAloneInStrings.
|
// Tested here to skip testLeaveStuffAloneInStrings.
|
||||||
['8.0', '"$foo?->bar"', [
|
['8.0', '"$foo?->bar"', [
|
||||||
[ord('"'), '"'],
|
[ord('"'), '"'],
|
||||||
|
Loading…
Reference in New Issue
Block a user