aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-11 20:33:14 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-11 20:33:14 +0000
commitd403acf6e1266e73a4ed43b63032be04da2c71d8 (patch)
tree271e87e5b455a25fb1777d2252159a85e50b61a7 /src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java
parent6569df211d93ced13b2d31e2f93263abbadd660a (diff)
Change FieldAccessNode to support static fields
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java35
1 files changed, 28 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java b/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java
index d05a06a..a949630 100644
--- a/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java
@@ -4,28 +4,49 @@ import org.zwobble.couscous.ast.visitors.AssignableExpressionNodeVisitor;
import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper;
import org.zwobble.couscous.ast.visitors.NodeTransformer;
+import static org.zwobble.couscous.ast.InstanceReceiver.instanceReceiver;
+import static org.zwobble.couscous.ast.StaticReceiver.staticReceiver;
+
public class FieldAccessNode implements AssignableExpressionNode {
public static FieldAccessNode fieldAccess(
ExpressionNode left,
String fieldName,
- TypeName type) {
+ TypeName type)
+ {
+ return fieldAccess(instanceReceiver(left), fieldName, type);
+ }
+
+ public static FieldAccessNode fieldAccess(
+ TypeName left,
+ String fieldName,
+ TypeName type)
+ {
+ return fieldAccess(staticReceiver(left), fieldName, type);
+ }
+
+ public static FieldAccessNode fieldAccess(
+ Receiver left,
+ String fieldName,
+ TypeName type)
+ {
return new FieldAccessNode(left, fieldName, type);
}
- private final ExpressionNode left;
+ private final Receiver left;
private final String fieldName;
private final TypeName type;
public FieldAccessNode(
- ExpressionNode left,
- String fieldName,
- TypeName type) {
+ Receiver left,
+ String fieldName,
+ TypeName type)
+ {
this.left = left;
this.fieldName = fieldName;
this.type = type;
}
- public ExpressionNode getLeft() {
+ public Receiver getLeft() {
return left;
}
@@ -45,7 +66,7 @@ public class FieldAccessNode implements AssignableExpressionNode {
@Override
public ExpressionNode transform(NodeTransformer transformer) {
return new FieldAccessNode(
- transformer.transformExpression(left),
+ transformer.transformReceiver(left),
fieldName,
transformer.transform(type));
}