diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-06 10:55:08 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-06 10:55:08 +0100 |
| commit | a7669795d1d58e4962f16272cb5e92783cf01c64 (patch) | |
| tree | 770b1810be9a3e15172be151359d85ff7240a4f4 /src/main/java/org/zwobble/couscous/ast | |
| parent | 92d6bef1c9df704a22a01a9e61653681e95ec073 (diff) | |
Create notion of ClassName
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; |
