diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-31 12:08:02 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-31 12:08:02 +0100 |
| commit | 6bb8fe3f983cd0a2be76239df2124af633f0e05c (patch) | |
| tree | 8ae88b29f16ccbc0a408fa33f625b607c9fc32cc /src/main/java/org/zwobble/couscous/interpreter/values/ArrayInterpreterValue.java | |
| parent | 2247cff5b5361a8124d4c261a1edb1852bd5f08f (diff) | |
Add evaluation of arrays to interpreter
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values/ArrayInterpreterValue.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/interpreter/values/ArrayInterpreterValue.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/ArrayInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/ArrayInterpreterValue.java new file mode 100644 index 0000000..3a1de58 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/interpreter/values/ArrayInterpreterValue.java @@ -0,0 +1,50 @@ +package org.zwobble.couscous.interpreter.values; + +import org.zwobble.couscous.interpreter.errors.NoSuchField; +import org.zwobble.couscous.interpreter.types.InterpreterType; +import org.zwobble.couscous.interpreter.types.IntrinsicInterpreterType; +import org.zwobble.couscous.types.Type; +import org.zwobble.couscous.types.Types; +import org.zwobble.couscous.values.PrimitiveValue; + +import java.util.List; +import java.util.Optional; + +public class ArrayInterpreterValue implements InterpreterValue { + private final Type elementType; + private final List<InterpreterValue> elements; + + public ArrayInterpreterValue(Type elementType, List<InterpreterValue> elements) { + this.elementType = elementType; + this.elements = elements; + } + + public Type getElementType() { + return elementType; + } + + public List<InterpreterValue> getElements() { + return elements; + } + + @Override + public InterpreterType getType() { + return IntrinsicInterpreterType.builder(ArrayInterpreterValue.class, Types.array(elementType)) + .build(); + } + + @Override + public Optional<PrimitiveValue> toPrimitiveValue() { + return Optional.empty(); + } + + @Override + public InterpreterValue getField(String fieldName) { + throw new NoSuchField(fieldName); + } + + @Override + public void setField(String fieldName, InterpreterValue value) { + throw new NoSuchField(fieldName); + } +} |
