aboutsummaryrefslogtreecommitdiffstats
path: root/model-evaluation
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-03-07 11:32:41 +0000
committerArne Juul <arnej@yahooinc.com>2023-03-07 11:32:41 +0000
commit1197f63fe1a32b3e17493c9387527ac1c4e40cff (patch)
tree7274ab32457e6dd06c9d8077a4eadd8e4f69089a /model-evaluation
parent685391324e5fffc450e8022ce39569b5e584e3d0 (diff)
pick up and remember declared returned types for functions
Diffstat (limited to 'model-evaluation')
-rw-r--r--model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java
index 8c520e87001..76869932a3e 100644
--- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java
+++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java
@@ -129,11 +129,15 @@ public class RankProfilesConfigImporter {
referencedFunctions.put(argReference, function);
}
else if (returnType.isPresent()) { // Return type always follows the function in properties
- ExpressionFunction function = referencedFunctions.get(returnType.get());
- function = function.withReturnType(TensorType.fromSpec(property.value()));
- if (returnType.get().isFree())
- functions.put(returnType.get(), function);
- referencedFunctions.put(returnType.get(), function);
+ FunctionReference functionRef = returnType.get();
+ ExpressionFunction function = referencedFunctions.get(functionRef);
+ TensorType type = TensorType.fromSpec(property.value());
+ function = function.withReturnType(type);
+ if (functionRef.isFree())
+ functions.put(functionRef, function);
+ referencedFunctions.put(functionRef, function);
+ declaredTypes.put(function.getName(), type); // "foo"
+ declaredTypes.put(functionRef.serialForm(), type); // "rankingExpression(foo)"
}
else if (property.name().equals("vespa.rank.firstphase")) { // Include in addition to functions
firstPhase = new ExpressionFunction("firstphase", new ArrayList<>(),