diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-07-15 20:41:09 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-07-15 20:41:09 +0100 |
| commit | d51fce58306742dd574b637337aefbf7daf92787 (patch) | |
| tree | ad70037af0e3db86af0826e7ef79be402bd91fed /src/main/java/org/zwobble/couscous/values | |
| parent | 39556c29e0913bdb4e597d4fc629fa101c555959 (diff) | |
Handle char literals properly
Diffstat (limited to 'src/main/java/org/zwobble/couscous/values')
3 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/values/CharValue.java b/src/main/java/org/zwobble/couscous/values/CharValue.java new file mode 100644 index 0000000..3ce252e --- /dev/null +++ b/src/main/java/org/zwobble/couscous/values/CharValue.java @@ -0,0 +1,45 @@ +package org.zwobble.couscous.values; + +import org.zwobble.couscous.types.Type; +import org.zwobble.couscous.types.Types; + +public class CharValue implements PrimitiveValue { + private final char value; + + public CharValue(char value) { + this.value = value; + } + + @Override + public <T> T accept(Visitor<T> visitor) { + return visitor.visitChar(value); + } + + @Override + public Type getType() { + return Types.CHAR; + } + + @Override + public String toString() { + return "CharValue(" + + "value=" + value + + ')'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + CharValue charValue = (CharValue) o; + + return value == charValue.value; + + } + + @Override + public int hashCode() { + return (int) value; + } +} diff --git a/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java b/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java index 2fb4137..a970e5f 100644 --- a/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java +++ b/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java @@ -9,6 +9,7 @@ public interface PrimitiveValue { interface Visitor<T> { T visitInteger(int value); + T visitChar(char value); T visitString(String value); T visitBoolean(boolean value); T visitUnit(); diff --git a/src/main/java/org/zwobble/couscous/values/PrimitiveValues.java b/src/main/java/org/zwobble/couscous/values/PrimitiveValues.java index fbec8ed..37e22ca 100644 --- a/src/main/java/org/zwobble/couscous/values/PrimitiveValues.java +++ b/src/main/java/org/zwobble/couscous/values/PrimitiveValues.java @@ -14,6 +14,10 @@ public class PrimitiveValues { public static PrimitiveValue value(int value) { return new IntegerValue(value); } + + public static PrimitiveValue value(char value) { + return new CharValue(value); + } public static PrimitiveValue value(boolean value) { return value ? TRUE : FALSE; |
