From 27ffd2d94482ccdcd10acbb1111ce0a0ddae6c01 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 5 Oct 2015 18:10:32 +0100 Subject: Add types to expression nodes --- src/main/java/org/zwobble/couscous/values/BooleanValue.java | 9 +++++++++ src/main/java/org/zwobble/couscous/values/IntegerValue.java | 5 +++++ src/main/java/org/zwobble/couscous/values/PrimitiveValue.java | 1 + src/main/java/org/zwobble/couscous/values/StringValue.java | 5 +++++ src/main/java/org/zwobble/couscous/values/UnitValue.java | 7 +++++++ 5 files changed, 27 insertions(+) (limited to 'src/main/java/org/zwobble/couscous/values') diff --git a/src/main/java/org/zwobble/couscous/values/BooleanValue.java b/src/main/java/org/zwobble/couscous/values/BooleanValue.java index e05c246..76f828e 100644 --- a/src/main/java/org/zwobble/couscous/values/BooleanValue.java +++ b/src/main/java/org/zwobble/couscous/values/BooleanValue.java @@ -1,11 +1,15 @@ package org.zwobble.couscous.values; +import static org.zwobble.couscous.values.TypeReference.typeRef; + import lombok.AccessLevel; import lombok.Getter; import lombok.Value; @Value public class BooleanValue implements PrimitiveValue { + public static final TypeReference REF = typeRef("java.lang.Boolean"); + @Getter(value = AccessLevel.NONE) boolean value; @@ -17,4 +21,9 @@ public class BooleanValue implements PrimitiveValue { public T accept(PrimitiveValueVisitor visitor) { return visitor.visit(this); } + + @Override + public TypeReference getType() { + return REF; + } } diff --git a/src/main/java/org/zwobble/couscous/values/IntegerValue.java b/src/main/java/org/zwobble/couscous/values/IntegerValue.java index 71c7a41..5c272a0 100644 --- a/src/main/java/org/zwobble/couscous/values/IntegerValue.java +++ b/src/main/java/org/zwobble/couscous/values/IntegerValue.java @@ -14,4 +14,9 @@ public class IntegerValue implements PrimitiveValue { public T accept(PrimitiveValueVisitor visitor) { return visitor.visit(this); } + + @Override + public TypeReference getType() { + return REF; + } } diff --git a/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java b/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java index 2cfe40a..56da066 100644 --- a/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java +++ b/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java @@ -2,4 +2,5 @@ package org.zwobble.couscous.values; public interface PrimitiveValue { T accept(PrimitiveValueVisitor visitor); + TypeReference getType(); } diff --git a/src/main/java/org/zwobble/couscous/values/StringValue.java b/src/main/java/org/zwobble/couscous/values/StringValue.java index 256d6d1..ba0b1b5 100644 --- a/src/main/java/org/zwobble/couscous/values/StringValue.java +++ b/src/main/java/org/zwobble/couscous/values/StringValue.java @@ -14,4 +14,9 @@ public class StringValue implements PrimitiveValue { public T accept(PrimitiveValueVisitor visitor) { return visitor.visit(this); } + + @Override + public TypeReference getType() { + return REF; + } } diff --git a/src/main/java/org/zwobble/couscous/values/UnitValue.java b/src/main/java/org/zwobble/couscous/values/UnitValue.java index 14bf327..b4f6974 100644 --- a/src/main/java/org/zwobble/couscous/values/UnitValue.java +++ b/src/main/java/org/zwobble/couscous/values/UnitValue.java @@ -1,6 +1,8 @@ package org.zwobble.couscous.values; public class UnitValue implements PrimitiveValue { + public static final TypeReference REF = TypeReference.typeRef("org.zwobble.couscous.runtime.Unit"); + static final UnitValue UNIT = new UnitValue(); private UnitValue() { @@ -10,4 +12,9 @@ public class UnitValue implements PrimitiveValue { public T accept(PrimitiveValueVisitor visitor) { return visitor.visit(this); } + + @Override + public TypeReference getType() { + return REF; + } } -- cgit v1.2.3