aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-06 10:55:08 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-06 10:55:08 +0100
commita7669795d1d58e4962f16272cb5e92783cf01c64 (patch)
tree770b1810be9a3e15172be151359d85ff7240a4f4 /src/main/java/org/zwobble/couscous/ast
parent92d6bef1c9df704a22a01a9e61653681e95ec073 (diff)
Create notion of ClassName
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassName.java18
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNode.java9
-rw-r--r--src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java8
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;