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:
36
vendor/github.com/open-policy-agent/opa/ast/env.go
generated
vendored
36
vendor/github.com/open-policy-agent/opa/ast/env.go
generated
vendored
@@ -11,14 +11,17 @@ import (
|
||||
|
||||
// TypeEnv contains type info for static analysis such as type checking.
|
||||
type TypeEnv struct {
|
||||
tree *typeTreeNode
|
||||
next *TypeEnv
|
||||
tree *typeTreeNode
|
||||
next *TypeEnv
|
||||
newChecker func() *typeChecker
|
||||
}
|
||||
|
||||
// NewTypeEnv returns an empty TypeEnv.
|
||||
func NewTypeEnv() *TypeEnv {
|
||||
// newTypeEnv returns an empty TypeEnv. The constructor is not exported because
|
||||
// type environments should only be created by the type checker.
|
||||
func newTypeEnv(f func() *typeChecker) *TypeEnv {
|
||||
return &TypeEnv{
|
||||
tree: newTypeTree(),
|
||||
tree: newTypeTree(),
|
||||
newChecker: f,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,10 +45,10 @@ func (env *TypeEnv) Get(x interface{}) types.Type {
|
||||
return types.NewString()
|
||||
|
||||
// Composites.
|
||||
case Array:
|
||||
static := make([]types.Type, len(x))
|
||||
case *Array:
|
||||
static := make([]types.Type, x.Len())
|
||||
for i := range static {
|
||||
tpe := env.Get(x[i].Value)
|
||||
tpe := env.Get(x.Elem(i).Value)
|
||||
static[i] = tpe
|
||||
}
|
||||
|
||||
@@ -56,7 +59,7 @@ func (env *TypeEnv) Get(x interface{}) types.Type {
|
||||
|
||||
return types.NewArray(static, dynamic)
|
||||
|
||||
case Object:
|
||||
case *object:
|
||||
static := []*types.StaticProperty{}
|
||||
var dynamic *types.DynamicProperty
|
||||
|
||||
@@ -94,22 +97,19 @@ func (env *TypeEnv) Get(x interface{}) types.Type {
|
||||
|
||||
// Comprehensions.
|
||||
case *ArrayComprehension:
|
||||
checker := newTypeChecker()
|
||||
cpy, errs := checker.CheckBody(env, x.Body)
|
||||
cpy, errs := env.newChecker().CheckBody(env, x.Body)
|
||||
if len(errs) == 0 {
|
||||
return types.NewArray(nil, cpy.Get(x.Term))
|
||||
}
|
||||
return nil
|
||||
case *ObjectComprehension:
|
||||
checker := newTypeChecker()
|
||||
cpy, errs := checker.CheckBody(env, x.Body)
|
||||
cpy, errs := env.newChecker().CheckBody(env, x.Body)
|
||||
if len(errs) == 0 {
|
||||
return types.NewObject(nil, types.NewDynamicProperty(cpy.Get(x.Key), cpy.Get(x.Value)))
|
||||
}
|
||||
return nil
|
||||
case *SetComprehension:
|
||||
checker := newTypeChecker()
|
||||
cpy, errs := checker.CheckBody(env, x.Body)
|
||||
cpy, errs := env.newChecker().CheckBody(env, x.Body)
|
||||
if len(errs) == 0 {
|
||||
return types.NewSet(cpy.Get(x.Term))
|
||||
}
|
||||
@@ -129,6 +129,10 @@ func (env *TypeEnv) Get(x interface{}) types.Type {
|
||||
}
|
||||
return nil
|
||||
|
||||
// Calls.
|
||||
case Call:
|
||||
return nil
|
||||
|
||||
default:
|
||||
panic("unreachable")
|
||||
}
|
||||
@@ -315,7 +319,7 @@ func selectRef(tpe types.Type, ref Ref) types.Type {
|
||||
head, tail := ref[0], ref[1:]
|
||||
|
||||
switch head.Value.(type) {
|
||||
case Var, Ref, Array, Object, Set:
|
||||
case Var, Ref, *Array, Object, Set:
|
||||
return selectRef(types.Values(tpe), tail)
|
||||
default:
|
||||
return selectRef(selectConstant(tpe, head), tail)
|
||||
|
||||
Reference in New Issue
Block a user