@@ -5225,6 +5225,57 @@ public function provideTypeAliasTagsData(): Iterator
52255225 ),
52265226 ]),
52275227 ];
5228+
5229+ yield [
5230+ 'OK multiline with two template types ' ,
5231+ '/**
5232+ * @phpstan-type Widget<
5233+ * TFoo,
5234+ * TBar
5235+ * > array{foo: TFoo, bar: TBar}
5236+ */ ' ,
5237+ new PhpDocNode ([
5238+ new PhpDocTagNode (
5239+ '@phpstan-type ' ,
5240+ new TypeAliasTagValueNode (
5241+ 'Widget ' ,
5242+ ArrayShapeNode::createSealed ([
5243+ new ArrayShapeItemNode (new IdentifierTypeNode ('foo ' ), false , new IdentifierTypeNode ('TFoo ' )),
5244+ new ArrayShapeItemNode (new IdentifierTypeNode ('bar ' ), false , new IdentifierTypeNode ('TBar ' )),
5245+ ]),
5246+ [
5247+ new TemplateTagValueNode ('TFoo ' , null , '' ),
5248+ new TemplateTagValueNode ('TBar ' , null , '' ),
5249+ ],
5250+ ),
5251+ ),
5252+ ]),
5253+ ];
5254+
5255+ yield [
5256+ 'OK multiline with bounded template ' ,
5257+ '/**
5258+ * @phpstan-type Collection<
5259+ * T of object
5260+ * > list<T>
5261+ */ ' ,
5262+ new PhpDocNode ([
5263+ new PhpDocTagNode (
5264+ '@phpstan-type ' ,
5265+ new TypeAliasTagValueNode (
5266+ 'Collection ' ,
5267+ new GenericTypeNode (
5268+ new IdentifierTypeNode ('list ' ),
5269+ [new IdentifierTypeNode ('T ' )],
5270+ [GenericTypeNode::VARIANCE_INVARIANT ],
5271+ ),
5272+ [
5273+ new TemplateTagValueNode ('T ' , new IdentifierTypeNode ('object ' ), '' ),
5274+ ],
5275+ ),
5276+ ),
5277+ ]),
5278+ ];
52285279 }
52295280
52305281 public function provideTypeAliasImportTagsData (): Iterator
0 commit comments