1212use Nette \PhpGenerator \PhpNamespace ;
1313use Nette \PhpGenerator \PsrPrinter ;
1414use Symfony \Component \Finder \Finder ;
15- use Typhoon \Type \Internal \TermType ;
1615use Typhoon \Type \Type ;
1716use Typhoon \Type \TypeVisitor ;
1817
@@ -49,9 +48,9 @@ private static function generateTypes(): void
4948 {
5049 foreach (self ::types () as $ type ) {
5150 if ($ type ->properties === []) {
52- self ::writeClass (self ::generateEnumType ($ type ));
51+ self ::writeClass (self ::generateAtomicType ($ type ));
5352 } else {
54- self ::writeClass (self ::generateClassType ($ type ));
53+ self ::writeClass (self ::generateComplexType ($ type ));
5554 }
5655 }
5756 }
@@ -100,11 +99,11 @@ private static function generateDefaultVisitor(): void
10099 self ::writeClass ($ visitor , 'Visitor ' );
101100 }
102101
103- private static function generateEnumType (TypeSpec $ type ): EnumType
102+ private static function generateAtomicType (TypeSpec $ type ): EnumType
104103 {
105104 $ enum = (new EnumType ($ type ->shortClassName ()))
106- ->setComment (self ::GENERATED_NOTICE . "\n@api \n@implements { $ type -> shortInterfaceName ()} < {$ type ->type }> " )
107- ->addImplement ($ type -> interface );
105+ ->setComment (self ::GENERATED_NOTICE . "\n@api \n@implements Type < {$ type ->type }> " )
106+ ->addImplement (Type::class );
108107 $ enum ->addCase ('T ' );
109108 $ enum ->addMethod ('accept ' )
110109 ->setReturnType ('mixed ' )
@@ -114,11 +113,11 @@ private static function generateEnumType(TypeSpec $type): EnumType
114113 return $ enum ;
115114 }
116115
117- private static function generateClassType (TypeSpec $ type ): ClassType
116+ private static function generateComplexType (TypeSpec $ typeSpec ): ClassType
118117 {
119118 $ typeComment = self ::GENERATED_NOTICE . "\n@api " ;
120119
121- foreach ($ type ->templates as $ templateSpec ) {
120+ foreach ($ typeSpec ->templates as $ templateSpec ) {
122121 $ typeComment .= \sprintf (
123122 "\n@template %s%s%s " ,
124123 $ templateSpec ->name ,
@@ -127,18 +126,18 @@ private static function generateClassType(TypeSpec $type): ClassType
127126 );
128127 }
129128
130- $ typeComment .= "\n@implements { $ type -> shortInterfaceName ()} < {$ type ->type }> " ;
129+ $ typeComment .= "\n@implements Type < {$ typeSpec ->type }> " ;
131130
132- $ class = (new ClassType ($ type ->shortClassName ()))
131+ $ class = (new ClassType ($ typeSpec ->shortClassName ()))
133132 ->setFinal ()
134133 ->setComment ($ typeComment )
135- ->addImplement ($ type -> interface );
134+ ->addImplement (Type::class );
136135
137136 $ constructorComment = "@internal \n@psalm-internal Typhoon \\Type " ;
138137 $ constructorParams = [];
139138 $ constructorBody = '' ;
140139
141- foreach ($ type ->properties as $ propertySpec ) {
140+ foreach ($ typeSpec ->properties as $ propertySpec ) {
142141 $ nativeType = $ propertySpec ->nativeType ();
143142 $ class ->addProperty ($ propertySpec ->name )
144143 ->setReadOnly ()
@@ -158,7 +157,7 @@ private static function generateClassType(TypeSpec $type): ClassType
158157 $ class
159158 ->addMethod ('accept ' )
160159 ->setReturnType ('mixed ' )
161- ->addBody (\sprintf ('return $visitor->%s($this); ' , $ type ->name ))
160+ ->addBody (\sprintf ('return $visitor->%s($this); ' , $ typeSpec ->name ))
162161 ->addParameter ('visitor ' )->setType (TypeVisitor::class);
163162
164163 return $ class ;
@@ -186,7 +185,6 @@ private static function writeClass(ClassType|InterfaceType|EnumType $class, ?str
186185 $ namespace = $ file ->addNamespace (new PhpNamespace (self ::NAMESPACE . ($ namespace === null ? '' : '\\' . $ namespace )));
187186 $ namespace ->add ($ class );
188187 $ namespace ->addUse (Type::class);
189- $ namespace ->addUse (TermType::class);
190188
191189 file_put_contents ($ fileName , (new PsrPrinter ())->printFile ($ file ));
192190 }
0 commit comments