aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-03-09 11:50:42 +0000
committerArne H Juul <arnej@yahooinc.com>2022-03-09 13:58:20 +0000
commit7ce318cae722f791eade72bc3106143d251f8bbc (patch)
tree010734120a3ebbdd41316c419d24a0b58c257e38
parenta36eb374409dc7b1b0d75936907d5a77d9a6a3eb (diff)
compatible error message
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java
index 3e10f425a8c..e0a3192c302 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/parser/ConvertParsedTypes.java
@@ -99,6 +99,19 @@ public class ConvertParsedTypes {
}
for (String inherit : struct.getInherited()) {
var parent = findStructFromSchemas(inherit, doc);
+ // ensure a nice, compatible exception message
+ for (var field : toFill.getFields()) {
+ if (parent.hasField(field)) {
+ for (var base : parent.getInheritedTypes()) {
+ if (base.hasField(field)) {
+ parent = base;
+ }
+ }
+ throw new IllegalArgumentException
+ ("In document " + doc.name() + ": struct " + struct.name() +
+ " cannot inherit from " + parent.getName() + " and redeclare field " + field.getName());
+ }
+ }
toFill.inherit(parent);
}
}