aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/LiteralNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/LiteralNode.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/LiteralNode.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/LiteralNode.java b/src/main/java/org/zwobble/couscous/ast/LiteralNode.java
index ed2aaf0..5753650 100644
--- a/src/main/java/org/zwobble/couscous/ast/LiteralNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/LiteralNode.java
@@ -1,6 +1,7 @@
package org.zwobble.couscous.ast;
import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper;
+import org.zwobble.couscous.ast.visitors.NodeTransformer;
import org.zwobble.couscous.values.*;
import java.util.function.Function;
@@ -58,6 +59,18 @@ public class LiteralNode implements ExpressionNode {
return this;
}
+ public ExpressionNode transform(NodeTransformer transformer) {
+ return new LiteralNode(transformValue(transformer), transformer.transform(type));
+ }
+
+ private PrimitiveValue transformValue(NodeTransformer transformer) {
+ if (value instanceof TypeValue) {
+ return new TypeValue(transformer.transform(((TypeValue)value).getValue()));
+ } else {
+ return value;
+ }
+ }
+
@Override
public String toString() {
return "LiteralNode(value=" + value + ", type=" + type + ")";