33namespace PHPStan \PhpDocParser \Parser ;
44
55use PHPStan \PhpDocParser \Ast \ConstExpr \ConstExprIntegerNode ;
6- use PHPStan \PhpDocParser \Ast \ConstExpr \ConstExprStringNode ;
76use PHPStan \PhpDocParser \Ast \Type \ArrayShapeItemNode ;
87use PHPStan \PhpDocParser \Ast \Type \ArrayShapeNode ;
98use PHPStan \PhpDocParser \Ast \Type \ArrayTypeNode ;
@@ -280,20 +279,20 @@ public function provideParseData(): array
280279 ],
281280
282281 [
283- 'array{ \' a \' : int} ' ,
282+ 'array{a : int} ' ,
284283 new ArrayShapeNode ([
285284 new ArrayShapeItemNode (
286- new ConstExprStringNode ( '\' a \' ' ),
285+ new IdentifierTypeNode ( ' a ' ),
287286 false ,
288287 new IdentifierTypeNode ('int ' )
289288 ),
290289 ]),
291290 ],
292291 [
293- 'array{ \' a \' : ?int} ' ,
292+ 'array{a : ?int} ' ,
294293 new ArrayShapeNode ([
295294 new ArrayShapeItemNode (
296- new ConstExprStringNode ( '\' a \' ' ),
295+ new IdentifierTypeNode ( ' a ' ),
297296 false ,
298297 new NullableTypeNode (
299298 new IdentifierTypeNode ('int ' )
@@ -302,10 +301,10 @@ public function provideParseData(): array
302301 ]),
303302 ],
304303 [
305- 'array{ \' a \' ?: ?int} ' ,
304+ 'array{a ?: ?int} ' ,
306305 new ArrayShapeNode ([
307306 new ArrayShapeItemNode (
308- new ConstExprStringNode ( '\' a \' ' ),
307+ new IdentifierTypeNode ( ' a ' ),
309308 true ,
310309 new NullableTypeNode (
311310 new IdentifierTypeNode ('int ' )
@@ -314,22 +313,27 @@ public function provideParseData(): array
314313 ]),
315314 ],
316315 [
317- 'array{ \' a \' : int, \' b \' : string } ' ,
316+ 'array{0 : int} ' ,
318317 new ArrayShapeNode ([
319318 new ArrayShapeItemNode (
320- new ConstExprStringNode ( '\' a \' ' ),
319+ new ConstExprIntegerNode ( ' 0 ' ),
321320 false ,
322321 new IdentifierTypeNode ('int ' )
323322 ),
323+ ]),
324+ ],
325+ [
326+ 'array{0?: int} ' ,
327+ new ArrayShapeNode ([
324328 new ArrayShapeItemNode (
325- new ConstExprStringNode ( '\' b \' ' ),
326- false ,
327- new IdentifierTypeNode ('string ' )
329+ new ConstExprIntegerNode ( ' 0 ' ),
330+ true ,
331+ new IdentifierTypeNode ('int ' )
328332 ),
329333 ]),
330334 ],
331335 [
332- 'array{int, string, "a": string } ' ,
336+ 'array{int, int } ' ,
333337 new ArrayShapeNode ([
334338 new ArrayShapeItemNode (
335339 null ,
@@ -339,25 +343,35 @@ public function provideParseData(): array
339343 new ArrayShapeItemNode (
340344 null ,
341345 false ,
342- new IdentifierTypeNode ('string ' )
346+ new IdentifierTypeNode ('int ' )
347+ ),
348+ ]),
349+ ],
350+ [
351+ 'array{a: int, b: string} ' ,
352+ new ArrayShapeNode ([
353+ new ArrayShapeItemNode (
354+ new IdentifierTypeNode ('a ' ),
355+ false ,
356+ new IdentifierTypeNode ('int ' )
343357 ),
344358 new ArrayShapeItemNode (
345- new ConstExprStringNode ( ' "a" ' ),
359+ new IdentifierTypeNode ( ' b ' ),
346360 false ,
347361 new IdentifierTypeNode ('string ' )
348362 ),
349363 ]),
350364 ],
351365 [
352- 'array{"a" ?: int, \' b \' : string, 0: int, 1?: DateTime, hello: string} ' ,
366+ 'array{a ?: int, b : string, 0: int, 1?: DateTime, hello: string} ' ,
353367 new ArrayShapeNode ([
354368 new ArrayShapeItemNode (
355- new ConstExprStringNode ( ' "a" ' ),
369+ new IdentifierTypeNode ( ' a ' ),
356370 true ,
357371 new IdentifierTypeNode ('int ' )
358372 ),
359373 new ArrayShapeItemNode (
360- new ConstExprStringNode ( '\' b \' ' ),
374+ new IdentifierTypeNode ( ' b ' ),
361375 false ,
362376 new IdentifierTypeNode ('string ' )
363377 ),
@@ -379,19 +393,19 @@ public function provideParseData(): array
379393 ]),
380394 ],
381395 [
382- 'array{ \' a \' : int, \' b \' : array{ \' c \' : callable(): int}} ' ,
396+ 'array{a : int, b : array{c : callable(): int}} ' ,
383397 new ArrayShapeNode ([
384398 new ArrayShapeItemNode (
385- new ConstExprStringNode ( '\' a \' ' ),
399+ new IdentifierTypeNode ( ' a ' ),
386400 false ,
387401 new IdentifierTypeNode ('int ' )
388402 ),
389403 new ArrayShapeItemNode (
390- new ConstExprStringNode ( '\' b \' ' ),
404+ new IdentifierTypeNode ( ' b ' ),
391405 false ,
392406 new ArrayShapeNode ([
393407 new ArrayShapeItemNode (
394- new ConstExprStringNode ( '\' c \' ' ),
408+ new IdentifierTypeNode ( ' c ' ),
395409 false ,
396410 new CallableTypeNode (
397411 new IdentifierTypeNode ('callable ' ),
@@ -404,11 +418,11 @@ public function provideParseData(): array
404418 ]),
405419 ],
406420 [
407- '?array{ \' a \' : int} ' ,
421+ '?array{a : int} ' ,
408422 new NullableTypeNode (
409423 new ArrayShapeNode ([
410424 new ArrayShapeItemNode (
411- new ConstExprStringNode ( '\' a \' ' ),
425+ new IdentifierTypeNode ( ' a ' ),
412426 false ,
413427 new IdentifierTypeNode ('int ' )
414428 ),
@@ -509,13 +523,13 @@ public function provideParseData(): array
509523 ),
510524 ],
511525 [
512- 'callable(): array{ \' a \' : int} ' ,
526+ 'callable(): array{a : int} ' ,
513527 new CallableTypeNode (
514528 new IdentifierTypeNode ('callable ' ),
515529 [],
516530 new ArrayShapeNode ([
517531 new ArrayShapeItemNode (
518- new ConstExprStringNode ( '\' a \' ' ),
532+ new IdentifierTypeNode ( ' a ' ),
519533 false ,
520534 new IdentifierTypeNode ('int ' )
521535 ),
0 commit comments