@@ -916,6 +916,24 @@ public function provideVarTagsData(): Iterator
916
916
)
917
917
),
918
918
]),
919
+ null ,
920
+ new PhpDocNode ([
921
+ new PhpDocTagNode (
922
+ '@psalm-type ' ,
923
+ new TypeAliasTagValueNode (
924
+ 'PARTSTRUCTURE_PARAM ' ,
925
+ new InvalidTypeNode (
926
+ new ParserException (
927
+ '{ ' ,
928
+ Lexer::TOKEN_OPEN_CURLY_BRACKET ,
929
+ 44 ,
930
+ Lexer::TOKEN_PHPDOC_EOL ,
931
+ null
932
+ )
933
+ )
934
+ )
935
+ ),
936
+ ]),
919
937
];
920
938
}
921
939
@@ -3954,6 +3972,106 @@ public function provideTypeAliasTagsData(): Iterator
3954
3972
]),
3955
3973
];
3956
3974
3975
+ yield [
3976
+ 'invalid type that should be an error ' ,
3977
+ '/**
3978
+ * @phpstan-type Foo array{}
3979
+ * @phpstan-type InvalidFoo what{}
3980
+ */ ' ,
3981
+ new PhpDocNode ([
3982
+ new PhpDocTagNode (
3983
+ '@phpstan-type ' ,
3984
+ new InvalidTagValueNode (
3985
+ "Unexpected token \"{ \", expected '*/' at offset 65 " ,
3986
+ new ParserException (
3987
+ '{ ' ,
3988
+ Lexer::TOKEN_OPEN_CURLY_BRACKET ,
3989
+ 65 ,
3990
+ Lexer::TOKEN_CLOSE_PHPDOC ,
3991
+ null
3992
+ )
3993
+ )
3994
+ ),
3995
+ ]),
3996
+ null ,
3997
+ new PhpDocNode ([
3998
+ new PhpDocTagNode (
3999
+ '@phpstan-type ' ,
4000
+ new TypeAliasTagValueNode (
4001
+ 'Foo ' ,
4002
+ new ArrayShapeNode ([])
4003
+ )
4004
+ ),
4005
+ new PhpDocTagNode (
4006
+ '@phpstan-type ' ,
4007
+ new TypeAliasTagValueNode (
4008
+ 'InvalidFoo ' ,
4009
+ new InvalidTypeNode (new ParserException (
4010
+ '{ ' ,
4011
+ Lexer::TOKEN_OPEN_CURLY_BRACKET ,
4012
+ 65 ,
4013
+ Lexer::TOKEN_PHPDOC_EOL ,
4014
+ null
4015
+ ))
4016
+ )
4017
+ ),
4018
+ ]),
4019
+ ];
4020
+
4021
+ yield [
4022
+ 'invalid type that should be an error followed by valid again ' ,
4023
+ '/**
4024
+ * @phpstan-type Foo array{}
4025
+ * @phpstan-type InvalidFoo what{}
4026
+ * @phpstan-type Bar array{}
4027
+ */ ' ,
4028
+ new PhpDocNode ([
4029
+ new PhpDocTagNode (
4030
+ '@phpstan-type ' ,
4031
+ new InvalidTagValueNode (
4032
+ "Unexpected token \"{ \", expected '*/' at offset 65 " ,
4033
+ new ParserException (
4034
+ '{ ' ,
4035
+ Lexer::TOKEN_OPEN_CURLY_BRACKET ,
4036
+ 65 ,
4037
+ Lexer::TOKEN_CLOSE_PHPDOC ,
4038
+ null
4039
+ )
4040
+ )
4041
+ ),
4042
+ ]),
4043
+ null ,
4044
+ new PhpDocNode ([
4045
+ new PhpDocTagNode (
4046
+ '@phpstan-type ' ,
4047
+ new TypeAliasTagValueNode (
4048
+ 'Foo ' ,
4049
+ new ArrayShapeNode ([])
4050
+ )
4051
+ ),
4052
+ new PhpDocTagNode (
4053
+ '@phpstan-type ' ,
4054
+ new TypeAliasTagValueNode (
4055
+ 'InvalidFoo ' ,
4056
+ new InvalidTypeNode (new ParserException (
4057
+ '{ ' ,
4058
+ Lexer::TOKEN_OPEN_CURLY_BRACKET ,
4059
+ 65 ,
4060
+ Lexer::TOKEN_PHPDOC_EOL ,
4061
+ null
4062
+ ))
4063
+ )
4064
+ ),
4065
+ new PhpDocTagNode (
4066
+ '@phpstan-type ' ,
4067
+ new TypeAliasTagValueNode (
4068
+ 'Bar ' ,
4069
+ new ArrayShapeNode ([])
4070
+ )
4071
+ ),
4072
+ ]),
4073
+ ];
4074
+
3957
4075
yield [
3958
4076
'invalid empty ' ,
3959
4077
'/** @phpstan-type */ ' ,
0 commit comments