diff --git a/src/main/java/de/maishai/ExpressionGenerator.java b/src/main/java/de/maishai/ExpressionGenerator.java index ae2a638..8b87f84 100644 --- a/src/main/java/de/maishai/ExpressionGenerator.java +++ b/src/main/java/de/maishai/ExpressionGenerator.java @@ -47,9 +47,11 @@ public class ExpressionGenerator extends DecafBaseVisitor { if (ctx.fieldVarAccess().recipient() != null) { List recipientList = ctx.fieldVarAccess().recipient(); recipient = ExpressionGenerator.generateRecursiveOwnerChain(recipientList, ctx.fieldVarAccess().newCall() != null ? StatementGenerator.generateNew(ctx.fieldVarAccess().newCall()) : null, isField); - return new FieldVarAccess(true, recipient, ctx.fieldVarAccess().id().IDENTIFIER().getText()); } - return new FieldVarAccess(isField, recipient, ctx.fieldVarAccess().id().IDENTIFIER().getText()); + if (recipient == null) { + return new FieldVarAccess(isField, null, ctx.fieldVarAccess().id().IDENTIFIER().getText()); + } + return new FieldVarAccess(true, recipient, ctx.fieldVarAccess().id().IDENTIFIER().getText()); } public static Expression generateConstant(DecafParser.LiteralContext ctx) { diff --git a/src/main/java/de/maishai/StatementGenerator.java b/src/main/java/de/maishai/StatementGenerator.java index 206472d..fa98767 100644 --- a/src/main/java/de/maishai/StatementGenerator.java +++ b/src/main/java/de/maishai/StatementGenerator.java @@ -105,9 +105,12 @@ public class StatementGenerator extends DecafBaseVisitor> { Expression recipient = null; if (fieldIdContext.recipient() != null) { recipient = ExpressionGenerator.generateRecursiveOwnerChain(fieldIdContext.recipient(), null, isField); - return new FieldVarAccess(true, recipient, fieldIdContext.id().IDENTIFIER().getText()); + } - return new FieldVarAccess(isField, recipient, fieldIdContext.id().IDENTIFIER().getText()); + if (recipient == null) { + return new FieldVarAccess(isField, null, fieldIdContext.id().IDENTIFIER().getText()); + } + return new FieldVarAccess(true, recipient, fieldIdContext.id().IDENTIFIER().getText()); } @Override @@ -130,9 +133,11 @@ public class StatementGenerator extends DecafBaseVisitor> { if (ctx.methCall().recipient() != null) { List recipientList = ctx.methCall().recipient(); recursiveOwnerChain = ExpressionGenerator.generateRecursiveOwnerChain(recipientList, ctx.methCall().newCall() != null ? generateNew(ctx.methCall().newCall()) : null, isField); - return List.of(new MethodCall(new FieldVarAccess(true, recursiveOwnerChain, ctx.methCall().methName().id().IDENTIFIER().getText()), args)); } - return List.of(new MethodCall(new FieldVarAccess(isField, recursiveOwnerChain, ctx.methCall().methName().id().IDENTIFIER().getText()), args)); + if (recursiveOwnerChain == null) { + return List.of(new MethodCall(new FieldVarAccess(isField, null, ctx.methCall().methName().id().IDENTIFIER().getText()), args)); + } + return List.of(new MethodCall(new FieldVarAccess(true, recursiveOwnerChain, ctx.methCall().methName().id().IDENTIFIER().getText()), args)); } @Override