@@ -403,15 +403,16 @@ public UnresolvedTypeNode visitNullableType(NullableType type) {
403
403
public UnresolvedTypeNode visitConstrainedType (ConstrainedType type ) {
404
404
var childNode = visitType (type .getType ());
405
405
406
- var exprs = type .getExpr ();
407
- var constraints = new TypeConstraintNode [exprs .size ()];
408
- for (int i = 0 ; i < constraints .length ; i ++) {
409
- var expr = visitExpr (exprs .get (i ));
410
- constraints [i ] = TypeConstraintNodeGen .create (expr .getSourceSection (), expr );
411
- }
412
-
413
406
return symbolTable .enterCustomThisScope (
414
- scope -> new Constrained (createSourceSection (type ), childNode , constraints ));
407
+ scope -> {
408
+ var exprs = type .getExpr ();
409
+ var constraints = new TypeConstraintNode [exprs .size ()];
410
+ for (int i = 0 ; i < constraints .length ; i ++) {
411
+ var expr = visitExpr (exprs .get (i ));
412
+ constraints [i ] = TypeConstraintNodeGen .create (expr .getSourceSection (), expr );
413
+ }
414
+ return new Constrained (createSourceSection (type ), childNode , constraints );
415
+ });
415
416
}
416
417
417
418
@ Override
@@ -1189,6 +1190,23 @@ private Pair<ExpressionNode[], Boolean> createCollectionArgumentNodes(ArgumentLi
1189
1190
return Pair .of (elementNodes , isConstantNodes );
1190
1191
}
1191
1192
1193
+ @ Override
1194
+ public GeneratorMemberNode visitObjectMember (ObjectMemberNode member ) {
1195
+ if (member instanceof ObjectMemberNode .ObjectElement o ) return visitObjectElement (o );
1196
+ if (member instanceof ObjectMemberNode .ObjectProperty o ) return visitObjectProperty (o );
1197
+ if (member instanceof ObjectMemberNode .ObjectBodyProperty o ) return visitObjectBodyProperty (o );
1198
+ if (member instanceof ObjectMemberNode .ObjectMethod o ) return visitObjectMethod (o );
1199
+ if (member instanceof ObjectMemberNode .MemberPredicate o ) return visitMemberPredicate (o );
1200
+ if (member instanceof ObjectMemberNode .MemberPredicateBody o )
1201
+ return visitMemberPredicateBody (o );
1202
+ if (member instanceof ObjectMemberNode .ObjectEntry o ) return visitObjectEntry (o );
1203
+ if (member instanceof ObjectMemberNode .ObjectEntryBody o ) return visitObjectEntryBody (o );
1204
+ if (member instanceof ObjectMemberNode .ObjectSpread o ) return visitObjectSpread (o );
1205
+ if (member instanceof ObjectMemberNode .WhenGenerator o ) return visitWhenGenerator (o );
1206
+ if (member instanceof ObjectMemberNode .ForGenerator o ) return visitForGenerator (o );
1207
+ throw PklBugException .unreachableCode ();
1208
+ }
1209
+
1192
1210
@ Override
1193
1211
public GeneratorPropertyNode visitObjectProperty (ObjectProperty member ) {
1194
1212
checkHasNoForGenerator (member , "forGeneratorCannotGenerateProperties" );
@@ -1197,21 +1215,21 @@ public GeneratorPropertyNode visitObjectProperty(ObjectProperty member) {
1197
1215
}
1198
1216
1199
1217
@ Override
1200
- public Object visitObjectBodyProperty (ObjectBodyProperty member ) {
1218
+ public GeneratorMemberNode visitObjectBodyProperty (ObjectBodyProperty member ) {
1201
1219
checkHasNoForGenerator (member , "forGeneratorCannotGenerateProperties" );
1202
1220
var memberNode = doVisitObjectProperty (member );
1203
1221
return GeneratorPropertyNodeGen .create (memberNode );
1204
1222
}
1205
1223
1206
1224
@ Override
1207
- public Object visitObjectMethod (ObjectMethod memberNode ) {
1225
+ public GeneratorMemberNode visitObjectMethod (ObjectMethod memberNode ) {
1208
1226
checkHasNoForGenerator (memberNode , "forGeneratorCannotGenerateMethods" );
1209
1227
var member = doVisitObjectMethod (memberNode );
1210
1228
return GeneratorPropertyNodeGen .create (member );
1211
1229
}
1212
1230
1213
1231
@ Override
1214
- public Object visitMemberPredicate (MemberPredicate member ) {
1232
+ public GeneratorMemberNode visitMemberPredicate (MemberPredicate member ) {
1215
1233
var keyNodeAndMember = doVisitMemberPredicate (member );
1216
1234
var keyNode = keyNodeAndMember .first ;
1217
1235
var memberNode = keyNodeAndMember .second ;
@@ -1221,7 +1239,7 @@ public Object visitMemberPredicate(MemberPredicate member) {
1221
1239
}
1222
1240
1223
1241
@ Override
1224
- public Object visitMemberPredicateBody (MemberPredicateBody member ) {
1242
+ public GeneratorMemberNode visitMemberPredicateBody (MemberPredicateBody member ) {
1225
1243
var keyNodeAndMember = doVisitMemberPredicate (member );
1226
1244
var keyNode = keyNodeAndMember .first ;
1227
1245
var memberNode = keyNodeAndMember .second ;
@@ -1231,14 +1249,14 @@ public Object visitMemberPredicateBody(MemberPredicateBody member) {
1231
1249
}
1232
1250
1233
1251
@ Override
1234
- public Object visitObjectElement (ObjectElement member ) {
1252
+ public GeneratorMemberNode visitObjectElement (ObjectElement member ) {
1235
1253
var memberNode = doVisitObjectElement (member );
1236
1254
insertWriteForGeneratorVarsToFrameSlotsNode (memberNode .getMemberNode ());
1237
1255
return GeneratorElementNodeGen .create (memberNode );
1238
1256
}
1239
1257
1240
1258
@ Override
1241
- public Object visitObjectEntry (ObjectEntry member ) {
1259
+ public GeneratorMemberNode visitObjectEntry (ObjectEntry member ) {
1242
1260
var keyNodeAndMember = doVisitObjectEntry (member );
1243
1261
var keyNode = keyNodeAndMember .first ;
1244
1262
var memberNode = keyNodeAndMember .second ;
@@ -1248,7 +1266,7 @@ public Object visitObjectEntry(ObjectEntry member) {
1248
1266
}
1249
1267
1250
1268
@ Override
1251
- public Object visitObjectEntryBody (ObjectEntryBody member ) {
1269
+ public GeneratorMemberNode visitObjectEntryBody (ObjectEntryBody member ) {
1252
1270
var keyNodeAndMember = doVisitObjectEntry (member );
1253
1271
var keyNode = keyNodeAndMember .first ;
1254
1272
var memberNode = keyNodeAndMember .second ;
@@ -1258,7 +1276,7 @@ public Object visitObjectEntryBody(ObjectEntryBody member) {
1258
1276
}
1259
1277
1260
1278
@ Override
1261
- public Object visitObjectSpread (ObjectSpread member ) {
1279
+ public GeneratorMemberNode visitObjectSpread (ObjectSpread member ) {
1262
1280
var scope = symbolTable .getCurrentScope ();
1263
1281
var visitingIterable = scope .isVisitingIterable ();
1264
1282
scope .setVisitingIterable (true );
@@ -1268,7 +1286,7 @@ public Object visitObjectSpread(ObjectSpread member) {
1268
1286
}
1269
1287
1270
1288
@ Override
1271
- public Object visitWhenGenerator (WhenGenerator member ) {
1289
+ public GeneratorMemberNode visitWhenGenerator (WhenGenerator member ) {
1272
1290
var sourceSection = createSourceSection (member );
1273
1291
var thenNodes = doVisitForWhenBody (member .getBody ());
1274
1292
var elseNodes =
@@ -1302,7 +1320,7 @@ private int pushForGeneratorVariableContext(TypedIdent param) {
1302
1320
}
1303
1321
1304
1322
@ Override
1305
- public Object visitForGenerator (ForGenerator member ) {
1323
+ public GeneratorMemberNode visitForGenerator (ForGenerator member ) {
1306
1324
var sourceSection = createSourceSection (member );
1307
1325
int keyVariableSlot ;
1308
1326
int valueVariableSlot ;
@@ -2533,7 +2551,7 @@ private GeneratorMemberNode[] doVisitGeneratorMemberNodes(
2533
2551
List <? extends ObjectMemberNode > members ) {
2534
2552
var result = new GeneratorMemberNode [members .size ()];
2535
2553
for (var i = 0 ; i < result .length ; i ++) {
2536
- result [i ] = ( GeneratorMemberNode ) visitObjectMember (members .get (i ));
2554
+ result [i ] = visitObjectMember (members .get (i ));
2537
2555
}
2538
2556
return result ;
2539
2557
}
0 commit comments