diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-10-30 20:25:05 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-10-30 20:25:05 +0000 |
| commit | fee1878340fe2055f9d5b4c52eb2993c06c25f25 (patch) | |
| tree | fb827034b5a4a2174b08803120c295f5affd764f /src/main/java/org/zwobble/couscous/transforms | |
| parent | fd5dde9224680d46dd7081d051f1320194ff59ea (diff) | |
Store inner classes in ScalarType
Diffstat (limited to 'src/main/java/org/zwobble/couscous/transforms')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/transforms/HoistNestedTypes.java | 18 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/transforms/SplitStaticsFromInterface.java | 2 |
2 files changed, 8 insertions, 12 deletions
diff --git a/src/main/java/org/zwobble/couscous/transforms/HoistNestedTypes.java b/src/main/java/org/zwobble/couscous/transforms/HoistNestedTypes.java index ae4af14..6c40af9 100644 --- a/src/main/java/org/zwobble/couscous/transforms/HoistNestedTypes.java +++ b/src/main/java/org/zwobble/couscous/transforms/HoistNestedTypes.java @@ -12,7 +12,6 @@ import org.zwobble.couscous.util.ExtraSets; import java.util.List; import java.util.Optional; import java.util.Set; -import java.util.regex.Pattern; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; import static org.zwobble.couscous.ast.ReturnNode.returns; @@ -81,25 +80,22 @@ public class HoistNestedTypes { } } - private static final Pattern INNER_TYPE_QUALIFIER_REGEX = Pattern.compile(".*\\.[A-Z][^.]*$"); - private boolean isInnerType(Type type) { - // TODO: implement separate type classes for top-level and inner types rather than using this heuristic - return tryCast(ScalarType.class, type) - .flatMap(scalarType -> scalarType.getQualifier()) - .map(qualifier -> INNER_TYPE_QUALIFIER_REGEX.matcher(qualifier).matches()) + .map(scalarType -> scalarType.outerType().isPresent()) .orElse(false); } private Type outerType(ScalarType type) { - // TODO: implement separate type classes for top-level and inner types - - return ScalarType.of(type.getQualifier().get()); + return type.outerType().get(); } private static Type hoistedTypeName(ScalarType type) { - return ScalarType.of(type.getQualifier().get() + "__" + type.getSimpleName()); + List<String> typeNames = type.getTypeNames(); + return new ScalarType( + type.getPackage(), + cons(typeNames.get(0) + "__" + typeNames.get(1), typeNames.subList(2, typeNames.size())) + ); } private HoistResult hoistInnerTypes(TypeNode declaration) { diff --git a/src/main/java/org/zwobble/couscous/transforms/SplitStaticsFromInterface.java b/src/main/java/org/zwobble/couscous/transforms/SplitStaticsFromInterface.java index 3af4042..f8623fc 100644 --- a/src/main/java/org/zwobble/couscous/transforms/SplitStaticsFromInterface.java +++ b/src/main/java/org/zwobble/couscous/transforms/SplitStaticsFromInterface.java @@ -57,7 +57,7 @@ public class SplitStaticsFromInterface { } private static ScalarType staticTypeFor(ScalarType name) { - return ScalarType.of(name.getQualifiedName() + "_static"); + return ScalarType.topLevel(name.getQualifiedName() + "_static"); } private static boolean isSplittable(TypeNode typeNode) { |
