diff options
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast')
3 files changed, 26 insertions, 9 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassName.java b/src/main/java/org/zwobble/couscous/ast/ClassName.java new file mode 100644 index 0000000..7358cf7 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/ast/ClassName.java @@ -0,0 +1,18 @@ +package org.zwobble.couscous.ast; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Value; + +@Value +@AllArgsConstructor(access=AccessLevel.PRIVATE) +public class ClassName { + public static ClassName of(String qualifiedName) { + return new ClassName( + qualifiedName, + qualifiedName.substring(qualifiedName.lastIndexOf(".") + 1)); + } + + String qualifiedName; + String simpleName; +} diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNode.java b/src/main/java/org/zwobble/couscous/ast/ClassNode.java index 77480b5..f1cbcc2 100644 --- a/src/main/java/org/zwobble/couscous/ast/ClassNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ClassNode.java @@ -30,17 +30,16 @@ public class ClassNode implements Node { } public ClassNode build() { - return new ClassNode(name, methods.build()); + return new ClassNode(ClassName.of(name), methods.build()); } } - String name; + ClassName name; @Singular List<MethodNode> methods; - public String getLocalName() { - // TODO Stronger notion of class names? Should look up the terminology - return name.substring(name.lastIndexOf(".") + 1); + public String getSimpleName() { + return name.getSimpleName(); } @Override diff --git a/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java index 96e2e4c..235566f 100644 --- a/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java +++ b/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java @@ -9,17 +9,17 @@ import static java.util.Arrays.asList; import lombok.Value; -@Value +@Value(staticConstructor="staticMethodCall") public class StaticMethodCallNode implements ExpressionNode { public static StaticMethodCallNode staticMethodCall(String className, String methodName, ExpressionNode... arguments) { - return new StaticMethodCallNode(className, methodName, asList(arguments)); + return staticMethodCall(className, methodName, asList(arguments)); } public static StaticMethodCallNode staticMethodCall(String className, String methodName, List<ExpressionNode> arguments) { - return new StaticMethodCallNode(className, methodName, arguments); + return staticMethodCall(ClassName.of(className), methodName, arguments); } - String className; + ClassName className; String methodName; List<ExpressionNode> arguments; |
