diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-09-18 10:01:08 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-10-16 12:31:50 +0200 |
commit | a957297facc0f6ed9e613245ffe2d216168039b2 (patch) | |
tree | 943837f1d055671d57389c209e8cd9948bbbc2e1 /indexinglanguage/src | |
parent | 2cc64e617ff11f763d9fa165b37d19df0ced4114 (diff) |
Compute the type generated by the Expression once.
Diffstat (limited to 'indexinglanguage/src')
-rw-r--r-- | indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java | 16 |
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(); |