operator-index.go: dict item access by generic keys implemented

This commit is contained in:
Celestino Amoroso 2024-06-17 09:05:23 +02:00
parent d066344af8
commit d6b4c79736

View File

@ -113,6 +113,16 @@ func evalIndex(ctx ExprContext, self *term) (v any, err error) {
default:
err = self.errIncompatibleTypes(leftValue, rightValue)
}
} else if IsDict(leftValue) {
var ok bool
var indexValue any
d := leftValue.(*DictType)
if indexValue, err = verifyKey(indexTerm, indexList); err == nil {
if v, ok = (*d)[indexValue]; !ok {
err = indexTerm.Errorf("key %v does not belong to the dictionary", rightValue)
}
}
}
return
}