targets: fail fast on duplicate values in target field slices

Этот коммит содержится в:
Yurii Soldak 2022-08-26 21:37:56 +02:00 коммит произвёл Ron Evans
родитель b8a6a1f62b
коммит 55573c6729

Просмотреть файл

@ -88,8 +88,17 @@ func (spec *TargetSpec) overrideProperties(child *TargetSpec) {
if !src.IsNil() {
dst.Set(src)
}
case reflect.Slice: // for slices, append the field
case reflect.Slice: // for slices, append the field and check for duplicates
dst.Set(reflect.AppendSlice(dst, src))
for i := 0; i < dst.Len(); i++ {
v := dst.Index(i).String()
for j := i + 1; j < dst.Len(); j++ {
w := dst.Index(j).String()
if v == w {
panic("duplicate value '" + v + "' in field : " + field.Name)
}
}
}
default:
panic("unknown field type : " + kind.String())
}