Skip to content

Commit 82e01b2

Browse files
committed
Assert "function" keyword is not "reserved"
"reserved" keyword is tokenized sooner thus the same keyword defined as "function" is useless.
1 parent 5219b17 commit 82e01b2

File tree

2 files changed

+14
-22
lines changed

2 files changed

+14
-22
lines changed

src/Tokenizer.php

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -416,19 +416,15 @@ final class Tokenizer
416416
'CENTROID',
417417
'CHAR',
418418
'CHARACTER_LENGTH',
419-
'CHARSET',
420419
'CHAR_LENGTH',
421420
'CHECKSUM_AGG',
422421
'COALESCE',
423422
'COERCIBILITY',
424-
'COLLATION',
425423
'COMPRESS',
426424
'CONCAT',
427425
'CONCAT_WS',
428426
'CONNECTION_ID',
429-
'CONTAINS',
430427
'CONV',
431-
'CONVERT',
432428
'CONVERT_TZ',
433429
'CONVEXHULL',
434430
'COS',
@@ -441,23 +437,19 @@ final class Tokenizer
441437
'CURDATE',
442438
'CURRENT_DATE',
443439
'CURRENT_TIME',
444-
'CURRENT_TIMESTAMP',
445440
'CURRENT_USER',
446441
'CURTIME',
447-
'DATABASE',
448442
'DATE',
449443
'DATEDIFF',
450444
'DATE_ADD',
451445
'DATE_DIFF',
452446
'DATE_FORMAT',
453447
'DATE_SUB',
454-
'DAY',
455448
'DAYNAME',
456449
'DAYOFMONTH',
457450
'DAYOFWEEK',
458451
'DAYOFYEAR',
459452
'DECODE',
460-
'DEFAULT',
461453
'DEGREES',
462454
'DENSE_RANK',
463455
'DES_DECRYPT',
@@ -505,17 +497,12 @@ final class Tokenizer
505497
'GROUP_CONCAT',
506498
'GROUP_UNIQUE_USERS',
507499
'HEX',
508-
'HOUR',
509-
'IF',
510-
'IFNULL',
511500
'INET_ATON',
512501
'INET_NTOA',
513-
'INSERT',
514502
'INSTR',
515503
'INTERIORRINGN',
516504
'INTERSECTION',
517505
'INTERSECTS',
518-
'INTERVAL',
519506
'ISCLOSED',
520507
'ISEMPTY',
521508
'ISNULL',
@@ -525,12 +512,10 @@ final class Tokenizer
525512
'IS_USED_LOCK',
526513
'LAG',
527514
'LAST_DAY',
528-
'LAST_INSERT_ID',
529515
'LAST_VALUE',
530516
'LCASE',
531517
'LEAD',
532518
'LEAST',
533-
'LEFT',
534519
'LENGTH',
535520
'LINEFROMTEXT',
536521
'LINEFROMWKB',
@@ -565,11 +550,9 @@ final class Tokenizer
565550
'MICROSECOND',
566551
'MID',
567552
'MIN',
568-
'MINUTE',
569553
'MLINEFROMTEXT',
570554
'MLINEFROMWKB',
571555
'MOD',
572-
'MONTH',
573556
'MONTHNAME',
574557
'MPOINTFROMTEXT',
575558
'MPOINTFROMWKB',
@@ -597,7 +580,6 @@ final class Tokenizer
597580
'OLD_PASSWORD',
598581
'ORD',
599582
'OVERLAPS',
600-
'PASSWORD',
601583
'PERCENTILE_CONT',
602584
'PERCENTILE_DISC',
603585
'PERCENT_RANK',
@@ -625,16 +607,13 @@ final class Tokenizer
625607
'RELATED',
626608
'RELEASE_LOCK',
627609
'REPEAT',
628-
'REPLACE',
629610
'REVERSE',
630-
'RIGHT',
631611
'ROUND',
632612
'ROW_COUNT',
633613
'ROW_NUMBER',
634614
'RPAD',
635615
'RTRIM',
636616
'SCHEMA',
637-
'SECOND',
638617
'SEC_TO_TIME',
639618
'SESSION_USER',
640619
'SHA',
@@ -676,7 +655,6 @@ final class Tokenizer
676655
'TOUCHES',
677656
'TO_DAYS',
678657
'TRIM',
679-
'TRUNCATE',
680658
'UCASE',
681659
'UNCOMPRESS',
682660
'UNCOMPRESSED_LENGTH',

tests/TokenizerTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use PHPUnit\Framework\TestCase;
1313
use ReflectionClass;
1414

15+
use function array_diff_key;
1516
use function array_filter;
1617
use function array_merge;
1718
use function array_unique;
@@ -68,6 +69,19 @@ public function testKeywordsAreSingleUpperWord(): void
6869
self::assertSame([], $kwsDiff);
6970
}
7071

72+
public function testKeywordsAreDisjunctive(): void
73+
{
74+
$tokenizerKeywords = array_merge(
75+
$this->getTokenizerList('reserved'),
76+
$this->getTokenizerList('functions'),
77+
);
78+
79+
self::assertSame(
80+
[],
81+
array_diff_key($tokenizerKeywords, array_unique($tokenizerKeywords)),
82+
);
83+
}
84+
7185
/** @param list<Token> $expectedTokens */
7286
public static function assertEqualsTokens(array $expectedTokens, Cursor $cursor): void
7387
{

0 commit comments

Comments
 (0)