@@ -147,8 +147,11 @@ public function printClass(ClassLike $class, ?PhpNamespace $namespace = null): s
147
147
}
148
148
149
149
$ cases = [];
150
+ $ enumType = null ;
150
151
if ($ class instanceof EnumType) {
152
+ $ enumType = $ class ->getType ();
151
153
foreach ($ class ->getCases () as $ case ) {
154
+ $ enumType ??= is_scalar ($ case ->getValue ()) ? get_debug_type ($ case ->getValue ()) : null ;
152
155
$ cases [] = Helpers::formatDocComment ((string ) $ case ->getComment ())
153
156
. self ::printAttributes ($ case ->getAttributes ())
154
157
. 'case ' . $ case ->getName ()
@@ -157,10 +160,6 @@ public function printClass(ClassLike $class, ?PhpNamespace $namespace = null): s
157
160
}
158
161
}
159
162
160
- $ enumType = isset ($ case ) && $ case ->getValue () !== null
161
- ? $ this ->returnTypeColon . get_debug_type ($ case ->getValue ())
162
- : '' ;
163
-
164
163
$ consts = [];
165
164
$ methods = [];
166
165
if (
@@ -209,8 +208,8 @@ public function printClass(ClassLike $class, ?PhpNamespace $namespace = null): s
209
208
210
209
$ members = array_filter ([
211
210
implode ('' , $ traits ),
212
- $ this ->joinProperties ($ cases ),
213
211
$ this ->joinProperties ($ consts ),
212
+ $ this ->joinProperties ($ cases ),
214
213
$ this ->joinProperties ($ properties ),
215
214
($ methods && $ properties ? str_repeat ("\n" , $ this ->linesBetweenMethods - 1 ) : '' )
216
215
. implode (str_repeat ("\n" , $ this ->linesBetweenMethods ), $ methods ),
@@ -228,7 +227,7 @@ public function printClass(ClassLike $class, ?PhpNamespace $namespace = null): s
228
227
. self ::printAttributes ($ class ->getAttributes ())
229
228
. ($ class instanceof ClassType && $ class ->isAbstract () ? 'abstract ' : '' )
230
229
. ($ class instanceof ClassType && $ class ->isFinal () ? 'final ' : '' )
231
- . ($ class ->getName () ? $ type . ' ' . $ class ->getName () . $ enumType . ' ' : '' )
230
+ . ($ class ->getName () ? $ type . ' ' . $ class ->getName () . ( $ enumType ? $ this -> returnTypeColon . $ enumType : '' ) . ' ' : '' )
232
231
. (($ class instanceof ClassType || $ class instanceof InterfaceType) && $ class ->getExtends ()
233
232
? 'extends ' . implode (', ' , array_map ($ resolver , (array ) $ class ->getExtends ())) . ' '
234
233
: '' )
0 commit comments