summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-03-07 11:30:00 +0000
committerArne Juul <arnej@yahooinc.com>2023-03-07 11:30:00 +0000
commit6d4608361bfbb12cee3e0905d8e6763605ce7abf (patch)
treef88c27fa12d4bd9cc3c9c147e0c6a5f50a6a9b8e /searchlib
parent6a3858bbff93e2075999aebafdc26105f8f21b4b (diff)
ensure consistent function type if addFunctionTypeSerialization() is called multiple times
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
index e2fffd824b9..c157f44be31 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
@@ -104,7 +104,11 @@ public class SerializationContext extends FunctionReferenceContext {
/** Adds the serialization of the return type of a function */
public void addFunctionTypeSerialization(String functionName, TensorType type) {
if (type.rank() == 0) return; // no explicit type implies scalar (aka rank 0 tensor)
- serializedFunctions.put(wrapInRankingExpression(functionName) + ".type", type.toString());
+ String key = wrapInRankingExpression(functionName) + ".type";
+ var old = serializedFunctions.put(key, type.toString());
+ if (old != null && !old.equals(type.toString())) {
+ throw new IllegalArgumentException("conflicting values for " + key + ": " + old + " != " + type.toString());
+ }
}
@Override