diff --git a/staging/src/k8s.io/apiserver/pkg/cel/types.go b/staging/src/k8s.io/apiserver/pkg/cel/types.go index 83c90c8916e..84bfd7e658b 100644 --- a/staging/src/k8s.io/apiserver/pkg/cel/types.go +++ b/staging/src/k8s.io/apiserver/pkg/cel/types.go @@ -429,7 +429,7 @@ func (rt *DeclTypeProvider) FindStructType(typeName string) (*types.Type, bool) declType, found := rt.findDeclType(typeName) if found { expT := declType.CelType() - return expT, found + return types.NewTypeTypeWithParam(expT), found } return rt.typeProvider.FindStructType(typeName) } diff --git a/staging/src/k8s.io/apiserver/pkg/cel/types_test.go b/staging/src/k8s.io/apiserver/pkg/cel/types_test.go index fef500b53f6..f7056fa0d92 100644 --- a/staging/src/k8s.io/apiserver/pkg/cel/types_test.go +++ b/staging/src/k8s.io/apiserver/pkg/cel/types_test.go @@ -18,6 +18,9 @@ package cel import ( "testing" + + "github.com/google/cel-go/common/types" + "github.com/stretchr/testify/require" ) func TestTypes_ListType(t *testing.T) { @@ -77,3 +80,16 @@ func testValue(t *testing.T, id int64, val interface{}) *DynValue { } return dv } + +func TestDeclTypeProvider_FindStructType(t *testing.T) { + obj := NewObjectType("foo", map[string]*DeclField{ + "bar": NewDeclField("bar", StringType, true, nil, nil), + }) + base := types.NewEmptyRegistry() + provider := NewDeclTypeProvider(obj) + provider, err := provider.WithTypeProvider(base) + require.NoError(t, err) + wrappedType, found := provider.FindStructType("foo") + require.True(t, found) + require.Equal(t, types.TypeKind, wrappedType.Kind()) +}