Upgrade dependent version: github.com/open-policy-agent/opa (#5315)
Upgrade dependent version: github.com/open-policy-agent/opa v0.18.0 -> v0.45.0 Signed-off-by: hongzhouzi <hongzhouzi@kubesphere.io> Signed-off-by: hongzhouzi <hongzhouzi@kubesphere.io>
This commit is contained in:
53
vendor/github.com/open-policy-agent/opa/topdown/bindings.go
generated
vendored
53
vendor/github.com/open-policy-agent/opa/topdown/bindings.go
generated
vendored
@@ -12,9 +12,8 @@ import (
|
||||
)
|
||||
|
||||
type undo struct {
|
||||
k *ast.Term
|
||||
u *bindings
|
||||
next *undo
|
||||
k *ast.Term
|
||||
u *bindings
|
||||
}
|
||||
|
||||
func (u *undo) Undo() {
|
||||
@@ -27,7 +26,6 @@ func (u *undo) Undo() {
|
||||
return
|
||||
}
|
||||
u.u.delete(u.k)
|
||||
u.next.Undo()
|
||||
}
|
||||
|
||||
type bindings struct {
|
||||
@@ -88,13 +86,16 @@ func (u *bindings) plugNamespaced(a *ast.Term, caller *bindings) *ast.Term {
|
||||
return next.plugNamespaced(b, caller)
|
||||
}
|
||||
return u.namespaceVar(b, caller)
|
||||
case ast.Array:
|
||||
cpy := *a
|
||||
arr := make(ast.Array, len(v))
|
||||
for i := 0; i < len(arr); i++ {
|
||||
arr[i] = u.plugNamespaced(v[i], caller)
|
||||
case *ast.Array:
|
||||
if a.IsGround() {
|
||||
return a
|
||||
}
|
||||
cpy.Value = arr
|
||||
cpy := *a
|
||||
arr := make([]*ast.Term, v.Len())
|
||||
for i := 0; i < len(arr); i++ {
|
||||
arr[i] = u.plugNamespaced(v.Elem(i), caller)
|
||||
}
|
||||
cpy.Value = ast.NewArray(arr...)
|
||||
return &cpy
|
||||
case ast.Object:
|
||||
if a.IsGround() {
|
||||
@@ -106,6 +107,9 @@ func (u *bindings) plugNamespaced(a *ast.Term, caller *bindings) *ast.Term {
|
||||
})
|
||||
return &cpy
|
||||
case ast.Set:
|
||||
if a.IsGround() {
|
||||
return a
|
||||
}
|
||||
cpy := *a
|
||||
cpy.Value, _ = v.Map(func(x *ast.Term) (*ast.Term, error) {
|
||||
return u.plugNamespaced(x, caller), nil
|
||||
@@ -123,19 +127,20 @@ func (u *bindings) plugNamespaced(a *ast.Term, caller *bindings) *ast.Term {
|
||||
return a
|
||||
}
|
||||
|
||||
func (u *bindings) bind(a *ast.Term, b *ast.Term, other *bindings) *undo {
|
||||
func (u *bindings) bind(a *ast.Term, b *ast.Term, other *bindings, und *undo) {
|
||||
u.values.Put(a, value{
|
||||
u: other,
|
||||
v: b,
|
||||
})
|
||||
return &undo{a, u, nil}
|
||||
und.k = a
|
||||
und.u = u
|
||||
}
|
||||
|
||||
func (u *bindings) apply(a *ast.Term) (*ast.Term, *bindings) {
|
||||
// Early exit for non-var terms. Only vars are bound in the binding list,
|
||||
// so the lookup below will always fail for non-var terms. In some cases,
|
||||
// the lookup may be expensive as it has to hash the term (which for large
|
||||
// inputs can be costly.)
|
||||
// inputs can be costly).
|
||||
_, ok := a.Value.(ast.Var)
|
||||
if !ok {
|
||||
return a, u
|
||||
@@ -242,13 +247,16 @@ func (vis namespacingVisitor) namespaceTerm(a *ast.Term) *ast.Term {
|
||||
switch v := a.Value.(type) {
|
||||
case ast.Var:
|
||||
return vis.b.namespaceVar(a, vis.caller)
|
||||
case ast.Array:
|
||||
cpy := *a
|
||||
arr := make(ast.Array, len(v))
|
||||
for i := 0; i < len(arr); i++ {
|
||||
arr[i] = vis.namespaceTerm(v[i])
|
||||
case *ast.Array:
|
||||
if a.IsGround() {
|
||||
return a
|
||||
}
|
||||
cpy.Value = arr
|
||||
cpy := *a
|
||||
arr := make([]*ast.Term, v.Len())
|
||||
for i := 0; i < len(arr); i++ {
|
||||
arr[i] = vis.namespaceTerm(v.Elem(i))
|
||||
}
|
||||
cpy.Value = ast.NewArray(arr...)
|
||||
return &cpy
|
||||
case ast.Object:
|
||||
if a.IsGround() {
|
||||
@@ -260,6 +268,9 @@ func (vis namespacingVisitor) namespaceTerm(a *ast.Term) *ast.Term {
|
||||
})
|
||||
return &cpy
|
||||
case ast.Set:
|
||||
if a.IsGround() {
|
||||
return a
|
||||
}
|
||||
cpy := *a
|
||||
cpy.Value, _ = v.Map(func(x *ast.Term) (*ast.Term, error) {
|
||||
return vis.namespaceTerm(x), nil
|
||||
@@ -279,7 +290,9 @@ func (vis namespacingVisitor) namespaceTerm(a *ast.Term) *ast.Term {
|
||||
|
||||
const maxLinearScan = 16
|
||||
|
||||
// bindingsArrayHashMap uses an array with linear scan instead of a hash map for smaller # of entries. Hash maps start to show off their performance advantage only after 16 keys.
|
||||
// bindingsArrayHashMap uses an array with linear scan instead
|
||||
// of a hash map for smaller # of entries. Hash maps start to
|
||||
// show off their performance advantage only after 16 keys.
|
||||
type bindingsArrayHashmap struct {
|
||||
n int // Entries in the array.
|
||||
a *[maxLinearScan]bindingArrayKeyValue
|
||||
|
||||
Reference in New Issue
Block a user