diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-01 22:55:14 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-01 22:55:14 +0000 |
| commit | 80284eefe7098c42a0b4736c45f622116fb543e0 (patch) | |
| tree | b5c3fe2aebeaeedfd145bf526403800f231d29b6 /src | |
| parent | 3f1af457c1635778554d0388fdb7b77bd43e0241 (diff) | |
Don't make assumptions about captures of inner classes
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 8 |
1 files changed, 4 insertions, 4 deletions
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 dd83b8c..6772fdc 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -60,7 +60,7 @@ public class JavaReader { private final ImmutableList.Builder<TypeNode> classes; private int anonymousClassCount = 0; private final Scope topScope = Scope.create(); - private final Map<TypeName, TypeName> nestedClasses = new HashMap<>(); + private final Map<TypeName, List<ReferenceNode>> nestedClasses = new HashMap<>(); private JavaReader() { classes = ImmutableList.builder(); @@ -72,9 +72,9 @@ public class JavaReader { NodeTransformer transformer = NodeTransformer.builder() .transformExpression(expression -> tryCast(ConstructorCallNode.class, expression) - .flatMap(call -> lookup(nestedClasses, call.getType()).map(outerType -> + .flatMap(call -> lookup(nestedClasses, call.getType()).map(captures -> // TODO: handle existing arguments - new ConstructorCallNode(call.getType(), list(thisReference(outerType)))))) + new ConstructorCallNode(call.getType(), captures)))) .build(); return eagerMap(classes, classNode -> classNode.transform(transformer)); } @@ -296,7 +296,7 @@ public class JavaReader { .filter(node -> !Modifier.isStatic(typeDeclaration.getModifiers())) .<TypeNode>map(node -> { GeneratedClosure closure = classWithCapture(scope, node); - nestedClasses.put(node.getName(), outerType); + nestedClasses.put(node.getName(), closure.getCaptures()); return closure.getClassNode(); }) .orElse(typeNode); |
