diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-10-30 20:40:22 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-10-30 20:40:22 +0000 |
| commit | a237af4bd31b03573105ab002d37bad247dcbfc7 (patch) | |
| tree | 8f2471d2363cd0707df495baf0af24911cfa93fe /src/main/java/org | |
| parent | bbc153ecf8a956ae09a1031c49339dcf76cc1576 (diff) | |
Fix handling of anonymous types
Diffstat (limited to 'src/main/java/org')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 6 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/types/ScalarType.java | 2 |
2 files changed, 6 insertions, 2 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 b0d347b..f1182e4 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -239,7 +239,11 @@ public class JavaReader { while (type.isAnonymous()) { type = type.getDeclaringClass(); } - return ScalarType.topLevel(erasure(typeOf(type)).getQualifiedName() + "_Anonymous_" + (anonymousClassCount++)); + ScalarType typeName = erasure(typeOf(type)); + while (typeName.outerType().isPresent()) { + typeName = typeName.outerType().get(); + } + return ScalarType.topLevel(typeName.getQualifiedName() + "_Anonymous_" + (anonymousClassCount++)); } private ITypeBinding findDeclaringClass(ASTNode node) { diff --git a/src/main/java/org/zwobble/couscous/types/ScalarType.java b/src/main/java/org/zwobble/couscous/types/ScalarType.java index 4a1bcc3..258e29c 100644 --- a/src/main/java/org/zwobble/couscous/types/ScalarType.java +++ b/src/main/java/org/zwobble/couscous/types/ScalarType.java @@ -52,7 +52,7 @@ public class ScalarType implements Type { return getLast(typeNames); } - public Optional<Type> outerType() { + public Optional<ScalarType> outerType() { if (typeNames.size() < 2) { return Optional.empty(); } else { |
