diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-22 09:46:30 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-22 09:46:30 +0000 |
| commit | f4f6b1d968e3679e81a570a3336026009df6a7d5 (patch) | |
| tree | 7ec55a4a5151cb41b46cc73bcd4d4678f4e827f1 | |
| parent | 582c08939db030e84a47325e2d36197f9ef433a9 (diff) | |
Read anonymous classes in JavaReader
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java | 7 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 10 |
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); |
