summaryrefslogtreecommitdiffstats
path: root/indexinglanguage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-10-17 09:47:14 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-10-17 09:47:14 +0200
commit6b8ad3500d95f6e0ba6330f44a1630fb7d349235 (patch)
tree3e572cb58c1ead4b705dabe873487752ea8dbfdc /indexinglanguage
parent6a87e097ffd13579ae1af6b1b3c5376381229cb9 (diff)
Make inputDataType final to ensure complete at construction time.
Diffstat (limited to 'indexinglanguage')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java7
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java13
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java6
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java9
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java9
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java16
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java14
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java23
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java10
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java16
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java8
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java15
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java8
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java2
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java2
19 files changed, 88 insertions, 78 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java
index 02c68bdf967..68b9e79e092 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java
@@ -46,8 +46,7 @@ public final class ArithmeticExpression extends CompositeExpression {
private final Expression rhs;
public ArithmeticExpression(Expression lhs, Operator op, Expression rhs) {
- super(null);
- setInputType(requiredInputType(lhs, rhs));
+ super(requiredInputType(lhs, rhs));
lhs.getClass(); // throws NullPointerException
op.getClass();
rhs.getClass();
@@ -82,7 +81,7 @@ public final class ArithmeticExpression extends CompositeExpression {
context.setValue(input).execute(rhs).getValue()));
}
- private DataType requiredInputType(Expression lhs, Expression rhs) {
+ private static DataType requiredInputType(Expression lhs, Expression rhs) {
DataType lhsType = lhs.requiredInputType();
DataType rhsType = rhs.requiredInputType();
if (lhsType == null) {
@@ -92,7 +91,7 @@ public final class ArithmeticExpression extends CompositeExpression {
return lhsType;
}
if (!lhsType.equals(rhsType)) {
- throw new VerificationException(this, "Operands require conflicting input types, " +
+ throw new VerificationException(ArithmeticExpression.class, "Operands require conflicting input types, " +
lhsType.getName() + " vs " + rhsType.getName() + ".");
}
return lhsType;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java
index be6b6db6a9a..f395446cb10 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java
@@ -18,12 +18,11 @@ import java.util.*;
public final class CatExpression extends ExpressionList<Expression> {
public CatExpression(Expression... lst) {
- super(Arrays.asList(lst));
- setInputType(resolveInputType());
+ this(Arrays.asList(lst));
}
public CatExpression(Collection<? extends Expression> lst) {
- super(lst);
+ super(lst, resolveInputType(lst));
}
@Override
@@ -63,17 +62,17 @@ public final class CatExpression extends ExpressionList<Expression> {
context.setValue(resolveOutputType(types));
}
- private DataType resolveInputType() {
+ private static DataType resolveInputType(Collection<? extends Expression> list) {
DataType prev = null;
- for (Expression exp : this) {
+ for (Expression exp : list) {
DataType next = exp.requiredInputType();
if (next == null) {
// ignore
} else if (prev == null) {
prev = next;
} else if (!prev.isAssignableFrom(next)) {
- throw new VerificationException(this, "Operands require conflicting input types, " +
- prev.getName() + " vs " + next.getName() + ".");
+ throw new VerificationException(CatExpression.class, "Operands require conflicting input types, " +
+ prev.getName() + " vs " + next.getName() + ".");
}
}
return prev;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
index 3d8da1a8b77..231446b9c62 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
@@ -17,14 +17,12 @@ import com.yahoo.vespa.objects.Selectable;
*/
public abstract class Expression extends Selectable {
- private DataType inputType;
+ private final DataType inputType;
protected Expression(DataType inputType) {
this.inputType = inputType;
}
- protected void setInputType(DataType inputType) {
- this.inputType = inputType;
- }
+
public final FieldValue execute(FieldValue val) {
return execute(new ExecutionContext().setValue(val));
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
index 6c83835559c..ca929773a4c 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionList.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.indexinglanguage.expressions;
+import com.yahoo.document.DataType;
import com.yahoo.document.DocumentType;
import com.yahoo.vespa.objects.ObjectOperation;
import com.yahoo.vespa.objects.ObjectPredicate;
@@ -17,12 +18,8 @@ public abstract class ExpressionList<T extends Expression> extends CompositeExpr
private final List<T> expressions = new LinkedList<T>();
- protected ExpressionList() {
- super(null);
- }
-
- protected ExpressionList(Iterable<? extends T> lst) {
- super(null);
+ protected ExpressionList(Iterable<? extends T> lst, DataType inputType) {
+ super(inputType);
for (T exp : lst) {
this.expressions.add(exp);
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java
index 16365e1264b..9e7f60aa3e3 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java
@@ -46,13 +46,12 @@ public final class IfThenExpression extends CompositeExpression {
}
public IfThenExpression(Expression lhs, Comparator cmp, Expression rhs, Expression ifTrue, Expression ifFalse) {
- super(null);
+ super(resolveInputType(lhs, rhs, ifTrue, ifFalse));
this.lhs = lhs;
this.cmp = cmp;
this.rhs = rhs;
this.ifTrue = ifTrue;
this.ifFalse = ifFalse;
- setInputType(resolveInputType());
}
public Expression getLeftHandSide() {
@@ -114,7 +113,7 @@ public final class IfThenExpression extends CompositeExpression {
select(ifFalse, predicate, operation);
}
- private DataType resolveInputType() {
+ private static DataType resolveInputType(Expression lhs, Expression rhs, Expression ifTrue, Expression ifFalse) {
DataType input = null;
input = resolveRequiredInputType(input, lhs.requiredInputType());
input = resolveRequiredInputType(input, rhs.requiredInputType());
@@ -174,7 +173,7 @@ public final class IfThenExpression extends CompositeExpression {
return ret;
}
- private DataType resolveRequiredInputType(DataType prev, DataType next) {
+ private static DataType resolveRequiredInputType(DataType prev, DataType next) {
if (next == null) {
return prev;
}
@@ -182,7 +181,7 @@ public final class IfThenExpression extends CompositeExpression {
return next;
}
if (!prev.equals(next)) {
- throw new VerificationException(this, "Operands require conflicting input types, " +
+ throw new VerificationException(IfThenExpression.class, "Operands require conflicting input types, " +
prev.getName() + " vs " + next.getName() + ".");
}
return prev;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java
index 275ca58d4db..3e9f6ad5032 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java
@@ -12,6 +12,7 @@ import com.yahoo.vespa.indexinglanguage.parser.ParseException;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
/**
@@ -20,18 +21,15 @@ import java.util.Iterator;
public final class ScriptExpression extends ExpressionList<StatementExpression> {
public ScriptExpression() {
- super();
- setInputType(resolveInputType());
+ this(Collections.emptyList());
}
public ScriptExpression(StatementExpression... lst) {
- super(Arrays.asList(lst));
- setInputType(resolveInputType());
+ this(Arrays.asList(lst));
}
public ScriptExpression(Collection<? extends StatementExpression> lst) {
- super(lst);
- setInputType(resolveInputType());
+ super(lst, resolveInputType(lst));
}
@Override
@@ -52,14 +50,14 @@ public final class ScriptExpression extends ExpressionList<StatementExpression>
context.setValue(input);
}
- private DataType resolveInputType() {
+ private static DataType resolveInputType(Collection<? extends StatementExpression> list) {
DataType prev = null;
- for (Expression exp : this) {
+ for (Expression exp : list) {
DataType next = exp.requiredInputType();
if (prev == null) {
prev = next;
} else if (next != null && !prev.isAssignableFrom(next)) {
- throw new VerificationException(this, "Statements require conflicting input types, " +
+ throw new VerificationException(ScriptExpression.class, "Statements require conflicting input types, " +
prev.getName() + " vs " + next.getName() + ".");
}
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
index eb6b5563584..422457d18fa 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
@@ -10,6 +10,7 @@ import com.yahoo.vespa.indexinglanguage.parser.IndexingInput;
import com.yahoo.vespa.indexinglanguage.parser.ParseException;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -21,12 +22,14 @@ public final class StatementExpression extends ExpressionList<Expression> {
public StatementExpression(Expression... lst) {
this(Arrays.asList(lst));
- setInputType(resolveInputType());
}
public StatementExpression(Iterable<Expression> lst) {
- super(filterList(lst));
- setInputType(resolveInputType());
+ this(filterList(lst), null);
+ }
+
+ private StatementExpression(Iterable<Expression> list, Object unused) {
+ super(list, resolveInputType(list));
}
@Override
@@ -43,12 +46,13 @@ public final class StatementExpression extends ExpressionList<Expression> {
}
}
- private DataType resolveInputType() {
- for (Expression exp : this) {
+ private static DataType resolveInputType(Iterable<Expression> lst) {
+ for (Expression exp : lst) {
DataType type = exp.requiredInputType();
if (type != null) {
return type;
}
+
type = exp.createdOutputType();
if (type != null) {
return null;
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java
index 32f337f500c..836600caa2b 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationException.java
@@ -6,16 +6,33 @@ package com.yahoo.vespa.indexinglanguage.expressions;
*/
public class VerificationException extends RuntimeException {
- private final Expression exp;
+ private final Class<?> type;
+ private final String exp;
public VerificationException(Expression exp, String msg) {
super(msg);
- this.exp = exp;
+ if (exp != null) {
+ this.type = exp.getClass();
+ this.exp = exp.toString();
+ } else {
+ this.type = null;
+ this.exp = "null";
+ }
}
- public Expression getExpression() {
+
+ public VerificationException(Class<?> exp, String msg) {
+ super(msg);
+ this.type = exp;
+ this.exp = exp.getName();
+ }
+
+ public String getExpression() {
return exp;
}
+ public Class<?> getExpressionType() {
+ return type;
+ }
@Override
public String toString() {
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
index f3cd40d71c5..58e80b5eb2b 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
@@ -53,7 +53,7 @@ public class ScriptTestCase {
exp.verify(input);
fail();
} catch (VerificationException e) {
- assertTrue(e.getExpression() instanceof ScriptExpression);
+ assertTrue(e.getExpressionType().equals(ScriptExpression.class));
assertEquals("Expected any input, got null.", e.getMessage());
}
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java
index c930f4e4d38..8b7ea5a141b 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticTestCase.java
@@ -82,7 +82,7 @@ public class ArithmeticTestCase {
@Test
public void requireThatOperandInputCanBeNull() {
SimpleExpression reqNull = new SimpleExpression();
- SimpleExpression reqInt = new SimpleExpression().setRequiredInput(DataType.INT);
+ SimpleExpression reqInt = new SimpleExpression(DataType.INT);
assertNull(newArithmetic(reqNull, Operator.ADD, reqNull).requiredInputType());
assertEquals(DataType.INT, newArithmetic(reqInt, Operator.ADD, reqNull).requiredInputType());
assertEquals(DataType.INT, newArithmetic(reqInt, Operator.ADD, reqInt).requiredInputType());
@@ -91,10 +91,10 @@ public class ArithmeticTestCase {
@Test
public void requireThatOperandsAreInputCompatible() {
- assertVerify(new SimpleExpression().setRequiredInput(DataType.INT), Operator.ADD,
- new SimpleExpression().setRequiredInput(DataType.INT), DataType.INT);
- assertVerifyThrows(new SimpleExpression().setRequiredInput(DataType.INT), Operator.ADD,
- new SimpleExpression().setRequiredInput(DataType.STRING), null,
+ assertVerify(new SimpleExpression(DataType.INT), Operator.ADD,
+ new SimpleExpression(DataType.INT), DataType.INT);
+ assertVerifyThrows(new SimpleExpression(DataType.INT), Operator.ADD,
+ new SimpleExpression(DataType.STRING), null,
"Operands require conflicting input types, int vs string.");
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java
index e83c18786bc..1b9c546fa19 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/CatTestCase.java
@@ -46,19 +46,19 @@ public class CatTestCase {
public void requireThatExpressionCanBeVerified() {
assertVerify(new SetValueExpression(new StringFieldValue("foo")),
new SetValueExpression(new StringFieldValue("bar")), null);
- assertVerify(new SimpleExpression().setRequiredInput(DataType.STRING),
- new SimpleExpression().setRequiredInput(DataType.STRING), DataType.STRING);
+ assertVerify(new SimpleExpression(DataType.STRING),
+ new SimpleExpression(DataType.STRING), DataType.STRING);
assertVerifyThrows(new SimpleExpression().setCreatedOutput(null),
new SimpleExpression().setCreatedOutput(DataType.STRING), null,
"Attempting to concatenate a null value ");
- assertVerifyThrows(new SimpleExpression().setRequiredInput(DataType.STRING),
- new SimpleExpression().setRequiredInput(DataType.INT), null,
+ assertVerifyThrows(new SimpleExpression(DataType.STRING),
+ new SimpleExpression(DataType.INT), null,
"Operands require conflicting input types, string vs int.");
- assertVerifyThrows(new SimpleExpression().setRequiredInput(DataType.STRING),
- new SimpleExpression().setRequiredInput(DataType.STRING), null,
+ assertVerifyThrows(new SimpleExpression(DataType.STRING),
+ new SimpleExpression(DataType.STRING), null,
"Expected string input, got null.");
- assertVerifyThrows(new SimpleExpression().setRequiredInput(DataType.STRING),
- new SimpleExpression().setRequiredInput(DataType.STRING), DataType.INT,
+ assertVerifyThrows(new SimpleExpression(DataType.STRING),
+ new SimpleExpression(DataType.STRING), DataType.INT,
"Expected string input, got int.");
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java
index c5ae67d1d47..902e091d17c 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ExpressionTestCase.java
@@ -62,7 +62,7 @@ public class ExpressionTestCase {
}
private static Expression newRequiredInput(DataType requiredInput) {
- return new SimpleExpression().setRequiredInput(requiredInput);
+ return new SimpleExpression(requiredInput);
}
private static Expression newCreatedOutput(DataType createdOutput, FieldValue actualOutput) {
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java
index 4d7f1cb02d1..95366111176 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenTestCase.java
@@ -263,10 +263,10 @@ public class IfThenTestCase {
}
private static Expression newRequiredInput(DataType lhs, Comparator cmp, DataType rhs, DataType ifTrue, DataType ifFalse) {
- return new IfThenExpression(new SimpleExpression().setRequiredInput(lhs), cmp,
- new SimpleExpression().setRequiredInput(rhs),
- new SimpleExpression().setRequiredInput(ifTrue),
- ifFalse != null ? new SimpleExpression().setRequiredInput(ifFalse) : null);
+ return new IfThenExpression(new SimpleExpression(lhs), cmp,
+ new SimpleExpression(rhs),
+ new SimpleExpression(ifTrue),
+ ifFalse != null ? new SimpleExpression(ifFalse) : null);
}
private static class MyFieldValue extends FieldValue {
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java
index 7c0b2aa98a4..810863478ec 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/OutputAssert.java
@@ -28,7 +28,7 @@ class OutputAssert {
assertVerify(new MyAdapter(null), DataType.INT, exp);
assertVerify(new MyAdapter(null), DataType.STRING, exp);
assertVerifyThrows(new MyAdapter(null), null, exp, "Expected any input, got null.");
- assertVerifyThrows(new MyAdapter(new VerificationException(null, "foo")), DataType.INT, exp, "foo");
+ assertVerifyThrows(new MyAdapter(new VerificationException((Expression) null, "foo")), DataType.INT, exp, "foo");
}
public static void assertVerify(FieldTypeAdapter adapter, DataType value, Expression exp) {
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java
index 66eb29796ad..85039260cb0 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarTestCase.java
@@ -68,7 +68,7 @@ public class SetVarTestCase {
new SetVarExpression("out").verify(ctx);
fail();
} catch (VerificationException e) {
- assertTrue(e.getExpression() instanceof SetVarExpression);
+ assertTrue(e.getExpressionType().equals(SetVarExpression.class));
assertEquals("Attempting to assign conflicting types to variable 'out', int vs string.", e.getMessage());
}
}
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java
index c771389ac1b..462189384c6 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java
@@ -18,6 +18,10 @@ final class SimpleExpression extends Expression {
public SimpleExpression() {
super(null);
}
+ public SimpleExpression(DataType requiredInput) {
+ super(requiredInput);
+ }
+
public SimpleExpression setExecuteValue(FieldValue executeValue) {
this.hasExecuteValue = true;
this.executeValue = executeValue;
@@ -30,11 +34,6 @@ final class SimpleExpression extends Expression {
return this;
}
- public SimpleExpression setRequiredInput(DataType requiredInput) {
- setInputType(requiredInput);
- return this;
- }
-
public SimpleExpression setCreatedOutput(DataType createdOutput) {
this.createdOutput = createdOutput;
return this;
@@ -92,16 +91,16 @@ final class SimpleExpression extends Expression {
}
public static SimpleExpression newOutput(DataType createdOutput) {
- return new SimpleExpression().setCreatedOutput(createdOutput)
+ return new SimpleExpression(null).setCreatedOutput(createdOutput)
.setVerifyValue(createdOutput);
}
public static SimpleExpression newRequired(DataType requiredInput) {
- return new SimpleExpression().setRequiredInput(requiredInput);
+ return new SimpleExpression(requiredInput);
}
public static SimpleExpression newConversion(DataType requiredInput, DataType createdOutput) {
- return new SimpleExpression().setRequiredInput(requiredInput)
+ return new SimpleExpression(requiredInput)
.setCreatedOutput(createdOutput)
.setExecuteValue(createdOutput.createFieldValue())
.setVerifyValue(createdOutput);
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java
index 2644ed5af7a..27e96c63702 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpressionTestCase.java
@@ -20,7 +20,7 @@ public class SimpleExpressionTestCase {
assertNull(exp.execute());
assertNull(exp.verify());
- assertEquals(DataType.INT, new SimpleExpression().setRequiredInput(DataType.INT).requiredInputType());
+ assertEquals(DataType.INT, new SimpleExpression(DataType.INT).requiredInputType());
assertEquals(DataType.INT, new SimpleExpression().setCreatedOutput(DataType.INT).createdOutputType());
assertEquals(DataType.INT, new SimpleExpression().setVerifyValue(DataType.INT).verify());
assertEquals(new IntegerFieldValue(69),
@@ -50,9 +50,9 @@ public class SimpleExpressionTestCase {
assertFalse(exp.equals(new SimpleExpression().setVerifyValue(DataType.STRING)));
assertEquals(exp, new SimpleExpression().setVerifyValue(DataType.INT));
- exp = new SimpleExpression().setRequiredInput(DataType.INT);
- assertFalse(exp.equals(new SimpleExpression().setRequiredInput(DataType.STRING)));
- assertEquals(exp, new SimpleExpression().setRequiredInput(DataType.INT));
+ exp = new SimpleExpression(DataType.INT);
+ assertFalse(exp.equals(new SimpleExpression(DataType.STRING)));
+ assertEquals(exp, new SimpleExpression(DataType.INT));
exp = new SimpleExpression().setCreatedOutput(DataType.INT);
assertFalse(exp.equals(new SimpleExpression().setCreatedOutput(DataType.STRING)));
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java
index 27466313fc6..bcec637e5e3 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/StatementTestCase.java
@@ -76,7 +76,7 @@ public class StatementTestCase {
@Test
public void requireThatRequiredInputIsNullIfAnyOutputIsCreatedFirst() {
assertNull(newStatement(new SimpleExpression().setCreatedOutput(DataType.INT),
- new SimpleExpression().setRequiredInput(DataType.INT)).requiredInputType());
+ new SimpleExpression(DataType.INT)).requiredInputType());
}
@Test
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java
index a22cc64e115..001f2408576 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/VerificationExceptionTestCase.java
@@ -14,7 +14,7 @@ public class VerificationExceptionTestCase {
public void requireThatAccessorsWork() {
Expression exp = new SimpleExpression();
VerificationException e = new VerificationException(exp, "foo");
- assertSame(exp, e.getExpression());
+ assertEquals(exp.toString(), e.getExpression());
assertEquals("foo", e.getMessage());
assertTrue(e.toString().contains(exp.toString()));
assertTrue(e.toString().contains(e.getMessage()));