@@ -237,8 +237,9 @@ public function setup($language, $emitter) {
237237
238238 // Rewrite `new T(...)` -> `$T->newInstance(...)` if T is a component
239239 if (
240+ ($ name = $ codegen ->scope [0 ]->type ->name ?? null ) instanceof IsGenericDeclaration &&
240241 $ node ->type instanceof IsValue &&
241- $ generic = self ::generic ($ node ->type , $ codegen -> scope [ 0 ]-> type -> name ->components ())
242+ $ generic = self ::generic ($ node ->type , $ name ->components ())
242243 ) {
243244 return new InvokeExpression (
244245 new InstanceExpression (new Variable ($ generic ), new Literal ('newInstance ' )),
@@ -253,8 +254,9 @@ public function setup($language, $emitter) {
253254
254255 // Rewrite `... instanceof T` -> `$T->isInstance(...)` if T is a component
255256 if (
257+ ($ name = $ codegen ->scope [0 ]->type ->name ?? null ) instanceof IsGenericDeclaration &&
256258 is_string ($ node ->type ) &&
257- $ generic = self ::generic (new IsValue ($ node ->type ), $ codegen -> scope [ 0 ]-> type -> name ->components ())
259+ $ generic = self ::generic (new IsValue ($ node ->type ), $ name ->components ())
258260 ) {
259261 return new InvokeExpression (
260262 new InstanceExpression (new Variable ($ generic ), new Literal ('isInstance ' )),
@@ -269,9 +271,10 @@ public function setup($language, $emitter) {
269271
270272 // Rewrite `T::class` to `$T->literal()` if T is a component
271273 if (
274+ ($ name = $ codegen ->scope [0 ]->type ->name ?? null ) instanceof IsGenericDeclaration &&
272275 $ node ->member instanceof Literal &&
273276 'class ' === $ node ->member ->expression &&
274- $ generic = self ::generic (new IsValue ($ node ->type ), $ codegen -> scope [ 0 ]-> type -> name ->components ())
277+ $ generic = self ::generic (new IsValue ($ node ->type ), $ name ->components ())
275278 ) {
276279 return new InvokeExpression (
277280 new InstanceExpression (new Variable ($ generic ), new Literal ('literal ' )),
0 commit comments