summaryrefslogtreecommitdiffstats
path: root/indexinglanguage
diff options
context:
space:
mode:
Diffstat (limited to 'indexinglanguage')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java16
1 files changed, 16 insertions, 0 deletions
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 bcf655fd218..4843caaccf7 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
@@ -19,16 +19,21 @@ import java.util.Iterator;
*/
public class ScriptExpression extends ExpressionList<StatementExpression> {
+ private final DataType inputType;
+
public ScriptExpression() {
super();
+ inputType = resolveInputTypeAndcatch();
}
public ScriptExpression(StatementExpression... lst) {
super(Arrays.asList(lst));
+ inputType = resolveInputTypeAndcatch();
}
public ScriptExpression(Collection<? extends StatementExpression> lst) {
super(lst);
+ inputType = resolveInputTypeAndcatch();
}
@Override
@@ -51,6 +56,17 @@ public class ScriptExpression extends ExpressionList<StatementExpression> {
@Override
public DataType requiredInputType() {
+ return inputType != null ? inputType : resolveInputType();
+ }
+
+ private DataType resolveInputTypeAndcatch() {
+ try {
+ return resolveInputType();
+ } catch (VerificationException e) {
+ return null;
+ }
+ }
+ private DataType resolveInputType() {
DataType prev = null;
for (Expression exp : this) {
DataType next = exp.requiredInputType();