aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/values/ArrayInterpreterValue.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-31 12:08:02 +0100
committerMichael Williamson <mike@zwobble.org>2016-03-31 12:08:02 +0100
commit6bb8fe3f983cd0a2be76239df2124af633f0e05c (patch)
tree8ae88b29f16ccbc0a408fa33f625b607c9fc32cc /src/main/java/org/zwobble/couscous/interpreter/values/ArrayInterpreterValue.java
parent2247cff5b5361a8124d4c261a1edb1852bd5f08f (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.java50
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);
+ }
+}