aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java7
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java10
2 files changed, 10 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
index 11fa612..f114801 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
@@ -21,11 +21,9 @@ import static org.zwobble.couscous.frontends.java.JavaTypes.typeOf;
public class JavaExpressionReader {
private final JavaReader javaReader;
- private final ImmutableList.Builder<ClassNode> classes;
- JavaExpressionReader(JavaReader javaReader, ImmutableList.Builder<ClassNode> classes) {
+ JavaExpressionReader(JavaReader javaReader) {
this.javaReader = javaReader;
- this.classes = classes;
}
ExpressionNode readExpression(TypeName targetType, Expression expression) {
@@ -195,8 +193,7 @@ public class JavaExpressionReader {
if (constructor.getDeclaringClass().isAnonymous()) {
// TODO: generate anonymous class name
- TypeName anonymousClassName = TypeName.of("ANONYMOUS");
- classes.add(javaReader.readTypeDeclarationBody("ANONYMOUS", expression.getAnonymousClassDeclaration().bodyDeclarations()));
+ TypeName anonymousClassName = javaReader.readAnonymousClass(expression.getAnonymousClassDeclaration());
return constructorCall(anonymousClassName, arguments);
} else {
return constructorCall(typeOf(expression), arguments);
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
index 0eb5817..255cb9f 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
@@ -35,7 +35,13 @@ public class JavaReader {
return readTypeDeclarationBody(name, type.bodyDeclarations());
}
- ClassNode readTypeDeclarationBody(String name, List bodyDeclarations) {
+ TypeName readAnonymousClass(AnonymousClassDeclaration declaration) {
+ ClassNode classNode = readTypeDeclarationBody("ANONYMOUS", declaration.bodyDeclarations());
+ classes.add(classNode);
+ return classNode.getName();
+ }
+
+ private ClassNode readTypeDeclarationBody(String name, List bodyDeclarations) {
ClassNodeBuilder classBuilder = new ClassNodeBuilder(name);
readFields(ofType(bodyDeclarations, FieldDeclaration.class), classBuilder);
readMethods(ofType(bodyDeclarations, MethodDeclaration.class), classBuilder);
@@ -83,7 +89,7 @@ public class JavaReader {
Optional<TypeName> returnType = method.getReturnType2() == null
? Optional.empty()
: Optional.of(typeOf(method.getReturnType2()));
- JavaStatementReader statementReader = new JavaStatementReader(new JavaExpressionReader(this, classes), returnType);
+ JavaStatementReader statementReader = new JavaStatementReader(new JavaExpressionReader(this), returnType);
for (Object statement : method.getBody().statements()) {
for (StatementNode intermediateStatement : statementReader.readStatement((Statement)statement)) {
builder.statement(intermediateStatement);