File tree 2 files changed +53
-0
lines changed
2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ final class Tokenizer
29
29
private array $ reserved = [
30
30
'ACCESSIBLE ' ,
31
31
'ACTION ' ,
32
+ 'ADD ' ,
32
33
'AFTER ' ,
33
34
'AGAINST ' ,
34
35
'AGGREGATE ' ,
@@ -37,6 +38,7 @@ final class Tokenizer
37
38
'ALTER ' ,
38
39
'ANALYSE ' ,
39
40
'ANALYZE ' ,
41
+ 'AND ' ,
40
42
'AS ' ,
41
43
'ASC ' ,
42
44
'AUTO_INCREMENT ' ,
@@ -46,6 +48,7 @@ final class Tokenizer
46
48
'BETWEEN ' ,
47
49
'BINLOG ' ,
48
50
'BOTH ' ,
51
+ 'BY ' ,
49
52
'CASCADE ' ,
50
53
'CASE ' ,
51
54
'CHANGE ' ,
@@ -87,6 +90,7 @@ final class Tokenizer
87
90
'DISTINCTROW ' ,
88
91
'DIV ' ,
89
92
'DO ' ,
93
+ 'DROP ' ,
90
94
'DUMPFILE ' ,
91
95
'DUPLICATE ' ,
92
96
'DYNAMIC ' ,
@@ -99,6 +103,8 @@ final class Tokenizer
99
103
'ESCAPE ' ,
100
104
'ESCAPED ' ,
101
105
'EVENTS ' ,
106
+ 'EXCEPT ' ,
107
+ 'EXCLUDE ' ,
102
108
'EXEC ' ,
103
109
'EXECUTE ' ,
104
110
'EXISTS ' ,
@@ -115,6 +121,7 @@ final class Tokenizer
115
121
'FOR ' ,
116
122
'FORCE ' ,
117
123
'FOREIGN ' ,
124
+ 'FROM ' ,
118
125
'FULL ' ,
119
126
'FULLTEXT ' ,
120
127
'FUNCTION ' ,
@@ -123,6 +130,7 @@ final class Tokenizer
123
130
'GRANTS ' ,
124
131
'GROUP ' ,
125
132
'GROUPS ' ,
133
+ 'HAVING ' ,
126
134
'HEAP ' ,
127
135
'HIGH_PRIORITY ' ,
128
136
'HOSTS ' ,
@@ -137,21 +145,26 @@ final class Tokenizer
137
145
'INDEX ' ,
138
146
'INDEXES ' ,
139
147
'INFILE ' ,
148
+ 'INNER ' ,
140
149
'INSERT ' ,
141
150
'INSERT_ID ' ,
142
151
'INSERT_METHOD ' ,
152
+ 'INTERSECT ' ,
143
153
'INTERVAL ' ,
144
154
'INTO ' ,
145
155
'INVOKER ' ,
146
156
'IS ' ,
147
157
'ISOLATION ' ,
158
+ 'JOIN ' ,
148
159
'KEY ' ,
149
160
'KEYS ' ,
150
161
'KILL ' ,
151
162
'LAST_INSERT_ID ' ,
152
163
'LEADING ' ,
164
+ 'LEFT ' ,
153
165
'LEVEL ' ,
154
166
'LIKE ' ,
167
+ 'LIMIT ' ,
155
168
'LINEAR ' ,
156
169
'LINES ' ,
157
170
'LOAD ' ,
@@ -177,6 +190,7 @@ final class Tokenizer
177
190
'MINUTE ' ,
178
191
'MINUTE_SECOND ' ,
179
192
'MODE ' ,
193
+ 'MODIFY ' ,
180
194
'MONTH ' ,
181
195
'MRG_MYISAM ' ,
182
196
'MYISAM ' ,
@@ -193,6 +207,9 @@ final class Tokenizer
193
207
'OPTIMIZE ' ,
194
208
'OPTION ' ,
195
209
'OPTIONALLY ' ,
210
+ 'OR ' ,
211
+ 'ORDER ' ,
212
+ 'OUTER ' ,
196
213
'OUTFILE ' ,
197
214
'OVER ' ,
198
215
'PACK_KEYS ' ,
@@ -232,16 +249,19 @@ final class Tokenizer
232
249
'RETURN ' ,
233
250
'RETURNS ' ,
234
251
'REVOKE ' ,
252
+ 'RIGHT ' ,
235
253
'RLIKE ' ,
236
254
'ROLLBACK ' ,
237
255
'ROW ' ,
238
256
'ROW_FORMAT ' ,
239
257
'ROWS ' ,
240
258
'SECOND ' ,
241
259
'SECURITY ' ,
260
+ 'SELECT ' ,
242
261
'SEPARATOR ' ,
243
262
'SERIALIZABLE ' ,
244
263
'SESSION ' ,
264
+ 'SET ' ,
245
265
'SHARE ' ,
246
266
'SHOW ' ,
247
267
'SHUTDOWN ' ,
@@ -292,18 +312,24 @@ final class Tokenizer
292
312
'TYPES ' ,
293
313
'UNBOUNDED ' ,
294
314
'UNCOMMITTED ' ,
315
+ 'UNION ' ,
295
316
'UNIQUE ' ,
296
317
'UNLOCK ' ,
297
318
'UNSIGNED ' ,
319
+ 'UPDATE ' ,
298
320
'USAGE ' ,
299
321
'USE ' ,
300
322
'USING ' ,
323
+ 'VALUES ' ,
301
324
'VARIABLES ' ,
302
325
'VIEW ' ,
303
326
'WHEN ' ,
327
+ 'WHERE ' ,
328
+ 'WINDOW ' ,
304
329
'WITH ' ,
305
330
'WORK ' ,
306
331
'WRITE ' ,
332
+ 'XOR ' ,
307
333
'YEAR_MONTH ' ,
308
334
];
309
335
Original file line number Diff line number Diff line change 7
7
use Doctrine \SqlFormatter \Tokenizer ;
8
8
use PHPUnit \Framework \Attributes \DoesNotPerformAssertions ;
9
9
use PHPUnit \Framework \TestCase ;
10
+ use ReflectionClass ;
11
+
12
+ use function array_diff ;
13
+ use function explode ;
10
14
11
15
final class TokenizerTest extends TestCase
12
16
{
17
+ public function testKeywordsReservedToplevelAndNewlineAreReserved (): void
18
+ {
19
+ $ tokenizerReflClass = new ReflectionClass (Tokenizer::class);
20
+ /** @var list<string> $tokenizerReserved */
21
+ $ tokenizerReserved = $ tokenizerReflClass ->getProperty ('reserved ' )->getDefaultValue ();
22
+ /** @var list<string> $tokenizerReservedToplevel */
23
+ $ tokenizerReservedToplevel = $ tokenizerReflClass ->getProperty ('reservedToplevel ' )->getDefaultValue ();
24
+ /** @var list<string> $tokenizerReservedNewline */
25
+ $ tokenizerReservedNewline = $ tokenizerReflClass ->getProperty ('reservedNewline ' )->getDefaultValue ();
26
+
27
+ $ kws = [];
28
+
29
+ foreach ([...$ tokenizerReservedToplevel , ...$ tokenizerReservedNewline ] as $ v ) {
30
+ foreach (explode (' ' , $ v ) as $ kw ) {
31
+ $ kws [] = $ kw ;
32
+ }
33
+ }
34
+
35
+ $ kwsDiff = array_diff ($ kws , $ tokenizerReserved );
36
+
37
+ self ::assertSame ([], $ kwsDiff );
38
+ }
39
+
13
40
#[DoesNotPerformAssertions]
14
41
public function testThereAreNoRegressions (): void
15
42
{
You can’t perform that action at this time.
0 commit comments