23
23
use PHPStan \PhpDocParser \Parser \TokenIterator ;
24
24
use PHPStan \PhpDocParser \Parser \TypeParser ;
25
25
use SlevomatCodingStandard \Helpers \Annotation \Annotation ;
26
+ use SlevomatCodingStandard \Helpers \Annotation \AssertAnnotation ;
26
27
use SlevomatCodingStandard \Helpers \Annotation \ExtendsAnnotation ;
27
28
use SlevomatCodingStandard \Helpers \Annotation \GenericAnnotation ;
28
29
use SlevomatCodingStandard \Helpers \Annotation \ImplementsAnnotation ;
@@ -64,7 +65,7 @@ class AnnotationHelper
64
65
65
66
/**
66
67
* @internal
67
- * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|TypeAliasAnnotation|TypeImportAnnotation $annotation
68
+ * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|TypeAliasAnnotation|TypeImportAnnotation|AssertAnnotation $annotation
68
69
* @return TypeNode[]
69
70
*/
70
71
public static function getAnnotationTypes (Annotation $ annotation ): array
@@ -97,7 +98,7 @@ public static function getAnnotationTypes(Annotation $annotation): array
97
98
98
99
/**
99
100
* @internal
100
- * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation $annotation
101
+ * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|AssertAnnotation $annotation
101
102
* @return ConstExprNode[]
102
103
*/
103
104
public static function getAnnotationConstantExpressions (Annotation $ annotation ): array
@@ -125,7 +126,7 @@ public static function getAnnotationConstantExpressions(Annotation $annotation):
125
126
126
127
/**
127
128
* @internal
128
- * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation $annotation
129
+ * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|AssertAnnotation $annotation
129
130
*/
130
131
public static function fixAnnotationType (File $ phpcsFile , Annotation $ annotation , TypeNode $ typeNode , TypeNode $ fixedTypeNode ): string
131
132
{
@@ -136,7 +137,7 @@ public static function fixAnnotationType(File $phpcsFile, Annotation $annotation
136
137
137
138
/**
138
139
* @internal
139
- * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation $annotation
140
+ * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|AssertAnnotation $annotation
140
141
*/
141
142
public static function fixAnnotationConstantFetchNode (
142
143
File $ phpcsFile ,
@@ -192,7 +193,7 @@ public static function fixAnnotationConstantFetchNode(
192
193
}
193
194
194
195
/**
195
- * @return (VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|GenericAnnotation)[]
196
+ * @return (VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|AssertAnnotation| GenericAnnotation)[]
196
197
*/
197
198
public static function getAnnotationsByName (File $ phpcsFile , int $ pointer , string $ annotationName ): array
198
199
{
@@ -202,7 +203,7 @@ public static function getAnnotationsByName(File $phpcsFile, int $pointer, strin
202
203
}
203
204
204
205
/**
205
- * @return (VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|GenericAnnotation)[][]
206
+ * @return (VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|AssertAnnotation| GenericAnnotation)[][]
206
207
*/
207
208
public static function getAnnotations (File $ phpcsFile , int $ pointer ): array
208
209
{
@@ -334,6 +335,12 @@ static function () use ($phpcsFile, $pointer): array {
334
335
'@psalm-import-type ' => TypeImportAnnotation::class,
335
336
'@phpstan-import-type ' => TypeImportAnnotation::class,
336
337
'@mixin ' => MixinAnnotation::class,
338
+ '@phpstan-assert ' => AssertAnnotation::class,
339
+ '@phpstan-assert-if-true ' => AssertAnnotation::class,
340
+ '@phpstan-assert-if-false ' => AssertAnnotation::class,
341
+ '@psalm-assert ' => AssertAnnotation::class,
342
+ '@psalm-assert-if-true ' => AssertAnnotation::class,
343
+ '@psalm-assert-if-false ' => AssertAnnotation::class,
337
344
];
338
345
339
346
if (array_key_exists ($ annotationName , $ mapping )) {
@@ -468,7 +475,7 @@ public static function isAnnotationUseless(
468
475
}
469
476
470
477
/**
471
- * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|TypeAliasAnnotation|TypeImportAnnotation $annotation
478
+ * @param VariableAnnotation|ParameterAnnotation|ReturnAnnotation|ThrowsAnnotation|PropertyAnnotation|MethodAnnotation|TemplateAnnotation|ExtendsAnnotation|ImplementsAnnotation|UseAnnotation|MixinAnnotation|TypeAliasAnnotation|TypeImportAnnotation|AssertAnnotation $annotation
472
479
*/
473
480
private static function fixAnnotation (Annotation $ annotation , TypeNode $ typeNode , TypeNode $ fixedTypeNode ): Annotation
474
481
{
0 commit comments