diff --git a/pkg/apis/apps/v1beta1/zz_generated.validations.go b/pkg/apis/apps/v1beta1/zz_generated.validations.go index 6517cebc06f..cc6f631c8e2 100644 --- a/pkg/apis/apps/v1beta1/zz_generated.validations.go +++ b/pkg/apis/apps/v1beta1/zz_generated.validations.go @@ -57,15 +57,15 @@ func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field. // field appsv1beta1.Scale.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *appsv1beta1.ScaleSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *appsv1beta1.ScaleSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ScaleSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *appsv1beta1.Scale) *appsv1beta1.ScaleSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *appsv1beta1.Scale) *appsv1beta1.ScaleSpec { return &oldObj.Spec }), oldObj != nil)...) // field appsv1beta1.Scale.Status has no validation return errs @@ -76,16 +76,16 @@ func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field. func Validate_ScaleSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *appsv1beta1.ScaleSpec) (errs field.ErrorList) { // field appsv1beta1.ScaleSpec.Replicas errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int32, oldValueCorrelated bool) (errs field.ErrorList) { // optional value-type fields with zero-value defaults are purely documentation // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *appsv1beta1.ScaleSpec) *int32 { return &oldObj.Replicas }))...) + }(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *appsv1beta1.ScaleSpec) *int32 { return &oldObj.Replicas }), oldObj != nil)...) return errs } diff --git a/pkg/apis/apps/v1beta2/zz_generated.validations.go b/pkg/apis/apps/v1beta2/zz_generated.validations.go index 0081b10a11d..0499add423c 100644 --- a/pkg/apis/apps/v1beta2/zz_generated.validations.go +++ b/pkg/apis/apps/v1beta2/zz_generated.validations.go @@ -57,15 +57,15 @@ func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field. // field appsv1beta2.Scale.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *appsv1beta2.ScaleSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *appsv1beta2.ScaleSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ScaleSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *appsv1beta2.Scale) *appsv1beta2.ScaleSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *appsv1beta2.Scale) *appsv1beta2.ScaleSpec { return &oldObj.Spec }), oldObj != nil)...) // field appsv1beta2.Scale.Status has no validation return errs @@ -76,16 +76,16 @@ func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field. func Validate_ScaleSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *appsv1beta2.ScaleSpec) (errs field.ErrorList) { // field appsv1beta2.ScaleSpec.Replicas errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int32, oldValueCorrelated bool) (errs field.ErrorList) { // optional value-type fields with zero-value defaults are purely documentation // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *appsv1beta2.ScaleSpec) *int32 { return &oldObj.Replicas }))...) + }(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *appsv1beta2.ScaleSpec) *int32 { return &oldObj.Replicas }), oldObj != nil)...) return errs } diff --git a/pkg/apis/autoscaling/v1/zz_generated.validations.go b/pkg/apis/autoscaling/v1/zz_generated.validations.go index 86a0f84209c..cfb0a3cd4b3 100644 --- a/pkg/apis/autoscaling/v1/zz_generated.validations.go +++ b/pkg/apis/autoscaling/v1/zz_generated.validations.go @@ -57,15 +57,15 @@ func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field. // field autoscalingv1.Scale.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *autoscalingv1.ScaleSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *autoscalingv1.ScaleSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ScaleSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *autoscalingv1.Scale) *autoscalingv1.ScaleSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *autoscalingv1.Scale) *autoscalingv1.ScaleSpec { return &oldObj.Spec }), oldObj != nil)...) // field autoscalingv1.Scale.Status has no validation return errs @@ -76,16 +76,16 @@ func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field. func Validate_ScaleSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *autoscalingv1.ScaleSpec) (errs field.ErrorList) { // field autoscalingv1.ScaleSpec.Replicas errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int32, oldValueCorrelated bool) (errs field.ErrorList) { // optional value-type fields with zero-value defaults are purely documentation // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *autoscalingv1.ScaleSpec) *int32 { return &oldObj.Replicas }))...) + }(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *autoscalingv1.ScaleSpec) *int32 { return &oldObj.Replicas }), oldObj != nil)...) return errs } diff --git a/pkg/apis/certificates/v1/zz_generated.validations.go b/pkg/apis/certificates/v1/zz_generated.validations.go index 8bcdd5c6dd5..0e462a1700d 100644 --- a/pkg/apis/certificates/v1/zz_generated.validations.go +++ b/pkg/apis/certificates/v1/zz_generated.validations.go @@ -67,9 +67,9 @@ func Validate_CertificateSigningRequest(ctx context.Context, op operation.Operat // field certificatesv1.CertificateSigningRequest.Status errs = append(errs, - func(fldPath *field.Path, obj, oldObj *certificatesv1.CertificateSigningRequestStatus) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *certificatesv1.CertificateSigningRequestStatus, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -77,7 +77,7 @@ func Validate_CertificateSigningRequest(ctx context.Context, op operation.Operat return }(fldPath.Child("status"), &obj.Status, safe.Field(oldObj, func(oldObj *certificatesv1.CertificateSigningRequest) *certificatesv1.CertificateSigningRequestStatus { return &oldObj.Status - }))...) + }), oldObj != nil)...) return errs } @@ -90,9 +90,9 @@ func Validate_CertificateSigningRequestList(ctx context.Context, op operation.Op // field certificatesv1.CertificateSigningRequestList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []certificatesv1.CertificateSigningRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []certificatesv1.CertificateSigningRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -100,7 +100,7 @@ func Validate_CertificateSigningRequestList(ctx context.Context, op operation.Op return }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *certificatesv1.CertificateSigningRequestList) []certificatesv1.CertificateSigningRequest { return oldObj.Items - }))...) + }), oldObj != nil)...) return errs } @@ -112,10 +112,10 @@ var zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1_CertificateSigningReques func Validate_CertificateSigningRequestStatus(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *certificatesv1.CertificateSigningRequestStatus) (errs field.ErrorList) { // field certificatesv1.CertificateSigningRequestStatus.Conditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []certificatesv1.CertificateSigningRequestCondition) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []certificatesv1.CertificateSigningRequestCondition, oldValueCorrelated bool) (errs field.ErrorList) { // Uniqueness validation is implemented via custom, handwritten validation // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -144,7 +144,7 @@ func Validate_CertificateSigningRequestStatus(ctx context.Context, op operation. return }(fldPath.Child("conditions"), obj.Conditions, safe.Field(oldObj, func(oldObj *certificatesv1.CertificateSigningRequestStatus) []certificatesv1.CertificateSigningRequestCondition { return oldObj.Conditions - }))...) + }), oldObj != nil)...) // field certificatesv1.CertificateSigningRequestStatus.Certificate has no validation return errs diff --git a/pkg/apis/certificates/v1beta1/zz_generated.validations.go b/pkg/apis/certificates/v1beta1/zz_generated.validations.go index f4a8710bed1..f103482ea7c 100644 --- a/pkg/apis/certificates/v1beta1/zz_generated.validations.go +++ b/pkg/apis/certificates/v1beta1/zz_generated.validations.go @@ -67,9 +67,9 @@ func Validate_CertificateSigningRequest(ctx context.Context, op operation.Operat // field certificatesv1beta1.CertificateSigningRequest.Status errs = append(errs, - func(fldPath *field.Path, obj, oldObj *certificatesv1beta1.CertificateSigningRequestStatus) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *certificatesv1beta1.CertificateSigningRequestStatus, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -77,7 +77,7 @@ func Validate_CertificateSigningRequest(ctx context.Context, op operation.Operat return }(fldPath.Child("status"), &obj.Status, safe.Field(oldObj, func(oldObj *certificatesv1beta1.CertificateSigningRequest) *certificatesv1beta1.CertificateSigningRequestStatus { return &oldObj.Status - }))...) + }), oldObj != nil)...) return errs } @@ -90,9 +90,9 @@ func Validate_CertificateSigningRequestList(ctx context.Context, op operation.Op // field certificatesv1beta1.CertificateSigningRequestList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []certificatesv1beta1.CertificateSigningRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []certificatesv1beta1.CertificateSigningRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -100,7 +100,7 @@ func Validate_CertificateSigningRequestList(ctx context.Context, op operation.Op return }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *certificatesv1beta1.CertificateSigningRequestList) []certificatesv1beta1.CertificateSigningRequest { return oldObj.Items - }))...) + }), oldObj != nil)...) return errs } @@ -112,10 +112,10 @@ var zeroOrOneOfMembershipFor_k8s_io_api_certificates_v1beta1_CertificateSigningR func Validate_CertificateSigningRequestStatus(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *certificatesv1beta1.CertificateSigningRequestStatus) (errs field.ErrorList) { // field certificatesv1beta1.CertificateSigningRequestStatus.Conditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []certificatesv1beta1.CertificateSigningRequestCondition) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []certificatesv1beta1.CertificateSigningRequestCondition, oldValueCorrelated bool) (errs field.ErrorList) { // Uniqueness validation is implemented via custom, handwritten validation // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -144,7 +144,7 @@ func Validate_CertificateSigningRequestStatus(ctx context.Context, op operation. return }(fldPath.Child("conditions"), obj.Conditions, safe.Field(oldObj, func(oldObj *certificatesv1beta1.CertificateSigningRequestStatus) []certificatesv1beta1.CertificateSigningRequestCondition { return oldObj.Conditions - }))...) + }), oldObj != nil)...) // field certificatesv1beta1.CertificateSigningRequestStatus.Certificate has no validation return errs diff --git a/pkg/apis/core/v1/zz_generated.validations.go b/pkg/apis/core/v1/zz_generated.validations.go index d3ccbc5e62c..7e39374b6b2 100644 --- a/pkg/apis/core/v1/zz_generated.validations.go +++ b/pkg/apis/core/v1/zz_generated.validations.go @@ -66,9 +66,9 @@ func Validate_ReplicationController(ctx context.Context, op operation.Operation, // field corev1.ReplicationController.ObjectMeta errs = append(errs, - func(fldPath *field.Path, obj, oldObj *metav1.ObjectMeta) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *metav1.ObjectMeta, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -83,19 +83,19 @@ func Validate_ReplicationController(ctx context.Context, op operation.Operation, errs = append(errs, validate.Subfield(ctx, op, fldPath, obj, oldObj, "name", func(o *metav1.ObjectMeta) *string { return &o.Name }, validate.DirectEqualPtr, validate.LongName)...) }() return - }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *corev1.ReplicationController) *metav1.ObjectMeta { return &oldObj.ObjectMeta }))...) + }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *corev1.ReplicationController) *metav1.ObjectMeta { return &oldObj.ObjectMeta }), oldObj != nil)...) // field corev1.ReplicationController.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *corev1.ReplicationControllerSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *corev1.ReplicationControllerSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ReplicationControllerSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *corev1.ReplicationController) *corev1.ReplicationControllerSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *corev1.ReplicationController) *corev1.ReplicationControllerSpec { return &oldObj.Spec }), oldObj != nil)...) // field corev1.ReplicationController.Status has no validation return errs @@ -109,15 +109,15 @@ func Validate_ReplicationControllerList(ctx context.Context, op operation.Operat // field corev1.ReplicationControllerList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []corev1.ReplicationController) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []corev1.ReplicationController, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ReplicationController)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *corev1.ReplicationControllerList) []corev1.ReplicationController { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *corev1.ReplicationControllerList) []corev1.ReplicationController { return oldObj.Items }), oldObj != nil)...) return errs } @@ -127,9 +127,9 @@ func Validate_ReplicationControllerList(ctx context.Context, op operation.Operat func Validate_ReplicationControllerSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *corev1.ReplicationControllerSpec) (errs field.ErrorList) { // field corev1.ReplicationControllerSpec.Replicas errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int32, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -144,20 +144,20 @@ func Validate_ReplicationControllerSpec(ctx context.Context, op operation.Operat } errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("replicas"), obj.Replicas, safe.Field(oldObj, func(oldObj *corev1.ReplicationControllerSpec) *int32 { return oldObj.Replicas }))...) + }(fldPath.Child("replicas"), obj.Replicas, safe.Field(oldObj, func(oldObj *corev1.ReplicationControllerSpec) *int32 { return oldObj.Replicas }), oldObj != nil)...) // field corev1.ReplicationControllerSpec.MinReadySeconds errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int32, oldValueCorrelated bool) (errs field.ErrorList) { // optional value-type fields with zero-value defaults are purely documentation // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("minReadySeconds"), &obj.MinReadySeconds, safe.Field(oldObj, func(oldObj *corev1.ReplicationControllerSpec) *int32 { return &oldObj.MinReadySeconds }))...) + }(fldPath.Child("minReadySeconds"), &obj.MinReadySeconds, safe.Field(oldObj, func(oldObj *corev1.ReplicationControllerSpec) *int32 { return &oldObj.MinReadySeconds }), oldObj != nil)...) // field corev1.ReplicationControllerSpec.Selector has no validation // field corev1.ReplicationControllerSpec.Template has no validation diff --git a/pkg/apis/rbac/v1/zz_generated.validations.go b/pkg/apis/rbac/v1/zz_generated.validations.go index 253010731b2..0e53d6e0b7e 100644 --- a/pkg/apis/rbac/v1/zz_generated.validations.go +++ b/pkg/apis/rbac/v1/zz_generated.validations.go @@ -82,27 +82,27 @@ func Validate_ClusterRoleBinding(ctx context.Context, op operation.Operation, fl // field rbacv1.ClusterRoleBinding.Subjects errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1.Subject) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1.Subject, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Subject)...) return - }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1.ClusterRoleBinding) []rbacv1.Subject { return oldObj.Subjects }))...) + }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1.ClusterRoleBinding) []rbacv1.Subject { return oldObj.Subjects }), oldObj != nil)...) // field rbacv1.ClusterRoleBinding.RoleRef errs = append(errs, - func(fldPath *field.Path, obj, oldObj *rbacv1.RoleRef) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *rbacv1.RoleRef, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_RoleRef(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1.ClusterRoleBinding) *rbacv1.RoleRef { return &oldObj.RoleRef }))...) + }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1.ClusterRoleBinding) *rbacv1.RoleRef { return &oldObj.RoleRef }), oldObj != nil)...) return errs } @@ -115,15 +115,15 @@ func Validate_ClusterRoleBindingList(ctx context.Context, op operation.Operation // field rbacv1.ClusterRoleBindingList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1.ClusterRoleBinding) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1.ClusterRoleBinding, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ClusterRoleBinding)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1.ClusterRoleBindingList) []rbacv1.ClusterRoleBinding { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1.ClusterRoleBindingList) []rbacv1.ClusterRoleBinding { return oldObj.Items }), oldObj != nil)...) return errs } @@ -136,27 +136,27 @@ func Validate_RoleBinding(ctx context.Context, op operation.Operation, fldPath * // field rbacv1.RoleBinding.Subjects errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1.Subject) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1.Subject, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Subject)...) return - }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1.RoleBinding) []rbacv1.Subject { return oldObj.Subjects }))...) + }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1.RoleBinding) []rbacv1.Subject { return oldObj.Subjects }), oldObj != nil)...) // field rbacv1.RoleBinding.RoleRef errs = append(errs, - func(fldPath *field.Path, obj, oldObj *rbacv1.RoleRef) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *rbacv1.RoleRef, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_RoleRef(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1.RoleBinding) *rbacv1.RoleRef { return &oldObj.RoleRef }))...) + }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1.RoleBinding) *rbacv1.RoleRef { return &oldObj.RoleRef }), oldObj != nil)...) return errs } @@ -169,15 +169,15 @@ func Validate_RoleBindingList(ctx context.Context, op operation.Operation, fldPa // field rbacv1.RoleBindingList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1.RoleBinding) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1.RoleBinding, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_RoleBinding)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1.RoleBindingList) []rbacv1.RoleBinding { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1.RoleBindingList) []rbacv1.RoleBinding { return oldObj.Items }), oldObj != nil)...) return errs } @@ -190,9 +190,9 @@ func Validate_RoleRef(ctx context.Context, op operation.Operation, fldPath *fiel // field rbacv1.RoleRef.Name errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -205,7 +205,7 @@ func Validate_RoleRef(ctx context.Context, op operation.Operation, fldPath *fiel return // do not proceed } return - }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1.RoleRef) *string { return &oldObj.Name }))...) + }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1.RoleRef) *string { return &oldObj.Name }), oldObj != nil)...) return errs } @@ -218,9 +218,9 @@ func Validate_Subject(ctx context.Context, op operation.Operation, fldPath *fiel // field rbacv1.Subject.Name errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -233,7 +233,7 @@ func Validate_Subject(ctx context.Context, op operation.Operation, fldPath *fiel return // do not proceed } return - }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1.Subject) *string { return &oldObj.Name }))...) + }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1.Subject) *string { return &oldObj.Name }), oldObj != nil)...) // field rbacv1.Subject.Namespace has no validation return errs diff --git a/pkg/apis/rbac/v1alpha1/zz_generated.validations.go b/pkg/apis/rbac/v1alpha1/zz_generated.validations.go index 47be359b5a8..0f517283ac1 100644 --- a/pkg/apis/rbac/v1alpha1/zz_generated.validations.go +++ b/pkg/apis/rbac/v1alpha1/zz_generated.validations.go @@ -82,27 +82,27 @@ func Validate_ClusterRoleBinding(ctx context.Context, op operation.Operation, fl // field rbacv1alpha1.ClusterRoleBinding.Subjects errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1alpha1.Subject) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1alpha1.Subject, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Subject)...) return - }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1alpha1.ClusterRoleBinding) []rbacv1alpha1.Subject { return oldObj.Subjects }))...) + }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1alpha1.ClusterRoleBinding) []rbacv1alpha1.Subject { return oldObj.Subjects }), oldObj != nil)...) // field rbacv1alpha1.ClusterRoleBinding.RoleRef errs = append(errs, - func(fldPath *field.Path, obj, oldObj *rbacv1alpha1.RoleRef) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *rbacv1alpha1.RoleRef, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_RoleRef(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1alpha1.ClusterRoleBinding) *rbacv1alpha1.RoleRef { return &oldObj.RoleRef }))...) + }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1alpha1.ClusterRoleBinding) *rbacv1alpha1.RoleRef { return &oldObj.RoleRef }), oldObj != nil)...) return errs } @@ -115,9 +115,9 @@ func Validate_ClusterRoleBindingList(ctx context.Context, op operation.Operation // field rbacv1alpha1.ClusterRoleBindingList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1alpha1.ClusterRoleBinding) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1alpha1.ClusterRoleBinding, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -125,7 +125,7 @@ func Validate_ClusterRoleBindingList(ctx context.Context, op operation.Operation return }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1alpha1.ClusterRoleBindingList) []rbacv1alpha1.ClusterRoleBinding { return oldObj.Items - }))...) + }), oldObj != nil)...) return errs } @@ -138,27 +138,27 @@ func Validate_RoleBinding(ctx context.Context, op operation.Operation, fldPath * // field rbacv1alpha1.RoleBinding.Subjects errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1alpha1.Subject) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1alpha1.Subject, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Subject)...) return - }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1alpha1.RoleBinding) []rbacv1alpha1.Subject { return oldObj.Subjects }))...) + }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1alpha1.RoleBinding) []rbacv1alpha1.Subject { return oldObj.Subjects }), oldObj != nil)...) // field rbacv1alpha1.RoleBinding.RoleRef errs = append(errs, - func(fldPath *field.Path, obj, oldObj *rbacv1alpha1.RoleRef) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *rbacv1alpha1.RoleRef, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_RoleRef(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1alpha1.RoleBinding) *rbacv1alpha1.RoleRef { return &oldObj.RoleRef }))...) + }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1alpha1.RoleBinding) *rbacv1alpha1.RoleRef { return &oldObj.RoleRef }), oldObj != nil)...) return errs } @@ -171,15 +171,15 @@ func Validate_RoleBindingList(ctx context.Context, op operation.Operation, fldPa // field rbacv1alpha1.RoleBindingList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1alpha1.RoleBinding) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1alpha1.RoleBinding, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_RoleBinding)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1alpha1.RoleBindingList) []rbacv1alpha1.RoleBinding { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1alpha1.RoleBindingList) []rbacv1alpha1.RoleBinding { return oldObj.Items }), oldObj != nil)...) return errs } @@ -192,9 +192,9 @@ func Validate_RoleRef(ctx context.Context, op operation.Operation, fldPath *fiel // field rbacv1alpha1.RoleRef.Name errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -207,7 +207,7 @@ func Validate_RoleRef(ctx context.Context, op operation.Operation, fldPath *fiel return // do not proceed } return - }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1alpha1.RoleRef) *string { return &oldObj.Name }))...) + }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1alpha1.RoleRef) *string { return &oldObj.Name }), oldObj != nil)...) return errs } @@ -220,9 +220,9 @@ func Validate_Subject(ctx context.Context, op operation.Operation, fldPath *fiel // field rbacv1alpha1.Subject.Name errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -235,7 +235,7 @@ func Validate_Subject(ctx context.Context, op operation.Operation, fldPath *fiel return // do not proceed } return - }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1alpha1.Subject) *string { return &oldObj.Name }))...) + }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1alpha1.Subject) *string { return &oldObj.Name }), oldObj != nil)...) // field rbacv1alpha1.Subject.Namespace has no validation return errs diff --git a/pkg/apis/rbac/v1beta1/zz_generated.validations.go b/pkg/apis/rbac/v1beta1/zz_generated.validations.go index 51026b748dc..82e44b20bc1 100644 --- a/pkg/apis/rbac/v1beta1/zz_generated.validations.go +++ b/pkg/apis/rbac/v1beta1/zz_generated.validations.go @@ -82,27 +82,27 @@ func Validate_ClusterRoleBinding(ctx context.Context, op operation.Operation, fl // field rbacv1beta1.ClusterRoleBinding.Subjects errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1beta1.Subject) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1beta1.Subject, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Subject)...) return - }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1beta1.ClusterRoleBinding) []rbacv1beta1.Subject { return oldObj.Subjects }))...) + }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1beta1.ClusterRoleBinding) []rbacv1beta1.Subject { return oldObj.Subjects }), oldObj != nil)...) // field rbacv1beta1.ClusterRoleBinding.RoleRef errs = append(errs, - func(fldPath *field.Path, obj, oldObj *rbacv1beta1.RoleRef) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *rbacv1beta1.RoleRef, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_RoleRef(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1beta1.ClusterRoleBinding) *rbacv1beta1.RoleRef { return &oldObj.RoleRef }))...) + }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1beta1.ClusterRoleBinding) *rbacv1beta1.RoleRef { return &oldObj.RoleRef }), oldObj != nil)...) return errs } @@ -115,15 +115,15 @@ func Validate_ClusterRoleBindingList(ctx context.Context, op operation.Operation // field rbacv1beta1.ClusterRoleBindingList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1beta1.ClusterRoleBinding) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1beta1.ClusterRoleBinding, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ClusterRoleBinding)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1beta1.ClusterRoleBindingList) []rbacv1beta1.ClusterRoleBinding { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1beta1.ClusterRoleBindingList) []rbacv1beta1.ClusterRoleBinding { return oldObj.Items }), oldObj != nil)...) return errs } @@ -136,27 +136,27 @@ func Validate_RoleBinding(ctx context.Context, op operation.Operation, fldPath * // field rbacv1beta1.RoleBinding.Subjects errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1beta1.Subject) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1beta1.Subject, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Subject)...) return - }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1beta1.RoleBinding) []rbacv1beta1.Subject { return oldObj.Subjects }))...) + }(fldPath.Child("subjects"), obj.Subjects, safe.Field(oldObj, func(oldObj *rbacv1beta1.RoleBinding) []rbacv1beta1.Subject { return oldObj.Subjects }), oldObj != nil)...) // field rbacv1beta1.RoleBinding.RoleRef errs = append(errs, - func(fldPath *field.Path, obj, oldObj *rbacv1beta1.RoleRef) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *rbacv1beta1.RoleRef, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_RoleRef(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1beta1.RoleBinding) *rbacv1beta1.RoleRef { return &oldObj.RoleRef }))...) + }(fldPath.Child("roleRef"), &obj.RoleRef, safe.Field(oldObj, func(oldObj *rbacv1beta1.RoleBinding) *rbacv1beta1.RoleRef { return &oldObj.RoleRef }), oldObj != nil)...) return errs } @@ -169,15 +169,15 @@ func Validate_RoleBindingList(ctx context.Context, op operation.Operation, fldPa // field rbacv1beta1.RoleBindingList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []rbacv1beta1.RoleBinding) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []rbacv1beta1.RoleBinding, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_RoleBinding)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1beta1.RoleBindingList) []rbacv1beta1.RoleBinding { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *rbacv1beta1.RoleBindingList) []rbacv1beta1.RoleBinding { return oldObj.Items }), oldObj != nil)...) return errs } @@ -190,9 +190,9 @@ func Validate_RoleRef(ctx context.Context, op operation.Operation, fldPath *fiel // field rbacv1beta1.RoleRef.Name errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -205,7 +205,7 @@ func Validate_RoleRef(ctx context.Context, op operation.Operation, fldPath *fiel return // do not proceed } return - }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1beta1.RoleRef) *string { return &oldObj.Name }))...) + }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1beta1.RoleRef) *string { return &oldObj.Name }), oldObj != nil)...) return errs } @@ -218,9 +218,9 @@ func Validate_Subject(ctx context.Context, op operation.Operation, fldPath *fiel // field rbacv1beta1.Subject.Name errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -233,7 +233,7 @@ func Validate_Subject(ctx context.Context, op operation.Operation, fldPath *fiel return // do not proceed } return - }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1beta1.Subject) *string { return &oldObj.Name }))...) + }(fldPath.Child("name"), &obj.Name, safe.Field(oldObj, func(oldObj *rbacv1beta1.Subject) *string { return &oldObj.Name }), oldObj != nil)...) // field rbacv1beta1.Subject.Namespace has no validation return errs diff --git a/pkg/apis/resource/v1/zz_generated.validations.go b/pkg/apis/resource/v1/zz_generated.validations.go index e771445c385..37044ff305c 100644 --- a/pkg/apis/resource/v1/zz_generated.validations.go +++ b/pkg/apis/resource/v1/zz_generated.validations.go @@ -118,9 +118,9 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, // field resourcev1.AllocatedDeviceStatus.ShareID errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -133,16 +133,16 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1.AllocatedDeviceStatus) *string { return oldObj.ShareID }))...) + }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1.AllocatedDeviceStatus) *string { return oldObj.ShareID }), oldObj != nil)...) // field resourcev1.AllocatedDeviceStatus.Conditions has no validation // field resourcev1.AllocatedDeviceStatus.Data has no validation // field resourcev1.AllocatedDeviceStatus.NetworkData errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.NetworkDeviceData) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.NetworkDeviceData, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -158,7 +158,7 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, return }(fldPath.Child("networkData"), obj.NetworkData, safe.Field(oldObj, func(oldObj *resourcev1.AllocatedDeviceStatus) *resourcev1.NetworkDeviceData { return oldObj.NetworkData - }))...) + }), oldObj != nil)...) return errs } @@ -178,15 +178,15 @@ func Validate_AllocationConfigSource(ctx context.Context, op operation.Operation func Validate_AllocationResult(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.AllocationResult) (errs field.ErrorList) { // field resourcev1.AllocationResult.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceAllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceAllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_DeviceAllocationResult(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1.AllocationResult) *resourcev1.DeviceAllocationResult { return &oldObj.Devices }))...) + }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1.AllocationResult) *resourcev1.DeviceAllocationResult { return &oldObj.Devices }), oldObj != nil)...) // field resourcev1.AllocationResult.NodeSelector has no validation // field resourcev1.AllocationResult.AllocationTimestamp has no validation @@ -200,9 +200,9 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field // field resourcev1.Device.Attributes errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[resourcev1.QualifiedName]resourcev1.DeviceAttribute) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[resourcev1.QualifiedName]resourcev1.DeviceAttribute, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the map and call the value type's validation function @@ -210,7 +210,7 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field return }(fldPath.Child("attributes"), obj.Attributes, safe.Field(oldObj, func(oldObj *resourcev1.Device) map[resourcev1.QualifiedName]resourcev1.DeviceAttribute { return oldObj.Attributes - }))...) + }), oldObj != nil)...) // field resourcev1.Device.Capacity has no validation // field resourcev1.Device.ConsumesCounters has no validation @@ -220,23 +220,23 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field // field resourcev1.Device.Taints errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceTaint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceTaint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceTaint)...) return - }(fldPath.Child("taints"), obj.Taints, safe.Field(oldObj, func(oldObj *resourcev1.Device) []resourcev1.DeviceTaint { return oldObj.Taints }))...) + }(fldPath.Child("taints"), obj.Taints, safe.Field(oldObj, func(oldObj *resourcev1.Device) []resourcev1.DeviceTaint { return oldObj.Taints }), oldObj != nil)...) // field resourcev1.Device.BindsToNode has no validation // field resourcev1.Device.BindingConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -252,13 +252,13 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1.Device) []string { return oldObj.BindingConditions }))...) + }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1.Device) []string { return oldObj.BindingConditions }), oldObj != nil)...) // field resourcev1.Device.BindingFailureConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -274,7 +274,7 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1.Device) []string { return oldObj.BindingFailureConditions }))...) + }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1.Device) []string { return oldObj.BindingFailureConditions }), oldObj != nil)...) // field resourcev1.Device.AllowMultipleAllocations has no validation return errs @@ -285,9 +285,9 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceAllocationConfiguration) (errs field.ErrorList) { // field resourcev1.DeviceAllocationConfiguration.Source errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.AllocationConfigSource) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.AllocationConfigSource, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -304,13 +304,13 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op return }(fldPath.Child("source"), &obj.Source, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAllocationConfiguration) *resourcev1.AllocationConfigSource { return &oldObj.Source - }))...) + }), oldObj != nil)...) // field resourcev1.DeviceAllocationConfiguration.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -328,13 +328,13 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAllocationConfiguration) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAllocationConfiguration) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1.DeviceAllocationConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -342,7 +342,7 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAllocationConfiguration) *resourcev1.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -362,9 +362,9 @@ func Validate_DeviceAllocationMode(ctx context.Context, op operation.Operation, func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceAllocationResult) (errs field.ErrorList) { // field resourcev1.DeviceAllocationResult.Results errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceRequestAllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceRequestAllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -384,13 +384,13 @@ func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation return }(fldPath.Child("results"), obj.Results, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAllocationResult) []resourcev1.DeviceRequestAllocationResult { return oldObj.Results - }))...) + }), oldObj != nil)...) // field resourcev1.DeviceAllocationResult.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceAllocationConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceAllocationConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -410,7 +410,7 @@ func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation return }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAllocationResult) []resourcev1.DeviceAllocationConfiguration { return oldObj.Config - }))...) + }), oldObj != nil)...) return errs } @@ -444,9 +444,9 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa // field resourcev1.DeviceAttribute.IntValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -458,13 +458,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("int"), obj.IntValue, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAttribute) *int64 { return oldObj.IntValue }))...) + }(fldPath.Child("int"), obj.IntValue, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAttribute) *int64 { return oldObj.IntValue }), oldObj != nil)...) // field resourcev1.DeviceAttribute.BoolValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -476,13 +476,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("bool"), obj.BoolValue, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAttribute) *bool { return oldObj.BoolValue }))...) + }(fldPath.Child("bool"), obj.BoolValue, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAttribute) *bool { return oldObj.BoolValue }), oldObj != nil)...) // field resourcev1.DeviceAttribute.StringValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -494,13 +494,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("string"), obj.StringValue, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAttribute) *string { return oldObj.StringValue }))...) + }(fldPath.Child("string"), obj.StringValue, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAttribute) *string { return oldObj.StringValue }), oldObj != nil)...) // field resourcev1.DeviceAttribute.VersionValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -512,7 +512,7 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("version"), obj.VersionValue, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAttribute) *string { return oldObj.VersionValue }))...) + }(fldPath.Child("version"), obj.VersionValue, safe.Field(oldObj, func(oldObj *resourcev1.DeviceAttribute) *string { return oldObj.VersionValue }), oldObj != nil)...) return errs } @@ -522,9 +522,9 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceClaim) (errs field.ErrorList) { // field resourcev1.DeviceClaim.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -544,13 +544,13 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, func(a resourcev1.DeviceRequest, b resourcev1.DeviceRequest) bool { return a.Name == b.Name }, validate.SemanticDeepEqual, Validate_DeviceRequest)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaim) []resourcev1.DeviceRequest { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaim) []resourcev1.DeviceRequest { return oldObj.Requests }), oldObj != nil)...) // field resourcev1.DeviceClaim.Constraints errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceConstraint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceConstraint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -568,13 +568,13 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceConstraint)...) return - }(fldPath.Child("constraints"), obj.Constraints, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaim) []resourcev1.DeviceConstraint { return oldObj.Constraints }))...) + }(fldPath.Child("constraints"), obj.Constraints, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaim) []resourcev1.DeviceConstraint { return oldObj.Constraints }), oldObj != nil)...) // field resourcev1.DeviceClaim.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceClaimConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceClaimConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -592,7 +592,7 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceClaimConfiguration)...) return - }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaim) []resourcev1.DeviceClaimConfiguration { return oldObj.Config }))...) + }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaim) []resourcev1.DeviceClaimConfiguration { return oldObj.Config }), oldObj != nil)...) return errs } @@ -602,9 +602,9 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceClaimConfiguration) (errs field.ErrorList) { // field resourcev1.DeviceClaimConfiguration.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -622,13 +622,13 @@ func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operati // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaimConfiguration) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaimConfiguration) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1.DeviceClaimConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -636,7 +636,7 @@ func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operati return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClaimConfiguration) *resourcev1.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -648,9 +648,9 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * // field resourcev1.DeviceClass.ObjectMeta errs = append(errs, - func(fldPath *field.Path, obj, oldObj *metav1.ObjectMeta) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *metav1.ObjectMeta, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -665,19 +665,19 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * errs = append(errs, validate.Subfield(ctx, op, fldPath, obj, oldObj, "name", func(o *metav1.ObjectMeta) *string { return &o.Name }, validate.DirectEqualPtr, validate.LongName)...) }() return - }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClass) *metav1.ObjectMeta { return &oldObj.ObjectMeta }))...) + }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClass) *metav1.ObjectMeta { return &oldObj.ObjectMeta }), oldObj != nil)...) // field resourcev1.DeviceClass.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceClassSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceClassSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_DeviceClassSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClass) *resourcev1.DeviceClassSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClass) *resourcev1.DeviceClassSpec { return &oldObj.Spec }), oldObj != nil)...) return errs } @@ -687,9 +687,9 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * func Validate_DeviceClassConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceClassConfiguration) (errs field.ErrorList) { // field resourcev1.DeviceClassConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -697,7 +697,7 @@ func Validate_DeviceClassConfiguration(ctx context.Context, op operation.Operati return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassConfiguration) *resourcev1.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -710,15 +710,15 @@ func Validate_DeviceClassList(ctx context.Context, op operation.Operation, fldPa // field resourcev1.DeviceClassList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceClass) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceClass, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceClass)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassList) []resourcev1.DeviceClass { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassList) []resourcev1.DeviceClass { return oldObj.Items }), oldObj != nil)...) return errs } @@ -728,9 +728,9 @@ func Validate_DeviceClassList(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceClassSpec) (errs field.ErrorList) { // field resourcev1.DeviceClassSpec.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -746,13 +746,13 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassSpec) []resourcev1.DeviceSelector { return oldObj.Selectors }))...) + }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassSpec) []resourcev1.DeviceSelector { return oldObj.Selectors }), oldObj != nil)...) // field resourcev1.DeviceClassSpec.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceClassConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceClassConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -770,13 +770,13 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceClassConfiguration)...) return - }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassSpec) []resourcev1.DeviceClassConfiguration { return oldObj.Config }))...) + }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassSpec) []resourcev1.DeviceClassConfiguration { return oldObj.Config }), oldObj != nil)...) // field resourcev1.DeviceClassSpec.ExtendedResourceName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -789,7 +789,7 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa } errs = append(errs, validate.ExtendedResourceName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("extendedResourceName"), obj.ExtendedResourceName, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassSpec) *string { return oldObj.ExtendedResourceName }))...) + }(fldPath.Child("extendedResourceName"), obj.ExtendedResourceName, safe.Field(oldObj, func(oldObj *resourcev1.DeviceClassSpec) *string { return oldObj.ExtendedResourceName }), oldObj != nil)...) return errs } @@ -799,9 +799,9 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceConfiguration) (errs field.ErrorList) { // field resourcev1.DeviceConfiguration.Opaque errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.OpaqueDeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.OpaqueDeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -817,7 +817,7 @@ func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, f return }(fldPath.Child("opaque"), obj.Opaque, safe.Field(oldObj, func(oldObj *resourcev1.DeviceConfiguration) *resourcev1.OpaqueDeviceConfiguration { return oldObj.Opaque - }))...) + }), oldObj != nil)...) return errs } @@ -827,9 +827,9 @@ func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, f func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceConstraint) (errs field.ErrorList) { // field resourcev1.DeviceConstraint.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -847,13 +847,13 @@ func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldP // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1.DeviceConstraint) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1.DeviceConstraint) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1.DeviceConstraint.MatchAttribute errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.FullyQualifiedName) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.FullyQualifiedName, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -866,7 +866,7 @@ func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldP } errs = append(errs, validate.ResourceFullyQualifiedName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("matchAttribute"), obj.MatchAttribute, safe.Field(oldObj, func(oldObj *resourcev1.DeviceConstraint) *resourcev1.FullyQualifiedName { return oldObj.MatchAttribute }))...) + }(fldPath.Child("matchAttribute"), obj.MatchAttribute, safe.Field(oldObj, func(oldObj *resourcev1.DeviceConstraint) *resourcev1.FullyQualifiedName { return oldObj.MatchAttribute }), oldObj != nil)...) // field resourcev1.DeviceConstraint.DistinctAttribute has no validation return errs @@ -879,9 +879,9 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath // field resourcev1.DeviceRequest.Exactly errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.ExactDeviceRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.ExactDeviceRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -895,13 +895,13 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath // call the type's validation function errs = append(errs, Validate_ExactDeviceRequest(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("exactly"), obj.Exactly, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequest) *resourcev1.ExactDeviceRequest { return oldObj.Exactly }))...) + }(fldPath.Child("exactly"), obj.Exactly, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequest) *resourcev1.ExactDeviceRequest { return oldObj.Exactly }), oldObj != nil)...) // field resourcev1.DeviceRequest.FirstAvailable errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceSubRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceSubRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -921,7 +921,7 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, func(a resourcev1.DeviceSubRequest, b resourcev1.DeviceSubRequest) bool { return a.Name == b.Name }, validate.SemanticDeepEqual, Validate_DeviceSubRequest)...) return - }(fldPath.Child("firstAvailable"), obj.FirstAvailable, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequest) []resourcev1.DeviceSubRequest { return oldObj.FirstAvailable }))...) + }(fldPath.Child("firstAvailable"), obj.FirstAvailable, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequest) []resourcev1.DeviceSubRequest { return oldObj.FirstAvailable }), oldObj != nil)...) return errs } @@ -933,9 +933,9 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op // field resourcev1.DeviceRequestAllocationResult.Driver errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -949,13 +949,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.LongNameCaseless(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) *string { return &oldObj.Driver }))...) + }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) *string { return &oldObj.Driver }), oldObj != nil)...) // field resourcev1.DeviceRequestAllocationResult.Pool errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -969,16 +969,16 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.ResourcePoolName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pool"), &obj.Pool, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) *string { return &oldObj.Pool }))...) + }(fldPath.Child("pool"), &obj.Pool, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) *string { return &oldObj.Pool }), oldObj != nil)...) // field resourcev1.DeviceRequestAllocationResult.Device has no validation // field resourcev1.DeviceRequestAllocationResult.AdminAccess has no validation // field resourcev1.DeviceRequestAllocationResult.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -986,13 +986,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) []resourcev1.DeviceToleration { return oldObj.Tolerations - }))...) + }), oldObj != nil)...) // field resourcev1.DeviceRequestAllocationResult.BindingConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1008,13 +1008,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return // do not proceed } return - }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) []string { return oldObj.BindingConditions }))...) + }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) []string { return oldObj.BindingConditions }), oldObj != nil)...) // field resourcev1.DeviceRequestAllocationResult.BindingFailureConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1032,13 +1032,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) []string { return oldObj.BindingFailureConditions - }))...) + }), oldObj != nil)...) // field resourcev1.DeviceRequestAllocationResult.ShareID errs = append(errs, - func(fldPath *field.Path, obj, oldObj *types.UID) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *types.UID, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1051,7 +1051,7 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) *types.UID { return oldObj.ShareID }))...) + }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1.DeviceRequestAllocationResult) *types.UID { return oldObj.ShareID }), oldObj != nil)...) // field resourcev1.DeviceRequestAllocationResult.ConsumedCapacity has no validation return errs @@ -1064,9 +1064,9 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP // field resourcev1.DeviceSubRequest.DeviceClassName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1080,13 +1080,13 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP } errs = append(errs, validate.LongName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("deviceClassName"), &obj.DeviceClassName, safe.Field(oldObj, func(oldObj *resourcev1.DeviceSubRequest) *string { return &oldObj.DeviceClassName }))...) + }(fldPath.Child("deviceClassName"), &obj.DeviceClassName, safe.Field(oldObj, func(oldObj *resourcev1.DeviceSubRequest) *string { return &oldObj.DeviceClassName }), oldObj != nil)...) // field resourcev1.DeviceSubRequest.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1102,13 +1102,13 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1.DeviceSubRequest) []resourcev1.DeviceSelector { return oldObj.Selectors }))...) + }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1.DeviceSubRequest) []resourcev1.DeviceSelector { return oldObj.Selectors }), oldObj != nil)...) // field resourcev1.DeviceSubRequest.AllocationMode errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceAllocationMode) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceAllocationMode, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function @@ -1116,21 +1116,21 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("allocationMode"), &obj.AllocationMode, safe.Field(oldObj, func(oldObj *resourcev1.DeviceSubRequest) *resourcev1.DeviceAllocationMode { return &oldObj.AllocationMode - }))...) + }), oldObj != nil)...) // field resourcev1.DeviceSubRequest.Count has no validation // field resourcev1.DeviceSubRequest.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceToleration)...) return - }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1.DeviceSubRequest) []resourcev1.DeviceToleration { return oldObj.Tolerations }))...) + }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1.DeviceSubRequest) []resourcev1.DeviceToleration { return oldObj.Tolerations }), oldObj != nil)...) // field resourcev1.DeviceSubRequest.Capacity has no validation return errs @@ -1144,9 +1144,9 @@ func Validate_DeviceTaint(ctx context.Context, op operation.Operation, fldPath * // field resourcev1.DeviceTaint.Effect errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceTaintEffect) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceTaintEffect, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1161,7 +1161,7 @@ func Validate_DeviceTaint(ctx context.Context, op operation.Operation, fldPath * // call the type's validation function errs = append(errs, Validate_DeviceTaintEffect(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1.DeviceTaint) *resourcev1.DeviceTaintEffect { return &oldObj.Effect }))...) + }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1.DeviceTaint) *resourcev1.DeviceTaintEffect { return &oldObj.Effect }), oldObj != nil)...) // field resourcev1.DeviceTaint.TimeAdded has no validation return errs @@ -1182,9 +1182,9 @@ func Validate_DeviceTaintEffect(ctx context.Context, op operation.Operation, fld func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.DeviceToleration) (errs field.ErrorList) { // field resourcev1.DeviceToleration.Key errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1197,13 +1197,13 @@ func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldP } errs = append(errs, validate.LabelKey(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("key"), &obj.Key, safe.Field(oldObj, func(oldObj *resourcev1.DeviceToleration) *string { return &oldObj.Key }))...) + }(fldPath.Child("key"), &obj.Key, safe.Field(oldObj, func(oldObj *resourcev1.DeviceToleration) *string { return &oldObj.Key }), oldObj != nil)...) // field resourcev1.DeviceToleration.Operator errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceTolerationOperator) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceTolerationOperator, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function @@ -1211,21 +1211,21 @@ func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("operator"), &obj.Operator, safe.Field(oldObj, func(oldObj *resourcev1.DeviceToleration) *resourcev1.DeviceTolerationOperator { return &oldObj.Operator - }))...) + }), oldObj != nil)...) // field resourcev1.DeviceToleration.Value has no validation // field resourcev1.DeviceToleration.Effect errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceTaintEffect) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceTaintEffect, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_DeviceTaintEffect(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1.DeviceToleration) *resourcev1.DeviceTaintEffect { return &oldObj.Effect }))...) + }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1.DeviceToleration) *resourcev1.DeviceTaintEffect { return &oldObj.Effect }), oldObj != nil)...) // field resourcev1.DeviceToleration.TolerationSeconds has no validation return errs @@ -1248,9 +1248,9 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl // field resourcev1.ExactDeviceRequest.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1266,13 +1266,13 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl return // do not proceed } return - }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1.ExactDeviceRequest) []resourcev1.DeviceSelector { return oldObj.Selectors }))...) + }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1.ExactDeviceRequest) []resourcev1.DeviceSelector { return oldObj.Selectors }), oldObj != nil)...) // field resourcev1.ExactDeviceRequest.AllocationMode errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceAllocationMode) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceAllocationMode, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1288,22 +1288,22 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl return }(fldPath.Child("allocationMode"), &obj.AllocationMode, safe.Field(oldObj, func(oldObj *resourcev1.ExactDeviceRequest) *resourcev1.DeviceAllocationMode { return &oldObj.AllocationMode - }))...) + }), oldObj != nil)...) // field resourcev1.ExactDeviceRequest.Count has no validation // field resourcev1.ExactDeviceRequest.AdminAccess has no validation // field resourcev1.ExactDeviceRequest.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceToleration)...) return - }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1.ExactDeviceRequest) []resourcev1.DeviceToleration { return oldObj.Tolerations }))...) + }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1.ExactDeviceRequest) []resourcev1.DeviceToleration { return oldObj.Tolerations }), oldObj != nil)...) // field resourcev1.ExactDeviceRequest.Capacity has no validation return errs @@ -1314,9 +1314,9 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.NetworkDeviceData) (errs field.ErrorList) { // field resourcev1.NetworkDeviceData.InterfaceName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1329,13 +1329,13 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld } errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 256)...) return - }(fldPath.Child("interfaceName"), &obj.InterfaceName, safe.Field(oldObj, func(oldObj *resourcev1.NetworkDeviceData) *string { return &oldObj.InterfaceName }))...) + }(fldPath.Child("interfaceName"), &obj.InterfaceName, safe.Field(oldObj, func(oldObj *resourcev1.NetworkDeviceData) *string { return &oldObj.InterfaceName }), oldObj != nil)...) // field resourcev1.NetworkDeviceData.IPs errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1353,13 +1353,13 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("ips"), obj.IPs, safe.Field(oldObj, func(oldObj *resourcev1.NetworkDeviceData) []string { return oldObj.IPs }))...) + }(fldPath.Child("ips"), obj.IPs, safe.Field(oldObj, func(oldObj *resourcev1.NetworkDeviceData) []string { return oldObj.IPs }), oldObj != nil)...) // field resourcev1.NetworkDeviceData.HardwareAddress errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1372,7 +1372,7 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld } errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 128)...) return - }(fldPath.Child("hardwareAddress"), &obj.HardwareAddress, safe.Field(oldObj, func(oldObj *resourcev1.NetworkDeviceData) *string { return &oldObj.HardwareAddress }))...) + }(fldPath.Child("hardwareAddress"), &obj.HardwareAddress, safe.Field(oldObj, func(oldObj *resourcev1.NetworkDeviceData) *string { return &oldObj.HardwareAddress }), oldObj != nil)...) return errs } @@ -1382,9 +1382,9 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld func Validate_OpaqueDeviceConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.OpaqueDeviceConfiguration) (errs field.ErrorList) { // field resourcev1.OpaqueDeviceConfiguration.Driver errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1398,7 +1398,7 @@ func Validate_OpaqueDeviceConfiguration(ctx context.Context, op operation.Operat } errs = append(errs, validate.LongNameCaseless(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1.OpaqueDeviceConfiguration) *string { return &oldObj.Driver }))...) + }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1.OpaqueDeviceConfiguration) *string { return &oldObj.Driver }), oldObj != nil)...) // field resourcev1.OpaqueDeviceConfiguration.Parameters has no validation return errs @@ -1412,9 +1412,9 @@ func Validate_ResourceClaim(ctx context.Context, op operation.Operation, fldPath // field resourcev1.ResourceClaim.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1429,19 +1429,19 @@ func Validate_ResourceClaim(ctx context.Context, op operation.Operation, fldPath // call the type's validation function errs = append(errs, Validate_ResourceClaimSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaim) *resourcev1.ResourceClaimSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaim) *resourcev1.ResourceClaimSpec { return &oldObj.Spec }), oldObj != nil)...) // field resourcev1.ResourceClaim.Status errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimStatus) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimStatus, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ResourceClaimStatus(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("status"), &obj.Status, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaim) *resourcev1.ResourceClaimStatus { return &oldObj.Status }))...) + }(fldPath.Child("status"), &obj.Status, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaim) *resourcev1.ResourceClaimStatus { return &oldObj.Status }), oldObj != nil)...) return errs } @@ -1454,15 +1454,15 @@ func Validate_ResourceClaimList(ctx context.Context, op operation.Operation, fld // field resourcev1.ResourceClaimList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.ResourceClaim) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.ResourceClaim, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ResourceClaim)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimList) []resourcev1.ResourceClaim { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimList) []resourcev1.ResourceClaim { return oldObj.Items }), oldObj != nil)...) return errs } @@ -1472,15 +1472,15 @@ func Validate_ResourceClaimList(ctx context.Context, op operation.Operation, fld func Validate_ResourceClaimSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimSpec) (errs field.ErrorList) { // field resourcev1.ResourceClaimSpec.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceClaim) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.DeviceClaim, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_DeviceClaim(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimSpec) *resourcev1.DeviceClaim { return &oldObj.Devices }))...) + }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimSpec) *resourcev1.DeviceClaim { return &oldObj.Devices }), oldObj != nil)...) return errs } @@ -1490,9 +1490,9 @@ func Validate_ResourceClaimSpec(ctx context.Context, op operation.Operation, fld func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimStatus) (errs field.ErrorList) { // field resourcev1.ResourceClaimStatus.Allocation errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.AllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.AllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1510,13 +1510,13 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f // call the type's validation function errs = append(errs, Validate_AllocationResult(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("allocation"), obj.Allocation, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimStatus) *resourcev1.AllocationResult { return oldObj.Allocation }))...) + }(fldPath.Child("allocation"), obj.Allocation, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimStatus) *resourcev1.AllocationResult { return oldObj.Allocation }), oldObj != nil)...) // field resourcev1.ResourceClaimStatus.ReservedFor errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.ResourceClaimConsumerReference) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.ResourceClaimConsumerReference, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1538,13 +1538,13 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f return }(fldPath.Child("reservedFor"), obj.ReservedFor, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimStatus) []resourcev1.ResourceClaimConsumerReference { return oldObj.ReservedFor - }))...) + }), oldObj != nil)...) // field resourcev1.ResourceClaimStatus.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.AllocatedDeviceStatus) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.AllocatedDeviceStatus, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1564,7 +1564,7 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f return a.Driver == b.Driver && a.Device == b.Device && a.Pool == b.Pool && ((a.ShareID == nil && b.ShareID == nil) || (a.ShareID != nil && b.ShareID != nil && *a.ShareID == *b.ShareID)) }, validate.SemanticDeepEqual, Validate_AllocatedDeviceStatus)...) return - }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimStatus) []resourcev1.AllocatedDeviceStatus { return oldObj.Devices }))...) + }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimStatus) []resourcev1.AllocatedDeviceStatus { return oldObj.Devices }), oldObj != nil)...) return errs } @@ -1577,9 +1577,9 @@ func Validate_ResourceClaimTemplate(ctx context.Context, op operation.Operation, // field resourcev1.ResourceClaimTemplate.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimTemplateSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimTemplateSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -1587,7 +1587,7 @@ func Validate_ResourceClaimTemplate(ctx context.Context, op operation.Operation, return }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimTemplate) *resourcev1.ResourceClaimTemplateSpec { return &oldObj.Spec - }))...) + }), oldObj != nil)...) return errs } @@ -1600,9 +1600,9 @@ func Validate_ResourceClaimTemplateList(ctx context.Context, op operation.Operat // field resourcev1.ResourceClaimTemplateList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.ResourceClaimTemplate) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.ResourceClaimTemplate, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -1610,7 +1610,7 @@ func Validate_ResourceClaimTemplateList(ctx context.Context, op operation.Operat return }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimTemplateList) []resourcev1.ResourceClaimTemplate { return oldObj.Items - }))...) + }), oldObj != nil)...) return errs } @@ -1622,15 +1622,15 @@ func Validate_ResourceClaimTemplateSpec(ctx context.Context, op operation.Operat // field resourcev1.ResourceClaimTemplateSpec.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceClaimSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ResourceClaimSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimTemplateSpec) *resourcev1.ResourceClaimSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.ResourceClaimTemplateSpec) *resourcev1.ResourceClaimSpec { return &oldObj.Spec }), oldObj != nil)...) return errs } @@ -1643,15 +1643,15 @@ func Validate_ResourceSlice(ctx context.Context, op operation.Operation, fldPath // field resourcev1.ResourceSlice.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceSliceSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1.ResourceSliceSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ResourceSliceSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.ResourceSlice) *resourcev1.ResourceSliceSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1.ResourceSlice) *resourcev1.ResourceSliceSpec { return &oldObj.Spec }), oldObj != nil)...) return errs } @@ -1664,15 +1664,15 @@ func Validate_ResourceSliceList(ctx context.Context, op operation.Operation, fld // field resourcev1.ResourceSliceList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.ResourceSlice) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.ResourceSlice, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ResourceSlice)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1.ResourceSliceList) []resourcev1.ResourceSlice { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1.ResourceSliceList) []resourcev1.ResourceSlice { return oldObj.Items }), oldObj != nil)...) return errs } @@ -1688,9 +1688,9 @@ func Validate_ResourceSliceSpec(ctx context.Context, op operation.Operation, fld // field resourcev1.ResourceSliceSpec.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1.Device) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1.Device, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1704,7 +1704,7 @@ func Validate_ResourceSliceSpec(ctx context.Context, op operation.Operation, fld // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Device)...) return - }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1.ResourceSliceSpec) []resourcev1.Device { return oldObj.Devices }))...) + }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1.ResourceSliceSpec) []resourcev1.Device { return oldObj.Devices }), oldObj != nil)...) // field resourcev1.ResourceSliceSpec.PerDeviceNodeSelection has no validation // field resourcev1.ResourceSliceSpec.SharedCounters has no validation diff --git a/pkg/apis/resource/v1beta1/zz_generated.validations.go b/pkg/apis/resource/v1beta1/zz_generated.validations.go index c853967af42..fbc7c4d284c 100644 --- a/pkg/apis/resource/v1beta1/zz_generated.validations.go +++ b/pkg/apis/resource/v1beta1/zz_generated.validations.go @@ -118,9 +118,9 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, // field resourcev1beta1.AllocatedDeviceStatus.ShareID errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -133,16 +133,16 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1beta1.AllocatedDeviceStatus) *string { return oldObj.ShareID }))...) + }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1beta1.AllocatedDeviceStatus) *string { return oldObj.ShareID }), oldObj != nil)...) // field resourcev1beta1.AllocatedDeviceStatus.Conditions has no validation // field resourcev1beta1.AllocatedDeviceStatus.Data has no validation // field resourcev1beta1.AllocatedDeviceStatus.NetworkData errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.NetworkDeviceData) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.NetworkDeviceData, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -158,7 +158,7 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, return }(fldPath.Child("networkData"), obj.NetworkData, safe.Field(oldObj, func(oldObj *resourcev1beta1.AllocatedDeviceStatus) *resourcev1beta1.NetworkDeviceData { return oldObj.NetworkData - }))...) + }), oldObj != nil)...) return errs } @@ -178,9 +178,9 @@ func Validate_AllocationConfigSource(ctx context.Context, op operation.Operation func Validate_AllocationResult(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.AllocationResult) (errs field.ErrorList) { // field resourcev1beta1.AllocationResult.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceAllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceAllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -188,7 +188,7 @@ func Validate_AllocationResult(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta1.AllocationResult) *resourcev1beta1.DeviceAllocationResult { return &oldObj.Devices - }))...) + }), oldObj != nil)...) // field resourcev1beta1.AllocationResult.NodeSelector has no validation // field resourcev1beta1.AllocationResult.AllocationTimestamp has no validation @@ -200,9 +200,9 @@ func Validate_AllocationResult(ctx context.Context, op operation.Operation, fldP func Validate_BasicDevice(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.BasicDevice) (errs field.ErrorList) { // field resourcev1beta1.BasicDevice.Attributes errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[resourcev1beta1.QualifiedName]resourcev1beta1.DeviceAttribute) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[resourcev1beta1.QualifiedName]resourcev1beta1.DeviceAttribute, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the map and call the value type's validation function @@ -210,7 +210,7 @@ func Validate_BasicDevice(ctx context.Context, op operation.Operation, fldPath * return }(fldPath.Child("attributes"), obj.Attributes, safe.Field(oldObj, func(oldObj *resourcev1beta1.BasicDevice) map[resourcev1beta1.QualifiedName]resourcev1beta1.DeviceAttribute { return oldObj.Attributes - }))...) + }), oldObj != nil)...) // field resourcev1beta1.BasicDevice.Capacity has no validation // field resourcev1beta1.BasicDevice.ConsumesCounters has no validation @@ -220,23 +220,23 @@ func Validate_BasicDevice(ctx context.Context, op operation.Operation, fldPath * // field resourcev1beta1.BasicDevice.Taints errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceTaint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceTaint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceTaint)...) return - }(fldPath.Child("taints"), obj.Taints, safe.Field(oldObj, func(oldObj *resourcev1beta1.BasicDevice) []resourcev1beta1.DeviceTaint { return oldObj.Taints }))...) + }(fldPath.Child("taints"), obj.Taints, safe.Field(oldObj, func(oldObj *resourcev1beta1.BasicDevice) []resourcev1beta1.DeviceTaint { return oldObj.Taints }), oldObj != nil)...) // field resourcev1beta1.BasicDevice.BindsToNode has no validation // field resourcev1beta1.BasicDevice.BindingConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -252,13 +252,13 @@ func Validate_BasicDevice(ctx context.Context, op operation.Operation, fldPath * return // do not proceed } return - }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1beta1.BasicDevice) []string { return oldObj.BindingConditions }))...) + }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1beta1.BasicDevice) []string { return oldObj.BindingConditions }), oldObj != nil)...) // field resourcev1beta1.BasicDevice.BindingFailureConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -274,7 +274,7 @@ func Validate_BasicDevice(ctx context.Context, op operation.Operation, fldPath * return // do not proceed } return - }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1beta1.BasicDevice) []string { return oldObj.BindingFailureConditions }))...) + }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1beta1.BasicDevice) []string { return oldObj.BindingFailureConditions }), oldObj != nil)...) // field resourcev1beta1.BasicDevice.AllowMultipleAllocations has no validation return errs @@ -287,15 +287,15 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field // field resourcev1beta1.Device.Basic errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.BasicDevice) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.BasicDevice, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_BasicDevice(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("basic"), obj.Basic, safe.Field(oldObj, func(oldObj *resourcev1beta1.Device) *resourcev1beta1.BasicDevice { return oldObj.Basic }))...) + }(fldPath.Child("basic"), obj.Basic, safe.Field(oldObj, func(oldObj *resourcev1beta1.Device) *resourcev1beta1.BasicDevice { return oldObj.Basic }), oldObj != nil)...) return errs } @@ -305,9 +305,9 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceAllocationConfiguration) (errs field.ErrorList) { // field resourcev1beta1.DeviceAllocationConfiguration.Source errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.AllocationConfigSource) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.AllocationConfigSource, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -324,13 +324,13 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op return }(fldPath.Child("source"), &obj.Source, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAllocationConfiguration) *resourcev1beta1.AllocationConfigSource { return &oldObj.Source - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceAllocationConfiguration.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -348,13 +348,13 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAllocationConfiguration) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAllocationConfiguration) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1beta1.DeviceAllocationConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -362,7 +362,7 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1beta1.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAllocationConfiguration) *resourcev1beta1.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -382,9 +382,9 @@ func Validate_DeviceAllocationMode(ctx context.Context, op operation.Operation, func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceAllocationResult) (errs field.ErrorList) { // field resourcev1beta1.DeviceAllocationResult.Results errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceRequestAllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceRequestAllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -404,13 +404,13 @@ func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation return }(fldPath.Child("results"), obj.Results, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAllocationResult) []resourcev1beta1.DeviceRequestAllocationResult { return oldObj.Results - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceAllocationResult.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceAllocationConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceAllocationConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -430,7 +430,7 @@ func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation return }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAllocationResult) []resourcev1beta1.DeviceAllocationConfiguration { return oldObj.Config - }))...) + }), oldObj != nil)...) return errs } @@ -464,9 +464,9 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa // field resourcev1beta1.DeviceAttribute.IntValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -478,13 +478,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("int"), obj.IntValue, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAttribute) *int64 { return oldObj.IntValue }))...) + }(fldPath.Child("int"), obj.IntValue, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAttribute) *int64 { return oldObj.IntValue }), oldObj != nil)...) // field resourcev1beta1.DeviceAttribute.BoolValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -496,13 +496,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("bool"), obj.BoolValue, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAttribute) *bool { return oldObj.BoolValue }))...) + }(fldPath.Child("bool"), obj.BoolValue, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAttribute) *bool { return oldObj.BoolValue }), oldObj != nil)...) // field resourcev1beta1.DeviceAttribute.StringValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -514,13 +514,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("string"), obj.StringValue, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAttribute) *string { return oldObj.StringValue }))...) + }(fldPath.Child("string"), obj.StringValue, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAttribute) *string { return oldObj.StringValue }), oldObj != nil)...) // field resourcev1beta1.DeviceAttribute.VersionValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -532,7 +532,7 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("version"), obj.VersionValue, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAttribute) *string { return oldObj.VersionValue }))...) + }(fldPath.Child("version"), obj.VersionValue, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceAttribute) *string { return oldObj.VersionValue }), oldObj != nil)...) return errs } @@ -542,9 +542,9 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceClaim) (errs field.ErrorList) { // field resourcev1beta1.DeviceClaim.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -564,13 +564,13 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, func(a resourcev1beta1.DeviceRequest, b resourcev1beta1.DeviceRequest) bool { return a.Name == b.Name }, validate.SemanticDeepEqual, Validate_DeviceRequest)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClaim) []resourcev1beta1.DeviceRequest { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClaim) []resourcev1beta1.DeviceRequest { return oldObj.Requests }), oldObj != nil)...) // field resourcev1beta1.DeviceClaim.Constraints errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceConstraint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceConstraint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -590,13 +590,13 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * return }(fldPath.Child("constraints"), obj.Constraints, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClaim) []resourcev1beta1.DeviceConstraint { return oldObj.Constraints - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceClaim.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceClaimConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceClaimConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -616,7 +616,7 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * return }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClaim) []resourcev1beta1.DeviceClaimConfiguration { return oldObj.Config - }))...) + }), oldObj != nil)...) return errs } @@ -626,9 +626,9 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceClaimConfiguration) (errs field.ErrorList) { // field resourcev1beta1.DeviceClaimConfiguration.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -646,13 +646,13 @@ func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operati // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClaimConfiguration) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClaimConfiguration) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1beta1.DeviceClaimConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -660,7 +660,7 @@ func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operati return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1beta1.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClaimConfiguration) *resourcev1beta1.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -672,9 +672,9 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * // field resourcev1beta1.DeviceClass.ObjectMeta errs = append(errs, - func(fldPath *field.Path, obj, oldObj *v1.ObjectMeta) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *v1.ObjectMeta, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -689,19 +689,19 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * errs = append(errs, validate.Subfield(ctx, op, fldPath, obj, oldObj, "name", func(o *v1.ObjectMeta) *string { return &o.Name }, validate.DirectEqualPtr, validate.LongName)...) }() return - }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClass) *v1.ObjectMeta { return &oldObj.ObjectMeta }))...) + }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClass) *v1.ObjectMeta { return &oldObj.ObjectMeta }), oldObj != nil)...) // field resourcev1beta1.DeviceClass.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceClassSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceClassSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_DeviceClassSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClass) *resourcev1beta1.DeviceClassSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClass) *resourcev1beta1.DeviceClassSpec { return &oldObj.Spec }), oldObj != nil)...) return errs } @@ -711,9 +711,9 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * func Validate_DeviceClassConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceClassConfiguration) (errs field.ErrorList) { // field resourcev1beta1.DeviceClassConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -721,7 +721,7 @@ func Validate_DeviceClassConfiguration(ctx context.Context, op operation.Operati return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1beta1.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClassConfiguration) *resourcev1beta1.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -734,15 +734,15 @@ func Validate_DeviceClassList(ctx context.Context, op operation.Operation, fldPa // field resourcev1beta1.DeviceClassList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceClass) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceClass, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceClass)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClassList) []resourcev1beta1.DeviceClass { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClassList) []resourcev1beta1.DeviceClass { return oldObj.Items }), oldObj != nil)...) return errs } @@ -752,9 +752,9 @@ func Validate_DeviceClassList(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceClassSpec) (errs field.ErrorList) { // field resourcev1beta1.DeviceClassSpec.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -772,13 +772,13 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa return }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClassSpec) []resourcev1beta1.DeviceSelector { return oldObj.Selectors - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceClassSpec.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceClassConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceClassConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -798,13 +798,13 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa return }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClassSpec) []resourcev1beta1.DeviceClassConfiguration { return oldObj.Config - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceClassSpec.ExtendedResourceName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -817,7 +817,7 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa } errs = append(errs, validate.ExtendedResourceName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("extendedResourceName"), obj.ExtendedResourceName, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClassSpec) *string { return oldObj.ExtendedResourceName }))...) + }(fldPath.Child("extendedResourceName"), obj.ExtendedResourceName, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceClassSpec) *string { return oldObj.ExtendedResourceName }), oldObj != nil)...) return errs } @@ -827,9 +827,9 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceConfiguration) (errs field.ErrorList) { // field resourcev1beta1.DeviceConfiguration.Opaque errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.OpaqueDeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.OpaqueDeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -845,7 +845,7 @@ func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, f return }(fldPath.Child("opaque"), obj.Opaque, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceConfiguration) *resourcev1beta1.OpaqueDeviceConfiguration { return oldObj.Opaque - }))...) + }), oldObj != nil)...) return errs } @@ -855,9 +855,9 @@ func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, f func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceConstraint) (errs field.ErrorList) { // field resourcev1beta1.DeviceConstraint.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -875,13 +875,13 @@ func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldP // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceConstraint) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceConstraint) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1beta1.DeviceConstraint.MatchAttribute errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.FullyQualifiedName) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.FullyQualifiedName, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -896,7 +896,7 @@ func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("matchAttribute"), obj.MatchAttribute, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceConstraint) *resourcev1beta1.FullyQualifiedName { return oldObj.MatchAttribute - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceConstraint.DistinctAttribute has no validation return errs @@ -910,9 +910,9 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath // field resourcev1beta1.DeviceRequest.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -928,13 +928,13 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath return // do not proceed } return - }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequest) []resourcev1beta1.DeviceSelector { return oldObj.Selectors }))...) + }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequest) []resourcev1beta1.DeviceSelector { return oldObj.Selectors }), oldObj != nil)...) // field resourcev1beta1.DeviceRequest.AllocationMode errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceAllocationMode) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceAllocationMode, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -950,16 +950,16 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath return }(fldPath.Child("allocationMode"), &obj.AllocationMode, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequest) *resourcev1beta1.DeviceAllocationMode { return &oldObj.AllocationMode - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceRequest.Count has no validation // field resourcev1beta1.DeviceRequest.AdminAccess has no validation // field resourcev1beta1.DeviceRequest.FirstAvailable errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceSubRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceSubRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -985,13 +985,13 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath return }(fldPath.Child("firstAvailable"), obj.FirstAvailable, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequest) []resourcev1beta1.DeviceSubRequest { return oldObj.FirstAvailable - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceRequest.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -999,7 +999,7 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath return }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequest) []resourcev1beta1.DeviceToleration { return oldObj.Tolerations - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceRequest.Capacity has no validation return errs @@ -1012,9 +1012,9 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op // field resourcev1beta1.DeviceRequestAllocationResult.Driver errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1028,13 +1028,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.LongNameCaseless(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) *string { return &oldObj.Driver }))...) + }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) *string { return &oldObj.Driver }), oldObj != nil)...) // field resourcev1beta1.DeviceRequestAllocationResult.Pool errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1048,16 +1048,16 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.ResourcePoolName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pool"), &obj.Pool, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) *string { return &oldObj.Pool }))...) + }(fldPath.Child("pool"), &obj.Pool, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) *string { return &oldObj.Pool }), oldObj != nil)...) // field resourcev1beta1.DeviceRequestAllocationResult.Device has no validation // field resourcev1beta1.DeviceRequestAllocationResult.AdminAccess has no validation // field resourcev1beta1.DeviceRequestAllocationResult.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1077,13 +1077,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) []resourcev1beta1.DeviceToleration { return oldObj.Tolerations - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceRequestAllocationResult.BindingConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1099,13 +1099,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return // do not proceed } return - }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) []string { return oldObj.BindingConditions }))...) + }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) []string { return oldObj.BindingConditions }), oldObj != nil)...) // field resourcev1beta1.DeviceRequestAllocationResult.BindingFailureConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1123,13 +1123,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) []string { return oldObj.BindingFailureConditions - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceRequestAllocationResult.ShareID errs = append(errs, - func(fldPath *field.Path, obj, oldObj *types.UID) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *types.UID, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1142,7 +1142,7 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) *types.UID { return oldObj.ShareID }))...) + }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceRequestAllocationResult) *types.UID { return oldObj.ShareID }), oldObj != nil)...) // field resourcev1beta1.DeviceRequestAllocationResult.ConsumedCapacity has no validation return errs @@ -1155,9 +1155,9 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP // field resourcev1beta1.DeviceSubRequest.DeviceClassName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1171,13 +1171,13 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP } errs = append(errs, validate.LongName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("deviceClassName"), &obj.DeviceClassName, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceSubRequest) *string { return &oldObj.DeviceClassName }))...) + }(fldPath.Child("deviceClassName"), &obj.DeviceClassName, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceSubRequest) *string { return &oldObj.DeviceClassName }), oldObj != nil)...) // field resourcev1beta1.DeviceSubRequest.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1192,13 +1192,13 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceSubRequest) []resourcev1beta1.DeviceSelector { return oldObj.Selectors - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceSubRequest.AllocationMode errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceAllocationMode) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceAllocationMode, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function @@ -1206,15 +1206,15 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("allocationMode"), &obj.AllocationMode, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceSubRequest) *resourcev1beta1.DeviceAllocationMode { return &oldObj.AllocationMode - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceSubRequest.Count has no validation // field resourcev1beta1.DeviceSubRequest.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -1222,7 +1222,7 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceSubRequest) []resourcev1beta1.DeviceToleration { return oldObj.Tolerations - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceSubRequest.Capacity has no validation return errs @@ -1236,9 +1236,9 @@ func Validate_DeviceTaint(ctx context.Context, op operation.Operation, fldPath * // field resourcev1beta1.DeviceTaint.Effect errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceTaintEffect) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceTaintEffect, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1253,7 +1253,7 @@ func Validate_DeviceTaint(ctx context.Context, op operation.Operation, fldPath * // call the type's validation function errs = append(errs, Validate_DeviceTaintEffect(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceTaint) *resourcev1beta1.DeviceTaintEffect { return &oldObj.Effect }))...) + }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceTaint) *resourcev1beta1.DeviceTaintEffect { return &oldObj.Effect }), oldObj != nil)...) // field resourcev1beta1.DeviceTaint.TimeAdded has no validation return errs @@ -1274,9 +1274,9 @@ func Validate_DeviceTaintEffect(ctx context.Context, op operation.Operation, fld func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceToleration) (errs field.ErrorList) { // field resourcev1beta1.DeviceToleration.Key errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1289,13 +1289,13 @@ func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldP } errs = append(errs, validate.LabelKey(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("key"), &obj.Key, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceToleration) *string { return &oldObj.Key }))...) + }(fldPath.Child("key"), &obj.Key, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceToleration) *string { return &oldObj.Key }), oldObj != nil)...) // field resourcev1beta1.DeviceToleration.Operator errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceTolerationOperator) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceTolerationOperator, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function @@ -1303,15 +1303,15 @@ func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("operator"), &obj.Operator, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceToleration) *resourcev1beta1.DeviceTolerationOperator { return &oldObj.Operator - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceToleration.Value has no validation // field resourcev1beta1.DeviceToleration.Effect errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceTaintEffect) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceTaintEffect, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function @@ -1319,7 +1319,7 @@ func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1beta1.DeviceToleration) *resourcev1beta1.DeviceTaintEffect { return &oldObj.Effect - }))...) + }), oldObj != nil)...) // field resourcev1beta1.DeviceToleration.TolerationSeconds has no validation return errs @@ -1340,9 +1340,9 @@ func Validate_DeviceTolerationOperator(ctx context.Context, op operation.Operati func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.NetworkDeviceData) (errs field.ErrorList) { // field resourcev1beta1.NetworkDeviceData.InterfaceName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1355,13 +1355,13 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld } errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 256)...) return - }(fldPath.Child("interfaceName"), &obj.InterfaceName, safe.Field(oldObj, func(oldObj *resourcev1beta1.NetworkDeviceData) *string { return &oldObj.InterfaceName }))...) + }(fldPath.Child("interfaceName"), &obj.InterfaceName, safe.Field(oldObj, func(oldObj *resourcev1beta1.NetworkDeviceData) *string { return &oldObj.InterfaceName }), oldObj != nil)...) // field resourcev1beta1.NetworkDeviceData.IPs errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1379,13 +1379,13 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("ips"), obj.IPs, safe.Field(oldObj, func(oldObj *resourcev1beta1.NetworkDeviceData) []string { return oldObj.IPs }))...) + }(fldPath.Child("ips"), obj.IPs, safe.Field(oldObj, func(oldObj *resourcev1beta1.NetworkDeviceData) []string { return oldObj.IPs }), oldObj != nil)...) // field resourcev1beta1.NetworkDeviceData.HardwareAddress errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1398,7 +1398,7 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld } errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 128)...) return - }(fldPath.Child("hardwareAddress"), &obj.HardwareAddress, safe.Field(oldObj, func(oldObj *resourcev1beta1.NetworkDeviceData) *string { return &oldObj.HardwareAddress }))...) + }(fldPath.Child("hardwareAddress"), &obj.HardwareAddress, safe.Field(oldObj, func(oldObj *resourcev1beta1.NetworkDeviceData) *string { return &oldObj.HardwareAddress }), oldObj != nil)...) return errs } @@ -1408,9 +1408,9 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld func Validate_OpaqueDeviceConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.OpaqueDeviceConfiguration) (errs field.ErrorList) { // field resourcev1beta1.OpaqueDeviceConfiguration.Driver errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1424,7 +1424,7 @@ func Validate_OpaqueDeviceConfiguration(ctx context.Context, op operation.Operat } errs = append(errs, validate.LongNameCaseless(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1beta1.OpaqueDeviceConfiguration) *string { return &oldObj.Driver }))...) + }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1beta1.OpaqueDeviceConfiguration) *string { return &oldObj.Driver }), oldObj != nil)...) // field resourcev1beta1.OpaqueDeviceConfiguration.Parameters has no validation return errs @@ -1438,9 +1438,9 @@ func Validate_ResourceClaim(ctx context.Context, op operation.Operation, fldPath // field resourcev1beta1.ResourceClaim.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1455,13 +1455,13 @@ func Validate_ResourceClaim(ctx context.Context, op operation.Operation, fldPath // call the type's validation function errs = append(errs, Validate_ResourceClaimSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaim) *resourcev1beta1.ResourceClaimSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaim) *resourcev1beta1.ResourceClaimSpec { return &oldObj.Spec }), oldObj != nil)...) // field resourcev1beta1.ResourceClaim.Status errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimStatus) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimStatus, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -1469,7 +1469,7 @@ func Validate_ResourceClaim(ctx context.Context, op operation.Operation, fldPath return }(fldPath.Child("status"), &obj.Status, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaim) *resourcev1beta1.ResourceClaimStatus { return &oldObj.Status - }))...) + }), oldObj != nil)...) return errs } @@ -1482,15 +1482,15 @@ func Validate_ResourceClaimList(ctx context.Context, op operation.Operation, fld // field resourcev1beta1.ResourceClaimList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.ResourceClaim) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.ResourceClaim, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ResourceClaim)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimList) []resourcev1beta1.ResourceClaim { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimList) []resourcev1beta1.ResourceClaim { return oldObj.Items }), oldObj != nil)...) return errs } @@ -1500,15 +1500,15 @@ func Validate_ResourceClaimList(ctx context.Context, op operation.Operation, fld func Validate_ResourceClaimSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimSpec) (errs field.ErrorList) { // field resourcev1beta1.ResourceClaimSpec.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceClaim) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.DeviceClaim, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_DeviceClaim(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimSpec) *resourcev1beta1.DeviceClaim { return &oldObj.Devices }))...) + }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimSpec) *resourcev1beta1.DeviceClaim { return &oldObj.Devices }), oldObj != nil)...) return errs } @@ -1518,9 +1518,9 @@ func Validate_ResourceClaimSpec(ctx context.Context, op operation.Operation, fld func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimStatus) (errs field.ErrorList) { // field resourcev1beta1.ResourceClaimStatus.Allocation errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.AllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.AllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1540,13 +1540,13 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f return }(fldPath.Child("allocation"), obj.Allocation, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimStatus) *resourcev1beta1.AllocationResult { return oldObj.Allocation - }))...) + }), oldObj != nil)...) // field resourcev1beta1.ResourceClaimStatus.ReservedFor errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.ResourceClaimConsumerReference) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.ResourceClaimConsumerReference, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1568,13 +1568,13 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f return }(fldPath.Child("reservedFor"), obj.ReservedFor, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimStatus) []resourcev1beta1.ResourceClaimConsumerReference { return oldObj.ReservedFor - }))...) + }), oldObj != nil)...) // field resourcev1beta1.ResourceClaimStatus.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.AllocatedDeviceStatus) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.AllocatedDeviceStatus, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1596,7 +1596,7 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f return }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimStatus) []resourcev1beta1.AllocatedDeviceStatus { return oldObj.Devices - }))...) + }), oldObj != nil)...) return errs } @@ -1609,9 +1609,9 @@ func Validate_ResourceClaimTemplate(ctx context.Context, op operation.Operation, // field resourcev1beta1.ResourceClaimTemplate.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimTemplateSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimTemplateSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -1619,7 +1619,7 @@ func Validate_ResourceClaimTemplate(ctx context.Context, op operation.Operation, return }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimTemplate) *resourcev1beta1.ResourceClaimTemplateSpec { return &oldObj.Spec - }))...) + }), oldObj != nil)...) return errs } @@ -1632,9 +1632,9 @@ func Validate_ResourceClaimTemplateList(ctx context.Context, op operation.Operat // field resourcev1beta1.ResourceClaimTemplateList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.ResourceClaimTemplate) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.ResourceClaimTemplate, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -1642,7 +1642,7 @@ func Validate_ResourceClaimTemplateList(ctx context.Context, op operation.Operat return }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimTemplateList) []resourcev1beta1.ResourceClaimTemplate { return oldObj.Items - }))...) + }), oldObj != nil)...) return errs } @@ -1654,9 +1654,9 @@ func Validate_ResourceClaimTemplateSpec(ctx context.Context, op operation.Operat // field resourcev1beta1.ResourceClaimTemplateSpec.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceClaimSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -1664,7 +1664,7 @@ func Validate_ResourceClaimTemplateSpec(ctx context.Context, op operation.Operat return }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceClaimTemplateSpec) *resourcev1beta1.ResourceClaimSpec { return &oldObj.Spec - }))...) + }), oldObj != nil)...) return errs } @@ -1677,15 +1677,15 @@ func Validate_ResourceSlice(ctx context.Context, op operation.Operation, fldPath // field resourcev1beta1.ResourceSlice.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceSliceSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta1.ResourceSliceSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ResourceSliceSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceSlice) *resourcev1beta1.ResourceSliceSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceSlice) *resourcev1beta1.ResourceSliceSpec { return &oldObj.Spec }), oldObj != nil)...) return errs } @@ -1698,15 +1698,15 @@ func Validate_ResourceSliceList(ctx context.Context, op operation.Operation, fld // field resourcev1beta1.ResourceSliceList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.ResourceSlice) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.ResourceSlice, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ResourceSlice)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceSliceList) []resourcev1beta1.ResourceSlice { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceSliceList) []resourcev1beta1.ResourceSlice { return oldObj.Items }), oldObj != nil)...) return errs } @@ -1722,9 +1722,9 @@ func Validate_ResourceSliceSpec(ctx context.Context, op operation.Operation, fld // field resourcev1beta1.ResourceSliceSpec.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta1.Device) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta1.Device, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1738,7 +1738,7 @@ func Validate_ResourceSliceSpec(ctx context.Context, op operation.Operation, fld // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Device)...) return - }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceSliceSpec) []resourcev1beta1.Device { return oldObj.Devices }))...) + }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta1.ResourceSliceSpec) []resourcev1beta1.Device { return oldObj.Devices }), oldObj != nil)...) // field resourcev1beta1.ResourceSliceSpec.PerDeviceNodeSelection has no validation // field resourcev1beta1.ResourceSliceSpec.SharedCounters has no validation diff --git a/pkg/apis/resource/v1beta2/zz_generated.validations.go b/pkg/apis/resource/v1beta2/zz_generated.validations.go index b6b114b84bb..7985229a81c 100644 --- a/pkg/apis/resource/v1beta2/zz_generated.validations.go +++ b/pkg/apis/resource/v1beta2/zz_generated.validations.go @@ -118,9 +118,9 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, // field resourcev1beta2.AllocatedDeviceStatus.ShareID errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -133,16 +133,16 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1beta2.AllocatedDeviceStatus) *string { return oldObj.ShareID }))...) + }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1beta2.AllocatedDeviceStatus) *string { return oldObj.ShareID }), oldObj != nil)...) // field resourcev1beta2.AllocatedDeviceStatus.Conditions has no validation // field resourcev1beta2.AllocatedDeviceStatus.Data has no validation // field resourcev1beta2.AllocatedDeviceStatus.NetworkData errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.NetworkDeviceData) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.NetworkDeviceData, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -158,7 +158,7 @@ func Validate_AllocatedDeviceStatus(ctx context.Context, op operation.Operation, return }(fldPath.Child("networkData"), obj.NetworkData, safe.Field(oldObj, func(oldObj *resourcev1beta2.AllocatedDeviceStatus) *resourcev1beta2.NetworkDeviceData { return oldObj.NetworkData - }))...) + }), oldObj != nil)...) return errs } @@ -178,9 +178,9 @@ func Validate_AllocationConfigSource(ctx context.Context, op operation.Operation func Validate_AllocationResult(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.AllocationResult) (errs field.ErrorList) { // field resourcev1beta2.AllocationResult.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceAllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceAllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -188,7 +188,7 @@ func Validate_AllocationResult(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta2.AllocationResult) *resourcev1beta2.DeviceAllocationResult { return &oldObj.Devices - }))...) + }), oldObj != nil)...) // field resourcev1beta2.AllocationResult.NodeSelector has no validation // field resourcev1beta2.AllocationResult.AllocationTimestamp has no validation @@ -202,9 +202,9 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field // field resourcev1beta2.Device.Attributes errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[resourcev1beta2.QualifiedName]resourcev1beta2.DeviceAttribute) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[resourcev1beta2.QualifiedName]resourcev1beta2.DeviceAttribute, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the map and call the value type's validation function @@ -212,7 +212,7 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field return }(fldPath.Child("attributes"), obj.Attributes, safe.Field(oldObj, func(oldObj *resourcev1beta2.Device) map[resourcev1beta2.QualifiedName]resourcev1beta2.DeviceAttribute { return oldObj.Attributes - }))...) + }), oldObj != nil)...) // field resourcev1beta2.Device.Capacity has no validation // field resourcev1beta2.Device.ConsumesCounters has no validation @@ -222,23 +222,23 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field // field resourcev1beta2.Device.Taints errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceTaint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceTaint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceTaint)...) return - }(fldPath.Child("taints"), obj.Taints, safe.Field(oldObj, func(oldObj *resourcev1beta2.Device) []resourcev1beta2.DeviceTaint { return oldObj.Taints }))...) + }(fldPath.Child("taints"), obj.Taints, safe.Field(oldObj, func(oldObj *resourcev1beta2.Device) []resourcev1beta2.DeviceTaint { return oldObj.Taints }), oldObj != nil)...) // field resourcev1beta2.Device.BindsToNode has no validation // field resourcev1beta2.Device.BindingConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -254,13 +254,13 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1beta2.Device) []string { return oldObj.BindingConditions }))...) + }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1beta2.Device) []string { return oldObj.BindingConditions }), oldObj != nil)...) // field resourcev1beta2.Device.BindingFailureConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -276,7 +276,7 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1beta2.Device) []string { return oldObj.BindingFailureConditions }))...) + }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1beta2.Device) []string { return oldObj.BindingFailureConditions }), oldObj != nil)...) // field resourcev1beta2.Device.AllowMultipleAllocations has no validation return errs @@ -287,9 +287,9 @@ func Validate_Device(ctx context.Context, op operation.Operation, fldPath *field func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceAllocationConfiguration) (errs field.ErrorList) { // field resourcev1beta2.DeviceAllocationConfiguration.Source errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.AllocationConfigSource) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.AllocationConfigSource, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -306,13 +306,13 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op return }(fldPath.Child("source"), &obj.Source, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAllocationConfiguration) *resourcev1beta2.AllocationConfigSource { return &oldObj.Source - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceAllocationConfiguration.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -330,13 +330,13 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAllocationConfiguration) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAllocationConfiguration) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1beta2.DeviceAllocationConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -344,7 +344,7 @@ func Validate_DeviceAllocationConfiguration(ctx context.Context, op operation.Op return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1beta2.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAllocationConfiguration) *resourcev1beta2.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -364,9 +364,9 @@ func Validate_DeviceAllocationMode(ctx context.Context, op operation.Operation, func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceAllocationResult) (errs field.ErrorList) { // field resourcev1beta2.DeviceAllocationResult.Results errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceRequestAllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceRequestAllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -386,13 +386,13 @@ func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation return }(fldPath.Child("results"), obj.Results, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAllocationResult) []resourcev1beta2.DeviceRequestAllocationResult { return oldObj.Results - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceAllocationResult.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceAllocationConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceAllocationConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -412,7 +412,7 @@ func Validate_DeviceAllocationResult(ctx context.Context, op operation.Operation return }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAllocationResult) []resourcev1beta2.DeviceAllocationConfiguration { return oldObj.Config - }))...) + }), oldObj != nil)...) return errs } @@ -446,9 +446,9 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa // field resourcev1beta2.DeviceAttribute.IntValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -460,13 +460,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("int"), obj.IntValue, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAttribute) *int64 { return oldObj.IntValue }))...) + }(fldPath.Child("int"), obj.IntValue, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAttribute) *int64 { return oldObj.IntValue }), oldObj != nil)...) // field resourcev1beta2.DeviceAttribute.BoolValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -478,13 +478,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("bool"), obj.BoolValue, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAttribute) *bool { return oldObj.BoolValue }))...) + }(fldPath.Child("bool"), obj.BoolValue, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAttribute) *bool { return oldObj.BoolValue }), oldObj != nil)...) // field resourcev1beta2.DeviceAttribute.StringValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -496,13 +496,13 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("string"), obj.StringValue, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAttribute) *string { return oldObj.StringValue }))...) + }(fldPath.Child("string"), obj.StringValue, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAttribute) *string { return oldObj.StringValue }), oldObj != nil)...) // field resourcev1beta2.DeviceAttribute.VersionValue errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -514,7 +514,7 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("version"), obj.VersionValue, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAttribute) *string { return oldObj.VersionValue }))...) + }(fldPath.Child("version"), obj.VersionValue, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceAttribute) *string { return oldObj.VersionValue }), oldObj != nil)...) return errs } @@ -524,9 +524,9 @@ func Validate_DeviceAttribute(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceClaim) (errs field.ErrorList) { // field resourcev1beta2.DeviceClaim.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -546,13 +546,13 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, func(a resourcev1beta2.DeviceRequest, b resourcev1beta2.DeviceRequest) bool { return a.Name == b.Name }, validate.SemanticDeepEqual, Validate_DeviceRequest)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClaim) []resourcev1beta2.DeviceRequest { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClaim) []resourcev1beta2.DeviceRequest { return oldObj.Requests }), oldObj != nil)...) // field resourcev1beta2.DeviceClaim.Constraints errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceConstraint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceConstraint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -572,13 +572,13 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * return }(fldPath.Child("constraints"), obj.Constraints, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClaim) []resourcev1beta2.DeviceConstraint { return oldObj.Constraints - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceClaim.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceClaimConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceClaimConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -598,7 +598,7 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * return }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClaim) []resourcev1beta2.DeviceClaimConfiguration { return oldObj.Config - }))...) + }), oldObj != nil)...) return errs } @@ -608,9 +608,9 @@ func Validate_DeviceClaim(ctx context.Context, op operation.Operation, fldPath * func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceClaimConfiguration) (errs field.ErrorList) { // field resourcev1beta2.DeviceClaimConfiguration.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -628,13 +628,13 @@ func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operati // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClaimConfiguration) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClaimConfiguration) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1beta2.DeviceClaimConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -642,7 +642,7 @@ func Validate_DeviceClaimConfiguration(ctx context.Context, op operation.Operati return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1beta2.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClaimConfiguration) *resourcev1beta2.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -654,9 +654,9 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * // field resourcev1beta2.DeviceClass.ObjectMeta errs = append(errs, - func(fldPath *field.Path, obj, oldObj *v1.ObjectMeta) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *v1.ObjectMeta, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -671,19 +671,19 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * errs = append(errs, validate.Subfield(ctx, op, fldPath, obj, oldObj, "name", func(o *v1.ObjectMeta) *string { return &o.Name }, validate.DirectEqualPtr, validate.LongName)...) }() return - }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClass) *v1.ObjectMeta { return &oldObj.ObjectMeta }))...) + }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClass) *v1.ObjectMeta { return &oldObj.ObjectMeta }), oldObj != nil)...) // field resourcev1beta2.DeviceClass.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceClassSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceClassSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_DeviceClassSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClass) *resourcev1beta2.DeviceClassSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClass) *resourcev1beta2.DeviceClassSpec { return &oldObj.Spec }), oldObj != nil)...) return errs } @@ -693,9 +693,9 @@ func Validate_DeviceClass(ctx context.Context, op operation.Operation, fldPath * func Validate_DeviceClassConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceClassConfiguration) (errs field.ErrorList) { // field resourcev1beta2.DeviceClassConfiguration.DeviceConfiguration errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -703,7 +703,7 @@ func Validate_DeviceClassConfiguration(ctx context.Context, op operation.Operati return }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("resourcev1beta2.DeviceConfiguration") }), &obj.DeviceConfiguration, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClassConfiguration) *resourcev1beta2.DeviceConfiguration { return &oldObj.DeviceConfiguration - }))...) + }), oldObj != nil)...) return errs } @@ -716,15 +716,15 @@ func Validate_DeviceClassList(ctx context.Context, op operation.Operation, fldPa // field resourcev1beta2.DeviceClassList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceClass) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceClass, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_DeviceClass)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClassList) []resourcev1beta2.DeviceClass { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClassList) []resourcev1beta2.DeviceClass { return oldObj.Items }), oldObj != nil)...) return errs } @@ -734,9 +734,9 @@ func Validate_DeviceClassList(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceClassSpec) (errs field.ErrorList) { // field resourcev1beta2.DeviceClassSpec.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -754,13 +754,13 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa return }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClassSpec) []resourcev1beta2.DeviceSelector { return oldObj.Selectors - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceClassSpec.Config errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceClassConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceClassConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -780,13 +780,13 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa return }(fldPath.Child("config"), obj.Config, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClassSpec) []resourcev1beta2.DeviceClassConfiguration { return oldObj.Config - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceClassSpec.ExtendedResourceName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -799,7 +799,7 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa } errs = append(errs, validate.ExtendedResourceName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("extendedResourceName"), obj.ExtendedResourceName, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClassSpec) *string { return oldObj.ExtendedResourceName }))...) + }(fldPath.Child("extendedResourceName"), obj.ExtendedResourceName, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceClassSpec) *string { return oldObj.ExtendedResourceName }), oldObj != nil)...) return errs } @@ -809,9 +809,9 @@ func Validate_DeviceClassSpec(ctx context.Context, op operation.Operation, fldPa func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceConfiguration) (errs field.ErrorList) { // field resourcev1beta2.DeviceConfiguration.Opaque errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.OpaqueDeviceConfiguration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.OpaqueDeviceConfiguration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -827,7 +827,7 @@ func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, f return }(fldPath.Child("opaque"), obj.Opaque, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceConfiguration) *resourcev1beta2.OpaqueDeviceConfiguration { return oldObj.Opaque - }))...) + }), oldObj != nil)...) return errs } @@ -837,9 +837,9 @@ func Validate_DeviceConfiguration(ctx context.Context, op operation.Operation, f func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceConstraint) (errs field.ErrorList) { // field resourcev1beta2.DeviceConstraint.Requests errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -857,13 +857,13 @@ func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldP // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceConstraint) []string { return oldObj.Requests }))...) + }(fldPath.Child("requests"), obj.Requests, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceConstraint) []string { return oldObj.Requests }), oldObj != nil)...) // field resourcev1beta2.DeviceConstraint.MatchAttribute errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.FullyQualifiedName) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.FullyQualifiedName, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -878,7 +878,7 @@ func Validate_DeviceConstraint(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("matchAttribute"), obj.MatchAttribute, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceConstraint) *resourcev1beta2.FullyQualifiedName { return oldObj.MatchAttribute - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceConstraint.DistinctAttribute has no validation return errs @@ -891,9 +891,9 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath // field resourcev1beta2.DeviceRequest.Exactly errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ExactDeviceRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ExactDeviceRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -907,13 +907,13 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath // call the type's validation function errs = append(errs, Validate_ExactDeviceRequest(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("exactly"), obj.Exactly, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequest) *resourcev1beta2.ExactDeviceRequest { return oldObj.Exactly }))...) + }(fldPath.Child("exactly"), obj.Exactly, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequest) *resourcev1beta2.ExactDeviceRequest { return oldObj.Exactly }), oldObj != nil)...) // field resourcev1beta2.DeviceRequest.FirstAvailable errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceSubRequest) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceSubRequest, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -939,7 +939,7 @@ func Validate_DeviceRequest(ctx context.Context, op operation.Operation, fldPath return }(fldPath.Child("firstAvailable"), obj.FirstAvailable, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequest) []resourcev1beta2.DeviceSubRequest { return oldObj.FirstAvailable - }))...) + }), oldObj != nil)...) return errs } @@ -951,9 +951,9 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op // field resourcev1beta2.DeviceRequestAllocationResult.Driver errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -967,13 +967,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.LongNameCaseless(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) *string { return &oldObj.Driver }))...) + }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) *string { return &oldObj.Driver }), oldObj != nil)...) // field resourcev1beta2.DeviceRequestAllocationResult.Pool errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -987,16 +987,16 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.ResourcePoolName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pool"), &obj.Pool, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) *string { return &oldObj.Pool }))...) + }(fldPath.Child("pool"), &obj.Pool, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) *string { return &oldObj.Pool }), oldObj != nil)...) // field resourcev1beta2.DeviceRequestAllocationResult.Device has no validation // field resourcev1beta2.DeviceRequestAllocationResult.AdminAccess has no validation // field resourcev1beta2.DeviceRequestAllocationResult.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -1004,13 +1004,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) []resourcev1beta2.DeviceToleration { return oldObj.Tolerations - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceRequestAllocationResult.BindingConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1026,13 +1026,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return // do not proceed } return - }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) []string { return oldObj.BindingConditions }))...) + }(fldPath.Child("bindingConditions"), obj.BindingConditions, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) []string { return oldObj.BindingConditions }), oldObj != nil)...) // field resourcev1beta2.DeviceRequestAllocationResult.BindingFailureConditions errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1050,13 +1050,13 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op return }(fldPath.Child("bindingFailureConditions"), obj.BindingFailureConditions, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) []string { return oldObj.BindingFailureConditions - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceRequestAllocationResult.ShareID errs = append(errs, - func(fldPath *field.Path, obj, oldObj *types.UID) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *types.UID, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1069,7 +1069,7 @@ func Validate_DeviceRequestAllocationResult(ctx context.Context, op operation.Op } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) *types.UID { return oldObj.ShareID }))...) + }(fldPath.Child("shareID"), obj.ShareID, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceRequestAllocationResult) *types.UID { return oldObj.ShareID }), oldObj != nil)...) // field resourcev1beta2.DeviceRequestAllocationResult.ConsumedCapacity has no validation return errs @@ -1082,9 +1082,9 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP // field resourcev1beta2.DeviceSubRequest.DeviceClassName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1098,13 +1098,13 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP } errs = append(errs, validate.LongName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("deviceClassName"), &obj.DeviceClassName, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceSubRequest) *string { return &oldObj.DeviceClassName }))...) + }(fldPath.Child("deviceClassName"), &obj.DeviceClassName, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceSubRequest) *string { return &oldObj.DeviceClassName }), oldObj != nil)...) // field resourcev1beta2.DeviceSubRequest.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1122,13 +1122,13 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceSubRequest) []resourcev1beta2.DeviceSelector { return oldObj.Selectors - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceSubRequest.AllocationMode errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceAllocationMode) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceAllocationMode, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function @@ -1136,15 +1136,15 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("allocationMode"), &obj.AllocationMode, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceSubRequest) *resourcev1beta2.DeviceAllocationMode { return &oldObj.AllocationMode - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceSubRequest.Count has no validation // field resourcev1beta2.DeviceSubRequest.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -1152,7 +1152,7 @@ func Validate_DeviceSubRequest(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceSubRequest) []resourcev1beta2.DeviceToleration { return oldObj.Tolerations - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceSubRequest.Capacity has no validation return errs @@ -1166,9 +1166,9 @@ func Validate_DeviceTaint(ctx context.Context, op operation.Operation, fldPath * // field resourcev1beta2.DeviceTaint.Effect errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceTaintEffect) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceTaintEffect, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1183,7 +1183,7 @@ func Validate_DeviceTaint(ctx context.Context, op operation.Operation, fldPath * // call the type's validation function errs = append(errs, Validate_DeviceTaintEffect(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceTaint) *resourcev1beta2.DeviceTaintEffect { return &oldObj.Effect }))...) + }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceTaint) *resourcev1beta2.DeviceTaintEffect { return &oldObj.Effect }), oldObj != nil)...) // field resourcev1beta2.DeviceTaint.TimeAdded has no validation return errs @@ -1204,9 +1204,9 @@ func Validate_DeviceTaintEffect(ctx context.Context, op operation.Operation, fld func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceToleration) (errs field.ErrorList) { // field resourcev1beta2.DeviceToleration.Key errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1219,13 +1219,13 @@ func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldP } errs = append(errs, validate.LabelKey(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("key"), &obj.Key, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceToleration) *string { return &oldObj.Key }))...) + }(fldPath.Child("key"), &obj.Key, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceToleration) *string { return &oldObj.Key }), oldObj != nil)...) // field resourcev1beta2.DeviceToleration.Operator errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceTolerationOperator) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceTolerationOperator, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function @@ -1233,15 +1233,15 @@ func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("operator"), &obj.Operator, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceToleration) *resourcev1beta2.DeviceTolerationOperator { return &oldObj.Operator - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceToleration.Value has no validation // field resourcev1beta2.DeviceToleration.Effect errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceTaintEffect) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceTaintEffect, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function @@ -1249,7 +1249,7 @@ func Validate_DeviceToleration(ctx context.Context, op operation.Operation, fldP return }(fldPath.Child("effect"), &obj.Effect, safe.Field(oldObj, func(oldObj *resourcev1beta2.DeviceToleration) *resourcev1beta2.DeviceTaintEffect { return &oldObj.Effect - }))...) + }), oldObj != nil)...) // field resourcev1beta2.DeviceToleration.TolerationSeconds has no validation return errs @@ -1272,9 +1272,9 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl // field resourcev1beta2.ExactDeviceRequest.Selectors errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceSelector) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceSelector, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1292,13 +1292,13 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl return }(fldPath.Child("selectors"), obj.Selectors, safe.Field(oldObj, func(oldObj *resourcev1beta2.ExactDeviceRequest) []resourcev1beta2.DeviceSelector { return oldObj.Selectors - }))...) + }), oldObj != nil)...) // field resourcev1beta2.ExactDeviceRequest.AllocationMode errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceAllocationMode) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceAllocationMode, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1314,16 +1314,16 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl return }(fldPath.Child("allocationMode"), &obj.AllocationMode, safe.Field(oldObj, func(oldObj *resourcev1beta2.ExactDeviceRequest) *resourcev1beta2.DeviceAllocationMode { return &oldObj.AllocationMode - }))...) + }), oldObj != nil)...) // field resourcev1beta2.ExactDeviceRequest.Count has no validation // field resourcev1beta2.ExactDeviceRequest.AdminAccess has no validation // field resourcev1beta2.ExactDeviceRequest.Tolerations errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceToleration) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.DeviceToleration, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -1331,7 +1331,7 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl return }(fldPath.Child("tolerations"), obj.Tolerations, safe.Field(oldObj, func(oldObj *resourcev1beta2.ExactDeviceRequest) []resourcev1beta2.DeviceToleration { return oldObj.Tolerations - }))...) + }), oldObj != nil)...) // field resourcev1beta2.ExactDeviceRequest.Capacity has no validation return errs @@ -1342,9 +1342,9 @@ func Validate_ExactDeviceRequest(ctx context.Context, op operation.Operation, fl func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.NetworkDeviceData) (errs field.ErrorList) { // field resourcev1beta2.NetworkDeviceData.InterfaceName errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1357,13 +1357,13 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld } errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 256)...) return - }(fldPath.Child("interfaceName"), &obj.InterfaceName, safe.Field(oldObj, func(oldObj *resourcev1beta2.NetworkDeviceData) *string { return &oldObj.InterfaceName }))...) + }(fldPath.Child("interfaceName"), &obj.InterfaceName, safe.Field(oldObj, func(oldObj *resourcev1beta2.NetworkDeviceData) *string { return &oldObj.InterfaceName }), oldObj != nil)...) // field resourcev1beta2.NetworkDeviceData.IPs errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1381,13 +1381,13 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("ips"), obj.IPs, safe.Field(oldObj, func(oldObj *resourcev1beta2.NetworkDeviceData) []string { return oldObj.IPs }))...) + }(fldPath.Child("ips"), obj.IPs, safe.Field(oldObj, func(oldObj *resourcev1beta2.NetworkDeviceData) []string { return oldObj.IPs }), oldObj != nil)...) // field resourcev1beta2.NetworkDeviceData.HardwareAddress errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1400,7 +1400,7 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld } errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 128)...) return - }(fldPath.Child("hardwareAddress"), &obj.HardwareAddress, safe.Field(oldObj, func(oldObj *resourcev1beta2.NetworkDeviceData) *string { return &oldObj.HardwareAddress }))...) + }(fldPath.Child("hardwareAddress"), &obj.HardwareAddress, safe.Field(oldObj, func(oldObj *resourcev1beta2.NetworkDeviceData) *string { return &oldObj.HardwareAddress }), oldObj != nil)...) return errs } @@ -1410,9 +1410,9 @@ func Validate_NetworkDeviceData(ctx context.Context, op operation.Operation, fld func Validate_OpaqueDeviceConfiguration(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.OpaqueDeviceConfiguration) (errs field.ErrorList) { // field resourcev1beta2.OpaqueDeviceConfiguration.Driver errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -1426,7 +1426,7 @@ func Validate_OpaqueDeviceConfiguration(ctx context.Context, op operation.Operat } errs = append(errs, validate.LongNameCaseless(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1beta2.OpaqueDeviceConfiguration) *string { return &oldObj.Driver }))...) + }(fldPath.Child("driver"), &obj.Driver, safe.Field(oldObj, func(oldObj *resourcev1beta2.OpaqueDeviceConfiguration) *string { return &oldObj.Driver }), oldObj != nil)...) // field resourcev1beta2.OpaqueDeviceConfiguration.Parameters has no validation return errs @@ -1440,9 +1440,9 @@ func Validate_ResourceClaim(ctx context.Context, op operation.Operation, fldPath // field resourcev1beta2.ResourceClaim.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1457,13 +1457,13 @@ func Validate_ResourceClaim(ctx context.Context, op operation.Operation, fldPath // call the type's validation function errs = append(errs, Validate_ResourceClaimSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaim) *resourcev1beta2.ResourceClaimSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaim) *resourcev1beta2.ResourceClaimSpec { return &oldObj.Spec }), oldObj != nil)...) // field resourcev1beta2.ResourceClaim.Status errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimStatus) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimStatus, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -1471,7 +1471,7 @@ func Validate_ResourceClaim(ctx context.Context, op operation.Operation, fldPath return }(fldPath.Child("status"), &obj.Status, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaim) *resourcev1beta2.ResourceClaimStatus { return &oldObj.Status - }))...) + }), oldObj != nil)...) return errs } @@ -1484,15 +1484,15 @@ func Validate_ResourceClaimList(ctx context.Context, op operation.Operation, fld // field resourcev1beta2.ResourceClaimList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.ResourceClaim) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.ResourceClaim, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ResourceClaim)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimList) []resourcev1beta2.ResourceClaim { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimList) []resourcev1beta2.ResourceClaim { return oldObj.Items }), oldObj != nil)...) return errs } @@ -1502,15 +1502,15 @@ func Validate_ResourceClaimList(ctx context.Context, op operation.Operation, fld func Validate_ResourceClaimSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimSpec) (errs field.ErrorList) { // field resourcev1beta2.ResourceClaimSpec.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceClaim) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.DeviceClaim, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_DeviceClaim(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimSpec) *resourcev1beta2.DeviceClaim { return &oldObj.Devices }))...) + }(fldPath.Child("devices"), &obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimSpec) *resourcev1beta2.DeviceClaim { return &oldObj.Devices }), oldObj != nil)...) return errs } @@ -1520,9 +1520,9 @@ func Validate_ResourceClaimSpec(ctx context.Context, op operation.Operation, fld func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimStatus) (errs field.ErrorList) { // field resourcev1beta2.ResourceClaimStatus.Allocation errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.AllocationResult) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.AllocationResult, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1542,13 +1542,13 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f return }(fldPath.Child("allocation"), obj.Allocation, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimStatus) *resourcev1beta2.AllocationResult { return oldObj.Allocation - }))...) + }), oldObj != nil)...) // field resourcev1beta2.ResourceClaimStatus.ReservedFor errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.ResourceClaimConsumerReference) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.ResourceClaimConsumerReference, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1570,13 +1570,13 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f return }(fldPath.Child("reservedFor"), obj.ReservedFor, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimStatus) []resourcev1beta2.ResourceClaimConsumerReference { return oldObj.ReservedFor - }))...) + }), oldObj != nil)...) // field resourcev1beta2.ResourceClaimStatus.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.AllocatedDeviceStatus) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.AllocatedDeviceStatus, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1598,7 +1598,7 @@ func Validate_ResourceClaimStatus(ctx context.Context, op operation.Operation, f return }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimStatus) []resourcev1beta2.AllocatedDeviceStatus { return oldObj.Devices - }))...) + }), oldObj != nil)...) return errs } @@ -1611,9 +1611,9 @@ func Validate_ResourceClaimTemplate(ctx context.Context, op operation.Operation, // field resourcev1beta2.ResourceClaimTemplate.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimTemplateSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimTemplateSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -1621,7 +1621,7 @@ func Validate_ResourceClaimTemplate(ctx context.Context, op operation.Operation, return }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimTemplate) *resourcev1beta2.ResourceClaimTemplateSpec { return &oldObj.Spec - }))...) + }), oldObj != nil)...) return errs } @@ -1634,9 +1634,9 @@ func Validate_ResourceClaimTemplateList(ctx context.Context, op operation.Operat // field resourcev1beta2.ResourceClaimTemplateList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.ResourceClaimTemplate) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.ResourceClaimTemplate, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function @@ -1644,7 +1644,7 @@ func Validate_ResourceClaimTemplateList(ctx context.Context, op operation.Operat return }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimTemplateList) []resourcev1beta2.ResourceClaimTemplate { return oldObj.Items - }))...) + }), oldObj != nil)...) return errs } @@ -1656,9 +1656,9 @@ func Validate_ResourceClaimTemplateSpec(ctx context.Context, op operation.Operat // field resourcev1beta2.ResourceClaimTemplateSpec.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceClaimSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function @@ -1666,7 +1666,7 @@ func Validate_ResourceClaimTemplateSpec(ctx context.Context, op operation.Operat return }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceClaimTemplateSpec) *resourcev1beta2.ResourceClaimSpec { return &oldObj.Spec - }))...) + }), oldObj != nil)...) return errs } @@ -1679,15 +1679,15 @@ func Validate_ResourceSlice(ctx context.Context, op operation.Operation, fldPath // field resourcev1beta2.ResourceSlice.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceSliceSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *resourcev1beta2.ResourceSliceSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ResourceSliceSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceSlice) *resourcev1beta2.ResourceSliceSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceSlice) *resourcev1beta2.ResourceSliceSpec { return &oldObj.Spec }), oldObj != nil)...) return errs } @@ -1700,15 +1700,15 @@ func Validate_ResourceSliceList(ctx context.Context, op operation.Operation, fld // field resourcev1beta2.ResourceSliceList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.ResourceSlice) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.ResourceSlice, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_ResourceSlice)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceSliceList) []resourcev1beta2.ResourceSlice { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceSliceList) []resourcev1beta2.ResourceSlice { return oldObj.Items }), oldObj != nil)...) return errs } @@ -1724,9 +1724,9 @@ func Validate_ResourceSliceSpec(ctx context.Context, op operation.Operation, fld // field resourcev1beta2.ResourceSliceSpec.Devices errs = append(errs, - func(fldPath *field.Path, obj, oldObj []resourcev1beta2.Device) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []resourcev1beta2.Device, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -1740,7 +1740,7 @@ func Validate_ResourceSliceSpec(ctx context.Context, op operation.Operation, fld // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_Device)...) return - }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceSliceSpec) []resourcev1beta2.Device { return oldObj.Devices }))...) + }(fldPath.Child("devices"), obj.Devices, safe.Field(oldObj, func(oldObj *resourcev1beta2.ResourceSliceSpec) []resourcev1beta2.Device { return oldObj.Devices }), oldObj != nil)...) // field resourcev1beta2.ResourceSliceSpec.PerDeviceNodeSelection has no validation // field resourcev1beta2.ResourceSliceSpec.SharedCounters has no validation diff --git a/pkg/apis/storage/v1/zz_generated.validations.go b/pkg/apis/storage/v1/zz_generated.validations.go index 0c64a15a042..7122d64164d 100644 --- a/pkg/apis/storage/v1/zz_generated.validations.go +++ b/pkg/apis/storage/v1/zz_generated.validations.go @@ -66,9 +66,9 @@ func Validate_StorageClass(ctx context.Context, op operation.Operation, fldPath // field storagev1.StorageClass.Provisioner errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -81,7 +81,7 @@ func Validate_StorageClass(ctx context.Context, op operation.Operation, fldPath return // do not proceed } return - }(fldPath.Child("provisioner"), &obj.Provisioner, safe.Field(oldObj, func(oldObj *storagev1.StorageClass) *string { return &oldObj.Provisioner }))...) + }(fldPath.Child("provisioner"), &obj.Provisioner, safe.Field(oldObj, func(oldObj *storagev1.StorageClass) *string { return &oldObj.Provisioner }), oldObj != nil)...) // field storagev1.StorageClass.Parameters has no validation // field storagev1.StorageClass.ReclaimPolicy has no validation @@ -100,15 +100,15 @@ func Validate_StorageClassList(ctx context.Context, op operation.Operation, fldP // field storagev1.StorageClassList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []storagev1.StorageClass) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []storagev1.StorageClass, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_StorageClass)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *storagev1.StorageClassList) []storagev1.StorageClass { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *storagev1.StorageClassList) []storagev1.StorageClass { return oldObj.Items }), oldObj != nil)...) return errs } diff --git a/pkg/apis/storage/v1beta1/zz_generated.validations.go b/pkg/apis/storage/v1beta1/zz_generated.validations.go index 21981d88efd..fcb28065d21 100644 --- a/pkg/apis/storage/v1beta1/zz_generated.validations.go +++ b/pkg/apis/storage/v1beta1/zz_generated.validations.go @@ -66,9 +66,9 @@ func Validate_StorageClass(ctx context.Context, op operation.Operation, fldPath // field storagev1beta1.StorageClass.Provisioner errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -81,7 +81,7 @@ func Validate_StorageClass(ctx context.Context, op operation.Operation, fldPath return // do not proceed } return - }(fldPath.Child("provisioner"), &obj.Provisioner, safe.Field(oldObj, func(oldObj *storagev1beta1.StorageClass) *string { return &oldObj.Provisioner }))...) + }(fldPath.Child("provisioner"), &obj.Provisioner, safe.Field(oldObj, func(oldObj *storagev1beta1.StorageClass) *string { return &oldObj.Provisioner }), oldObj != nil)...) // field storagev1beta1.StorageClass.Parameters has no validation // field storagev1beta1.StorageClass.ReclaimPolicy has no validation @@ -100,15 +100,15 @@ func Validate_StorageClassList(ctx context.Context, op operation.Operation, fldP // field storagev1beta1.StorageClassList.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []storagev1beta1.StorageClass) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []storagev1beta1.StorageClass, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_StorageClass)...) return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *storagev1beta1.StorageClassList) []storagev1beta1.StorageClass { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *storagev1beta1.StorageClassList) []storagev1beta1.StorageClass { return oldObj.Items }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/api/extensions/v1beta1/zz_generated.validations.go b/staging/src/k8s.io/api/extensions/v1beta1/zz_generated.validations.go index 0c873efc3ad..f4f0e317a76 100644 --- a/staging/src/k8s.io/api/extensions/v1beta1/zz_generated.validations.go +++ b/staging/src/k8s.io/api/extensions/v1beta1/zz_generated.validations.go @@ -56,15 +56,15 @@ func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field. // field Scale.Spec errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ScaleSpec) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ScaleSpec, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ScaleSpec(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *Scale) *ScaleSpec { return &oldObj.Spec }))...) + }(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *Scale) *ScaleSpec { return &oldObj.Spec }), oldObj != nil)...) // field Scale.Status has no validation return errs @@ -75,16 +75,16 @@ func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field. func Validate_ScaleSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *ScaleSpec) (errs field.ErrorList) { // field ScaleSpec.Replicas errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int32, oldValueCorrelated bool) (errs field.ErrorList) { // optional value-type fields with zero-value defaults are purely documentation // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *ScaleSpec) *int32 { return &oldObj.Replicas }))...) + }(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *ScaleSpec) *int32 { return &oldObj.Replicas }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/all_types_match/with_field_validations/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/all_types_match/with_field_validations/zz_generated.validations.go index 44baafd3d26..bcd8947cd5e 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/all_types_match/with_field_validations/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/all_types_match/with_field_validations/zz_generated.validations.go @@ -69,21 +69,21 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }), oldObj != nil)...) // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -91,19 +91,19 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) // field T1.T3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.T3")...) return - }(fldPath.Child("t3"), &obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return &oldObj.T3 }))...) + }(fldPath.Child("t3"), &obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return &oldObj.T3 }), oldObj != nil)...) return errs } @@ -113,15 +113,15 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { // field T2.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }), oldObj != nil)...) return errs } @@ -131,15 +131,15 @@ func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T4(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T4) (errs field.ErrorList) { // field T4.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T4.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T4) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T4) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/all_types_match/with_type_validations/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/all_types_match/with_type_validations/zz_generated.validations.go index 8be8b264524..b7810d996d1 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/all_types_match/with_type_validations/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/all_types_match/with_type_validations/zz_generated.validations.go @@ -71,15 +71,15 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/cohorts/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/cohorts/zz_generated.validations.go index 75abb8281fa..fabdab123b4 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/cohorts/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/cohorts/zz_generated.validations.go @@ -87,9 +87,9 @@ func Validate_T(ctx context.Context, op operation.Operation, fldPath *field.Path // field T.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -125,7 +125,7 @@ func Validate_T(ctx context.Context, op operation.Operation, fldPath *field.Path errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T.S c1 Regular")...) }() return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/cross_pkg/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/cross_pkg/zz_generated.validations.go index d0965c5201a..34b737ed028 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/cross_pkg/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/cross_pkg/zz_generated.validations.go @@ -59,9 +59,9 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.PrimitivesT1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *primitives.T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *primitives.T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -69,13 +69,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, primitives.Validate_T1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("primitivest1"), &obj.PrimitivesT1, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return &oldObj.PrimitivesT1 }))...) + }(fldPath.Child("primitivest1"), &obj.PrimitivesT1, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return &oldObj.PrimitivesT1 }), oldObj != nil)...) // field T1.PrimitivesT1Ptr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *primitives.T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *primitives.T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -83,13 +83,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, primitives.Validate_T1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("primitivest1Ptr"), obj.PrimitivesT1Ptr, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.PrimitivesT1Ptr }))...) + }(fldPath.Child("primitivest1Ptr"), obj.PrimitivesT1Ptr, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.PrimitivesT1Ptr }), oldObj != nil)...) // field T1.PrimitivesT2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *primitives.T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *primitives.T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -97,13 +97,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, primitives.Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("primitivest2"), &obj.PrimitivesT2, safe.Field(oldObj, func(oldObj *T1) *primitives.T2 { return &oldObj.PrimitivesT2 }))...) + }(fldPath.Child("primitivest2"), &obj.PrimitivesT2, safe.Field(oldObj, func(oldObj *T1) *primitives.T2 { return &oldObj.PrimitivesT2 }), oldObj != nil)...) // field T1.PrimitivesT2Ptr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *primitives.T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *primitives.T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -111,25 +111,25 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, primitives.Validate_T1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("primitivest2Ptr"), obj.PrimitivesT2Ptr, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.PrimitivesT2Ptr }))...) + }(fldPath.Child("primitivest2Ptr"), obj.PrimitivesT2Ptr, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.PrimitivesT2Ptr }), oldObj != nil)...) // field T1.PrimitivesT3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *primitives.T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *primitives.T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.PrimitivesT3")...) return - }(fldPath.Child("primitivest3"), &obj.PrimitivesT3, safe.Field(oldObj, func(oldObj *T1) *primitives.T3 { return &oldObj.PrimitivesT3 }))...) + }(fldPath.Child("primitivest3"), &obj.PrimitivesT3, safe.Field(oldObj, func(oldObj *T1) *primitives.T3 { return &oldObj.PrimitivesT3 }), oldObj != nil)...) // field T1.PrimitivesT3Ptr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *primitives.T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *primitives.T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -137,13 +137,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, primitives.Validate_T1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("primitivest3Ptr"), obj.PrimitivesT3Ptr, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.PrimitivesT3Ptr }))...) + }(fldPath.Child("primitivest3Ptr"), obj.PrimitivesT3Ptr, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.PrimitivesT3Ptr }), oldObj != nil)...) // field T1.TypedefsE1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *typedefs.E1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *typedefs.E1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -151,13 +151,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, typedefs.Validate_E1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefse1"), &obj.TypedefsE1, safe.Field(oldObj, func(oldObj *T1) *typedefs.E1 { return &oldObj.TypedefsE1 }))...) + }(fldPath.Child("typedefse1"), &obj.TypedefsE1, safe.Field(oldObj, func(oldObj *T1) *typedefs.E1 { return &oldObj.TypedefsE1 }), oldObj != nil)...) // field T1.TypedefsE1Ptr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *typedefs.E1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *typedefs.E1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -165,13 +165,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, typedefs.Validate_E1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefse1Ptr"), obj.TypedefsE1Ptr, safe.Field(oldObj, func(oldObj *T1) *typedefs.E1 { return oldObj.TypedefsE1Ptr }))...) + }(fldPath.Child("typedefse1Ptr"), obj.TypedefsE1Ptr, safe.Field(oldObj, func(oldObj *T1) *typedefs.E1 { return oldObj.TypedefsE1Ptr }), oldObj != nil)...) // field T1.TypedefsE2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *typedefs.E2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *typedefs.E2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -179,13 +179,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, typedefs.Validate_E2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefse2"), &obj.TypedefsE2, safe.Field(oldObj, func(oldObj *T1) *typedefs.E2 { return &oldObj.TypedefsE2 }))...) + }(fldPath.Child("typedefse2"), &obj.TypedefsE2, safe.Field(oldObj, func(oldObj *T1) *typedefs.E2 { return &oldObj.TypedefsE2 }), oldObj != nil)...) // field T1.TypedefsE2Ptr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *typedefs.E2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *typedefs.E2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -193,13 +193,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, typedefs.Validate_E2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefse2Ptr"), obj.TypedefsE2Ptr, safe.Field(oldObj, func(oldObj *T1) *typedefs.E2 { return oldObj.TypedefsE2Ptr }))...) + }(fldPath.Child("typedefse2Ptr"), obj.TypedefsE2Ptr, safe.Field(oldObj, func(oldObj *T1) *typedefs.E2 { return oldObj.TypedefsE2Ptr }), oldObj != nil)...) // field T1.TypedefsE3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *typedefs.E3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *typedefs.E3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -207,13 +207,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, typedefs.Validate_E3(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefse3"), &obj.TypedefsE3, safe.Field(oldObj, func(oldObj *T1) *typedefs.E3 { return &oldObj.TypedefsE3 }))...) + }(fldPath.Child("typedefse3"), &obj.TypedefsE3, safe.Field(oldObj, func(oldObj *T1) *typedefs.E3 { return &oldObj.TypedefsE3 }), oldObj != nil)...) // field T1.TypedefsE3Ptr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *typedefs.E3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *typedefs.E3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -221,13 +221,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, typedefs.Validate_E3(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefse3Ptr"), obj.TypedefsE3Ptr, safe.Field(oldObj, func(oldObj *T1) *typedefs.E3 { return oldObj.TypedefsE3Ptr }))...) + }(fldPath.Child("typedefse3Ptr"), obj.TypedefsE3Ptr, safe.Field(oldObj, func(oldObj *T1) *typedefs.E3 { return oldObj.TypedefsE3Ptr }), oldObj != nil)...) // field T1.TypedefsE4 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *typedefs.E4) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *typedefs.E4, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -235,13 +235,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, typedefs.Validate_E4(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefse4"), &obj.TypedefsE4, safe.Field(oldObj, func(oldObj *T1) *typedefs.E4 { return &oldObj.TypedefsE4 }))...) + }(fldPath.Child("typedefse4"), &obj.TypedefsE4, safe.Field(oldObj, func(oldObj *T1) *typedefs.E4 { return &oldObj.TypedefsE4 }), oldObj != nil)...) // field T1.TypedefsE4Ptr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *typedefs.E4) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *typedefs.E4, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -249,85 +249,85 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, typedefs.Validate_E4(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefse4Ptr"), obj.TypedefsE4Ptr, safe.Field(oldObj, func(oldObj *T1) *typedefs.E4 { return oldObj.TypedefsE4Ptr }))...) + }(fldPath.Child("typedefse4Ptr"), obj.TypedefsE4Ptr, safe.Field(oldObj, func(oldObj *T1) *typedefs.E4 { return oldObj.TypedefsE4Ptr }), oldObj != nil)...) // field T1.OtherString errs = append(errs, - func(fldPath *field.Path, obj, oldObj *other.StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *other.StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.OtherString")...) return - }(fldPath.Child("otherString"), &obj.OtherString, safe.Field(oldObj, func(oldObj *T1) *other.StringType { return &oldObj.OtherString }))...) + }(fldPath.Child("otherString"), &obj.OtherString, safe.Field(oldObj, func(oldObj *T1) *other.StringType { return &oldObj.OtherString }), oldObj != nil)...) // field T1.OtherStringPtr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *other.StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *other.StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.OtherStringPtr")...) return - }(fldPath.Child("otherStringPtr"), obj.OtherStringPtr, safe.Field(oldObj, func(oldObj *T1) *other.StringType { return oldObj.OtherStringPtr }))...) + }(fldPath.Child("otherStringPtr"), obj.OtherStringPtr, safe.Field(oldObj, func(oldObj *T1) *other.StringType { return oldObj.OtherStringPtr }), oldObj != nil)...) // field T1.OtherInt errs = append(errs, - func(fldPath *field.Path, obj, oldObj *other.IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *other.IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.OtherInt")...) return - }(fldPath.Child("otherInt"), &obj.OtherInt, safe.Field(oldObj, func(oldObj *T1) *other.IntType { return &oldObj.OtherInt }))...) + }(fldPath.Child("otherInt"), &obj.OtherInt, safe.Field(oldObj, func(oldObj *T1) *other.IntType { return &oldObj.OtherInt }), oldObj != nil)...) // field T1.OtherIntPtr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *other.IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *other.IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.OtherIntPtr")...) return - }(fldPath.Child("otherIntPtr"), obj.OtherIntPtr, safe.Field(oldObj, func(oldObj *T1) *other.IntType { return oldObj.OtherIntPtr }))...) + }(fldPath.Child("otherIntPtr"), obj.OtherIntPtr, safe.Field(oldObj, func(oldObj *T1) *other.IntType { return oldObj.OtherIntPtr }), oldObj != nil)...) // field T1.OtherStruct errs = append(errs, - func(fldPath *field.Path, obj, oldObj *other.StructType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *other.StructType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.OtherStruct")...) return - }(fldPath.Child("otherStruct"), &obj.OtherStruct, safe.Field(oldObj, func(oldObj *T1) *other.StructType { return &oldObj.OtherStruct }))...) + }(fldPath.Child("otherStruct"), &obj.OtherStruct, safe.Field(oldObj, func(oldObj *T1) *other.StructType { return &oldObj.OtherStruct }), oldObj != nil)...) // field T1.OtherStructPtr errs = append(errs, - func(fldPath *field.Path, obj, oldObj *other.StructType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *other.StructType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.OtherStructPtr")...) return - }(fldPath.Child("otherStructPtr"), obj.OtherStructPtr, safe.Field(oldObj, func(oldObj *T1) *other.StructType { return oldObj.OtherStructPtr }))...) + }(fldPath.Child("otherStructPtr"), obj.OtherStructPtr, safe.Field(oldObj, func(oldObj *T1) *other.StructType { return oldObj.OtherStructPtr }), oldObj != nil)...) // field T1.SliceOfOtherStruct errs = append(errs, - func(fldPath *field.Path, obj, oldObj []other.StructType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []other.StructType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -336,13 +336,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat return validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.SliceOfOtherStruct values") })...) return - }(fldPath.Child("sliceOfOtherStruct"), obj.SliceOfOtherStruct, safe.Field(oldObj, func(oldObj *T1) []other.StructType { return oldObj.SliceOfOtherStruct }))...) + }(fldPath.Child("sliceOfOtherStruct"), obj.SliceOfOtherStruct, safe.Field(oldObj, func(oldObj *T1) []other.StructType { return oldObj.SliceOfOtherStruct }), oldObj != nil)...) // field T1.ListMapOfOtherStruct errs = append(errs, - func(fldPath *field.Path, obj, oldObj []other.StructType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []other.StructType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -353,13 +353,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // lists with map semantics require unique keys errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, func(a other.StructType, b other.StructType) bool { return a.StringField == b.StringField })...) return - }(fldPath.Child("listMapOfOtherStruct"), obj.ListMapOfOtherStruct, safe.Field(oldObj, func(oldObj *T1) []other.StructType { return oldObj.ListMapOfOtherStruct }))...) + }(fldPath.Child("listMapOfOtherStruct"), obj.ListMapOfOtherStruct, safe.Field(oldObj, func(oldObj *T1) []other.StructType { return oldObj.ListMapOfOtherStruct }), oldObj != nil)...) // field T1.MapOfOtherStringToOtherStruct errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[other.StringType]other.StructType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[other.StringType]other.StructType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -371,7 +371,7 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat return validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.MapOfOtherStringToOtherStruct values") })...) return - }(fldPath.Child("mapOfOtherStringToOtherStruct"), obj.MapOfOtherStringToOtherStruct, safe.Field(oldObj, func(oldObj *T1) map[other.StringType]other.StructType { return oldObj.MapOfOtherStringToOtherStruct }))...) + }(fldPath.Child("mapOfOtherStringToOtherStruct"), obj.MapOfOtherStringToOtherStruct, safe.Field(oldObj, func(oldObj *T1) map[other.StringType]other.StructType { return oldObj.MapOfOtherStringToOtherStruct }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/elide_no_validations/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/elide_no_validations/zz_generated.validations.go index 1f63490c014..99dee2639a9 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/elide_no_validations/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/elide_no_validations/zz_generated.validations.go @@ -53,15 +53,15 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_HasFieldVal(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *HasFieldVal) (errs field.ErrorList) { // field HasFieldVal.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field HasFieldVal.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *HasFieldVal) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *HasFieldVal) *string { return &oldObj.S }), oldObj != nil)...) return errs } @@ -82,41 +82,41 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.HasTypeVal errs = append(errs, - func(fldPath *field.Path, obj, oldObj *HasTypeVal) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *HasTypeVal, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_HasTypeVal(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("hasTypeVal"), &obj.HasTypeVal, safe.Field(oldObj, func(oldObj *T1) *HasTypeVal { return &oldObj.HasTypeVal }))...) + }(fldPath.Child("hasTypeVal"), &obj.HasTypeVal, safe.Field(oldObj, func(oldObj *T1) *HasTypeVal { return &oldObj.HasTypeVal }), oldObj != nil)...) // field T1.HasFieldVal errs = append(errs, - func(fldPath *field.Path, obj, oldObj *HasFieldVal) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *HasFieldVal, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_HasFieldVal(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("hasFieldVal"), &obj.HasFieldVal, safe.Field(oldObj, func(oldObj *T1) *HasFieldVal { return &oldObj.HasFieldVal }))...) + }(fldPath.Child("hasFieldVal"), &obj.HasFieldVal, safe.Field(oldObj, func(oldObj *T1) *HasFieldVal { return &oldObj.HasFieldVal }), oldObj != nil)...) // field T1.HasNoVal has no validation // field T1.HasNoValFieldVal errs = append(errs, - func(fldPath *field.Path, obj, oldObj *HasNoVal) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *HasNoVal, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.HasNoValFieldVal")...) return - }(fldPath.Child("hasNoValFieldVal"), &obj.HasNoValFieldVal, safe.Field(oldObj, func(oldObj *T1) *HasNoVal { return &oldObj.HasNoValFieldVal }))...) + }(fldPath.Child("hasNoValFieldVal"), &obj.HasNoValFieldVal, safe.Field(oldObj, func(oldObj *T1) *HasNoVal { return &oldObj.HasNoValFieldVal }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/embedded/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/embedded/zz_generated.validations.go index 92650eeb896..771fe24ece6 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/embedded/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/embedded/zz_generated.validations.go @@ -55,27 +55,27 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("T2") }), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("T2") }), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) // field T1.T3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_T3(ctx, op, fldPath, obj, oldObj)...) return - }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("T3") }), obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return oldObj.T3 }))...) + }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("T3") }), obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return oldObj.T3 }), oldObj != nil)...) return errs } @@ -85,15 +85,15 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { // field T2.IntField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T2.IntField")...) return - }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *T2) *int { return &oldObj.IntField }))...) + }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *T2) *int { return &oldObj.IntField }), oldObj != nil)...) return errs } @@ -103,27 +103,27 @@ func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T3(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T3) (errs field.ErrorList) { // field T3.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T3.StringField")...) return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *T3) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *T3) *string { return &oldObj.StringField }), oldObj != nil)...) // field T3.IntField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T3.IntField")...) return - }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *T3) *int { return &oldObj.IntField }))...) + }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *T3) *int { return &oldObj.IntField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/keys/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/keys/zz_generated.validations.go index 1e8dcb107ce..c5263056eac 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/keys/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/keys/zz_generated.validations.go @@ -58,9 +58,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -69,13 +69,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapField")...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[UnvalidatedStringType]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[UnvalidatedStringType]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -84,13 +84,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapTypedefField")...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[UnvalidatedStringType]string { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[UnvalidatedStringType]string { return oldObj.MapTypedefField }), oldObj != nil)...) // field Struct.MapValidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[ValidatedStringType]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[ValidatedStringType]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -101,13 +101,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the map and call the key type's validation function errs = append(errs, validate.EachMapKey(ctx, op, fldPath, obj, oldObj, Validate_ValidatedStringType)...) return - }(fldPath.Child("mapValidatedTypedefField"), obj.MapValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[ValidatedStringType]string { return oldObj.MapValidatedTypedefField }))...) + }(fldPath.Child("mapValidatedTypedefField"), obj.MapValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[ValidatedStringType]string { return oldObj.MapValidatedTypedefField }), oldObj != nil)...) // field Struct.MapTypeField errs = append(errs, - func(fldPath *field.Path, obj, oldObj UnvalidatedMapType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj UnvalidatedMapType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -116,13 +116,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapTypeField")...) return - }(fldPath.Child("mapTypeField"), obj.MapTypeField, safe.Field(oldObj, func(oldObj *Struct) UnvalidatedMapType { return oldObj.MapTypeField }))...) + }(fldPath.Child("mapTypeField"), obj.MapTypeField, safe.Field(oldObj, func(oldObj *Struct) UnvalidatedMapType { return oldObj.MapTypeField }), oldObj != nil)...) // field Struct.ValidatedMapTypeField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ValidatedMapType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ValidatedMapType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -133,7 +133,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ValidatedMapType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedMapTypeField"), obj.ValidatedMapTypeField, safe.Field(oldObj, func(oldObj *Struct) ValidatedMapType { return oldObj.ValidatedMapTypeField }))...) + }(fldPath.Child("validatedMapTypeField"), obj.ValidatedMapTypeField, safe.Field(oldObj, func(oldObj *Struct) ValidatedMapType { return oldObj.ValidatedMapTypeField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/map_of_primitive/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/map_of_primitive/zz_generated.validations.go index 8abff3d2836..d74f91485d6 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/map_of_primitive/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/map_of_primitive/zz_generated.validations.go @@ -66,9 +66,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -77,13 +77,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapField[*]") })...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -94,7 +94,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the map and call the value type's validation function errs = append(errs, validate.EachMapVal(ctx, op, fldPath, obj, oldObj, validate.DirectEqual, Validate_StringType)...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[string]StringType { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[string]StringType { return oldObj.MapTypedefField }), oldObj != nil)...) // field Struct.UnvalidatedMapField has no validation return errs diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/map_of_struct/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/map_of_struct/zz_generated.validations.go index e87408ea283..c5f423a7367 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/map_of_struct/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/map_of_struct/zz_generated.validations.go @@ -74,9 +74,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -87,13 +87,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the map and call the value type's validation function errs = append(errs, validate.EachMapVal(ctx, op, fldPath, obj, oldObj, validate.DirectEqual, Validate_OtherStruct)...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]OtherStruct { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]OtherStruct { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]OtherTypedefStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]OtherTypedefStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -104,7 +104,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the map and call the value type's validation function errs = append(errs, validate.EachMapVal(ctx, op, fldPath, obj, oldObj, validate.DirectEqual, Validate_OtherTypedefStruct)...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[string]OtherTypedefStruct { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[string]OtherTypedefStruct { return oldObj.MapTypedefField }), oldObj != nil)...) // field Struct.UnvalidatedMapField has no validation return errs diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/multiple_validations/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/multiple_validations/zz_generated.validations.go index e8cfe5bf431..188172c4925 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/multiple_validations/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/multiple_validations/zz_generated.validations.go @@ -58,9 +58,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -79,7 +79,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapField[*] #2") })...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }), oldObj != nil)...) // field Struct.UnvalidatedMapField has no validation return errs diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/typedef_to_map/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/typedef_to_map/zz_generated.validations.go index 250979ed1a9..28dc10881c3 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/typedef_to_map/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/maps/typedef_to_map/zz_generated.validations.go @@ -90,9 +90,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj MapType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj MapType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -103,13 +103,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_MapType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) MapType { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) MapType { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj MapTypedefType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj MapTypedefType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -120,7 +120,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_MapTypedefType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) MapTypedefType { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) MapTypedefType { return oldObj.MapTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/multiple_tags/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/multiple_tags/zz_generated.validations.go index 203a280392c..6a7aa362cdf 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/multiple_tags/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/multiple_tags/zz_generated.validations.go @@ -60,9 +60,9 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -71,13 +71,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.S false #3")...) errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.S true")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }), oldObj != nil)...) // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -88,7 +88,7 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) return errs } @@ -102,9 +102,9 @@ func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T2.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -112,7 +112,7 @@ func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Pat errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.S false #2")...) errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T2.S true")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/one_type_match/with_field_validations/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/one_type_match/with_field_validations/zz_generated.validations.go index 568c3c2963f..b08696e9cd8 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/one_type_match/with_field_validations/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/one_type_match/with_field_validations/zz_generated.validations.go @@ -63,21 +63,21 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }), oldObj != nil)...) // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -85,25 +85,25 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) // field T1.T3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.T3")...) return - }(fldPath.Child("t3"), &obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return &oldObj.T3 }))...) + }(fldPath.Child("t3"), &obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return &oldObj.T3 }), oldObj != nil)...) // field T1.E1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -111,19 +111,19 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("e1"), &obj.E1, safe.Field(oldObj, func(oldObj *T1) *E1 { return &oldObj.E1 }))...) + }(fldPath.Child("e1"), &obj.E1, safe.Field(oldObj, func(oldObj *T1) *E1 { return &oldObj.E1 }), oldObj != nil)...) // field T1.E2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.E2")...) return - }(fldPath.Child("e2"), &obj.E2, safe.Field(oldObj, func(oldObj *T1) *E2 { return &oldObj.E2 }))...) + }(fldPath.Child("e2"), &obj.E2, safe.Field(oldObj, func(oldObj *T1) *E2 { return &oldObj.E2 }), oldObj != nil)...) return errs } @@ -133,15 +133,15 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { // field T2.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ordering/structs/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ordering/structs/zz_generated.validations.go index 7ae160e4c62..5d17ed257b9 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ordering/structs/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ordering/structs/zz_generated.validations.go @@ -89,27 +89,27 @@ func Validate_T00(ctx context.Context, op operation.Operation, fldPath *field.Pa // field T00.T errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *T00) *Tother { return &oldObj.T }))...) + }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *T00) *Tother { return &oldObj.T }), oldObj != nil)...) // field T00.PT errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *T00) *Tother { return oldObj.PT }))...) + }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *T00) *Tother { return oldObj.PT }), oldObj != nil)...) return errs } @@ -123,33 +123,33 @@ func Validate_T01(ctx context.Context, op operation.Operation, fldPath *field.Pa // field T01.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T01.S, no flags")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T01) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T01) *string { return &oldObj.S }), oldObj != nil)...) // field T01.PS errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T01.PS, no flags")...) return - }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T01) *string { return oldObj.PS }))...) + }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T01) *string { return oldObj.PS }), oldObj != nil)...) // field T01.T errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -157,13 +157,13 @@ func Validate_T01(ctx context.Context, op operation.Operation, fldPath *field.Pa // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *T01) *Tother { return &oldObj.T }))...) + }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *T01) *Tother { return &oldObj.T }), oldObj != nil)...) // field T01.PT errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -171,7 +171,7 @@ func Validate_T01(ctx context.Context, op operation.Operation, fldPath *field.Pa // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *T01) *Tother { return oldObj.PT }))...) + }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *T01) *Tother { return oldObj.PT }), oldObj != nil)...) return errs } @@ -192,9 +192,9 @@ func Validate_T02(ctx context.Context, op operation.Operation, fldPath *field.Pa // field T02.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -207,13 +207,13 @@ func Validate_T02(ctx context.Context, op operation.Operation, fldPath *field.Pa return // do not proceed } return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T02) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T02) *string { return &oldObj.S }), oldObj != nil)...) // field T02.PS errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -226,13 +226,13 @@ func Validate_T02(ctx context.Context, op operation.Operation, fldPath *field.Pa return // do not proceed } return - }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T02) *string { return oldObj.PS }))...) + }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T02) *string { return oldObj.PS }), oldObj != nil)...) // field T02.T errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -247,13 +247,13 @@ func Validate_T02(ctx context.Context, op operation.Operation, fldPath *field.Pa // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *T02) *Tother { return &oldObj.T }))...) + }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *T02) *Tother { return &oldObj.T }), oldObj != nil)...) // field T02.PT errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -268,7 +268,7 @@ func Validate_T02(ctx context.Context, op operation.Operation, fldPath *field.Pa // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *T02) *Tother { return oldObj.PT }))...) + }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *T02) *Tother { return oldObj.PT }), oldObj != nil)...) return errs } @@ -290,9 +290,9 @@ func Validate_T03(ctx context.Context, op operation.Operation, fldPath *field.Pa // field T03.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -306,13 +306,13 @@ func Validate_T03(ctx context.Context, op operation.Operation, fldPath *field.Pa } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T03.S, no flags")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T03) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T03) *string { return &oldObj.S }), oldObj != nil)...) // field T03.PS errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -326,13 +326,13 @@ func Validate_T03(ctx context.Context, op operation.Operation, fldPath *field.Pa } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T03.PS, no flags")...) return - }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T03) *string { return oldObj.PS }))...) + }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T03) *string { return oldObj.PS }), oldObj != nil)...) // field T03.T errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -348,13 +348,13 @@ func Validate_T03(ctx context.Context, op operation.Operation, fldPath *field.Pa // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *T03) *Tother { return &oldObj.T }))...) + }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *T03) *Tother { return &oldObj.T }), oldObj != nil)...) // field T03.PT errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -370,7 +370,7 @@ func Validate_T03(ctx context.Context, op operation.Operation, fldPath *field.Pa // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *T03) *Tother { return oldObj.PT }))...) + }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *T03) *Tother { return oldObj.PT }), oldObj != nil)...) return errs } @@ -398,9 +398,9 @@ func Validate_TMultiple(ctx context.Context, op operation.Operation, fldPath *fi // field TMultiple.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -420,13 +420,13 @@ func Validate_TMultiple(ctx context.Context, op operation.Operation, fldPath *fi errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T0, string payload")...) errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "TMultiple.S, no flags 2")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *TMultiple) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *TMultiple) *string { return &oldObj.S }), oldObj != nil)...) // field TMultiple.PS errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -446,13 +446,13 @@ func Validate_TMultiple(ctx context.Context, op operation.Operation, fldPath *fi errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "T0, string payload")...) errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "TMultiple.PS, no flags 2")...) return - }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *TMultiple) *string { return oldObj.PS }))...) + }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *TMultiple) *string { return oldObj.PS }), oldObj != nil)...) // field TMultiple.T errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -474,13 +474,13 @@ func Validate_TMultiple(ctx context.Context, op operation.Operation, fldPath *fi // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *TMultiple) *Tother { return &oldObj.T }))...) + }(fldPath.Child("t"), &obj.T, safe.Field(oldObj, func(oldObj *TMultiple) *Tother { return &oldObj.T }), oldObj != nil)...) // field TMultiple.PT errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Tother, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -502,7 +502,7 @@ func Validate_TMultiple(ctx context.Context, op operation.Operation, fldPath *fi // call the type's validation function errs = append(errs, Validate_Tother(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *TMultiple) *Tother { return oldObj.PT }))...) + }(fldPath.Child("pt"), obj.PT, safe.Field(oldObj, func(oldObj *TMultiple) *Tother { return oldObj.PT }), oldObj != nil)...) return errs } @@ -512,15 +512,15 @@ func Validate_TMultiple(ctx context.Context, op operation.Operation, fldPath *fi func Validate_Tother(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *Tother) (errs field.ErrorList) { // field Tother.OS errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "Tother, no flags")...) return - }(fldPath.Child("os"), &obj.OS, safe.Field(oldObj, func(oldObj *Tother) *string { return &oldObj.OS }))...) + }(fldPath.Child("os"), &obj.OS, safe.Field(oldObj, func(oldObj *Tother) *string { return &oldObj.OS }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/pointers/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/pointers/zz_generated.validations.go index ef1aa8834e1..880be40681e 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/pointers/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/pointers/zz_generated.validations.go @@ -56,57 +56,57 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.PS errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.PS")...) return - }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T1) *string { return oldObj.PS }))...) + }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T1) *string { return oldObj.PS }), oldObj != nil)...) // field T1.PI errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.PI")...) return - }(fldPath.Child("pi"), obj.PI, safe.Field(oldObj, func(oldObj *T1) *int { return oldObj.PI }))...) + }(fldPath.Child("pi"), obj.PI, safe.Field(oldObj, func(oldObj *T1) *int { return oldObj.PI }), oldObj != nil)...) // field T1.PB errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.PB")...) return - }(fldPath.Child("pb"), obj.PB, safe.Field(oldObj, func(oldObj *T1) *bool { return oldObj.PB }))...) + }(fldPath.Child("pb"), obj.PB, safe.Field(oldObj, func(oldObj *T1) *bool { return oldObj.PB }), oldObj != nil)...) // field T1.PF errs = append(errs, - func(fldPath *field.Path, obj, oldObj *float64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *float64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.PF")...) return - }(fldPath.Child("pf"), obj.PF, safe.Field(oldObj, func(oldObj *T1) *float64 { return oldObj.PF }))...) + }(fldPath.Child("pf"), obj.PF, safe.Field(oldObj, func(oldObj *T1) *float64 { return oldObj.PF }), oldObj != nil)...) // field T1.PT2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -114,7 +114,7 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt2"), obj.PT2, safe.Field(oldObj, func(oldObj *T1) *T2 { return oldObj.PT2 }))...) + }(fldPath.Child("pt2"), obj.PT2, safe.Field(oldObj, func(oldObj *T1) *T2 { return oldObj.PT2 }), oldObj != nil)...) // field T1.AnotherPS has no validation // field T1.AnotherPI has no validation @@ -128,51 +128,51 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { // field T2.PS errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.PS")...) return - }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T2) *string { return oldObj.PS }))...) + }(fldPath.Child("ps"), obj.PS, safe.Field(oldObj, func(oldObj *T2) *string { return oldObj.PS }), oldObj != nil)...) // field T2.PI errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.PI")...) return - }(fldPath.Child("pi"), obj.PI, safe.Field(oldObj, func(oldObj *T2) *int { return oldObj.PI }))...) + }(fldPath.Child("pi"), obj.PI, safe.Field(oldObj, func(oldObj *T2) *int { return oldObj.PI }), oldObj != nil)...) // field T2.PB errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.PB")...) return - }(fldPath.Child("pb"), obj.PB, safe.Field(oldObj, func(oldObj *T2) *bool { return oldObj.PB }))...) + }(fldPath.Child("pb"), obj.PB, safe.Field(oldObj, func(oldObj *T2) *bool { return oldObj.PB }), oldObj != nil)...) // field T2.PF errs = append(errs, - func(fldPath *field.Path, obj, oldObj *float64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *float64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.PF")...) return - }(fldPath.Child("pf"), obj.PF, safe.Field(oldObj, func(oldObj *T2) *float64 { return oldObj.PF }))...) + }(fldPath.Child("pf"), obj.PF, safe.Field(oldObj, func(oldObj *T2) *float64 { return oldObj.PF }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/primitives/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/primitives/zz_generated.validations.go index 1a77dfb2e60..d816e69df47 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/primitives/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/primitives/zz_generated.validations.go @@ -55,57 +55,57 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }), oldObj != nil)...) // field T1.I errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.I")...) return - }(fldPath.Child("i"), &obj.I, safe.Field(oldObj, func(oldObj *T1) *int { return &oldObj.I }))...) + }(fldPath.Child("i"), &obj.I, safe.Field(oldObj, func(oldObj *T1) *int { return &oldObj.I }), oldObj != nil)...) // field T1.B errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.B")...) return - }(fldPath.Child("b"), &obj.B, safe.Field(oldObj, func(oldObj *T1) *bool { return &oldObj.B }))...) + }(fldPath.Child("b"), &obj.B, safe.Field(oldObj, func(oldObj *T1) *bool { return &oldObj.B }), oldObj != nil)...) // field T1.F errs = append(errs, - func(fldPath *field.Path, obj, oldObj *float64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *float64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.F")...) return - }(fldPath.Child("f"), &obj.F, safe.Field(oldObj, func(oldObj *T1) *float64 { return &oldObj.F }))...) + }(fldPath.Child("f"), &obj.F, safe.Field(oldObj, func(oldObj *T1) *float64 { return &oldObj.F }), oldObj != nil)...) // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -113,7 +113,7 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) // field T1.T3 has no validation // field T1.AnotherS has no validation @@ -123,15 +123,15 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.AnotherT2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("anothert2"), &obj.AnotherT2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.AnotherT2 }))...) + }(fldPath.Child("anothert2"), &obj.AnotherT2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.AnotherT2 }), oldObj != nil)...) return errs } @@ -141,51 +141,51 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { // field T2.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }), oldObj != nil)...) // field T2.I errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.I")...) return - }(fldPath.Child("i"), &obj.I, safe.Field(oldObj, func(oldObj *T2) *int { return &oldObj.I }))...) + }(fldPath.Child("i"), &obj.I, safe.Field(oldObj, func(oldObj *T2) *int { return &oldObj.I }), oldObj != nil)...) // field T2.B errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.B")...) return - }(fldPath.Child("b"), &obj.B, safe.Field(oldObj, func(oldObj *T2) *bool { return &oldObj.B }))...) + }(fldPath.Child("b"), &obj.B, safe.Field(oldObj, func(oldObj *T2) *bool { return &oldObj.B }), oldObj != nil)...) // field T2.F errs = append(errs, - func(fldPath *field.Path, obj, oldObj *float64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *float64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.F")...) return - }(fldPath.Child("f"), &obj.F, safe.Field(oldObj, func(oldObj *T2) *float64 { return &oldObj.F }))...) + }(fldPath.Child("f"), &obj.F, safe.Field(oldObj, func(oldObj *T2) *float64 { return &oldObj.F }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/public_private/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/public_private/zz_generated.validations.go index 9ef7f304ee9..bddbacfaff5 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/public_private/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/public_private/zz_generated.validations.go @@ -53,15 +53,15 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.Public errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T1.Public")...) return - }(fldPath.Child("public"), &obj.Public, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.Public }))...) + }(fldPath.Child("public"), &obj.Public, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.Public }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/maps/eachkey/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/maps/eachkey/zz_generated.validations.go index 2defa039833..0eeb6c43dc9 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/maps/eachkey/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/maps/eachkey/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -66,13 +66,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapField(keys)") })...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[UnvalidatedStringType]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[UnvalidatedStringType]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -80,13 +80,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapTypedefField(keys)") })...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[UnvalidatedStringType]string { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[UnvalidatedStringType]string { return oldObj.MapTypedefField }), oldObj != nil)...) // field Struct.MapValidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[ValidatedStringType]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[ValidatedStringType]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -96,13 +96,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the map and call the key type's validation function errs = append(errs, validate.EachMapKey(ctx, op, fldPath, obj, oldObj, Validate_ValidatedStringType)...) return - }(fldPath.Child("mapValidatedTypedefField"), obj.MapValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[ValidatedStringType]string { return oldObj.MapValidatedTypedefField }))...) + }(fldPath.Child("mapValidatedTypedefField"), obj.MapValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[ValidatedStringType]string { return oldObj.MapValidatedTypedefField }), oldObj != nil)...) // field Struct.ValidatedMapTypeField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ValidatedMapType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ValidatedMapType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -112,7 +112,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ValidatedMapType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedMapTypeField"), obj.ValidatedMapTypeField, safe.Field(oldObj, func(oldObj *Struct) ValidatedMapType { return oldObj.ValidatedMapTypeField }))...) + }(fldPath.Child("validatedMapTypeField"), obj.ValidatedMapTypeField, safe.Field(oldObj, func(oldObj *Struct) ValidatedMapType { return oldObj.ValidatedMapTypeField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/maps/eachval/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/maps/eachval/zz_generated.validations.go index 26ad9ac9f94..7f0f8a7f147 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/maps/eachval/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/maps/eachval/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_StructWithMaps(ctx context.Context, op operation.Operation, fldPat // field StructWithMaps.MapPrimitiveField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -66,13 +66,13 @@ func Validate_StructWithMaps(ctx context.Context, op operation.Operation, fldPat return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field MapTest.MapPrimitiveField[*]") })...) return - }(fldPath.Child("mapPrimitiveField"), obj.MapPrimitiveField, safe.Field(oldObj, func(oldObj *StructWithMaps) map[string]string { return oldObj.MapPrimitiveField }))...) + }(fldPath.Child("mapPrimitiveField"), obj.MapPrimitiveField, safe.Field(oldObj, func(oldObj *StructWithMaps) map[string]string { return oldObj.MapPrimitiveField }), oldObj != nil)...) // field StructWithMaps.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -80,13 +80,13 @@ func Validate_StructWithMaps(ctx context.Context, op operation.Operation, fldPat return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field MapTest.MapTypedefField[*]") })...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *StructWithMaps) map[string]StringType { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *StructWithMaps) map[string]StringType { return oldObj.MapTypedefField }), oldObj != nil)...) // field StructWithMaps.MapComparableStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]ComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]ComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -94,13 +94,13 @@ func Validate_StructWithMaps(ctx context.Context, op operation.Operation, fldPat return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field MapTest.MapComparableStructField[*]") })...) return - }(fldPath.Child("mapComparableStructField"), obj.MapComparableStructField, safe.Field(oldObj, func(oldObj *StructWithMaps) map[string]ComparableStruct { return oldObj.MapComparableStructField }))...) + }(fldPath.Child("mapComparableStructField"), obj.MapComparableStructField, safe.Field(oldObj, func(oldObj *StructWithMaps) map[string]ComparableStruct { return oldObj.MapComparableStructField }), oldObj != nil)...) // field StructWithMaps.MapNonComparableStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -108,7 +108,7 @@ func Validate_StructWithMaps(ctx context.Context, op operation.Operation, fldPat return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field MapTest.MapNonComparableStructField[*]") })...) return - }(fldPath.Child("mapNonComparableStructField"), obj.MapNonComparableStructField, safe.Field(oldObj, func(oldObj *StructWithMaps) map[string]NonComparableStruct { return oldObj.MapNonComparableStructField }))...) + }(fldPath.Child("mapNonComparableStructField"), obj.MapNonComparableStructField, safe.Field(oldObj, func(oldObj *StructWithMaps) map[string]NonComparableStruct { return oldObj.MapNonComparableStructField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/subfield/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/subfield/zz_generated.validations.go index d05608d6338..9efb745c1a8 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/subfield/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/ratcheting/subfield/zz_generated.validations.go @@ -64,9 +64,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.SubStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *SubStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *SubStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -81,7 +81,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("subStructField"), &obj.SubStructField, safe.Field(oldObj, func(oldObj *Struct) *SubStruct { return &oldObj.SubStructField }))...) + }(fldPath.Child("subStructField"), &obj.SubStructField, safe.Field(oldObj, func(oldObj *Struct) *SubStruct { return &oldObj.SubStructField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/maps/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/maps/zz_generated.validations.go index 1280b3b0a8b..76ed9e81d21 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/maps/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/maps/zz_generated.validations.go @@ -78,27 +78,27 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) // field T1.T3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_T3(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t3"), &obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return &oldObj.T3 }))...) + }(fldPath.Child("t3"), &obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return &oldObj.T3 }), oldObj != nil)...) return errs } @@ -108,15 +108,15 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { // field T2.MT1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the map and call the value type's validation function errs = append(errs, validate.EachMapVal(ctx, op, fldPath, obj, oldObj, validate.SemanticDeepEqual, Validate_T1)...) return - }(fldPath.Child("mt1"), obj.MT1, safe.Field(oldObj, func(oldObj *T2) map[string]T1 { return oldObj.MT1 }))...) + }(fldPath.Child("mt1"), obj.MT1, safe.Field(oldObj, func(oldObj *T2) map[string]T1 { return oldObj.MT1 }), oldObj != nil)...) return errs } @@ -128,15 +128,15 @@ func Validate_T3(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T3.T4 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T4) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T4, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_T4(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t4"), &obj.T4, safe.Field(oldObj, func(oldObj *T3) *T4 { return &oldObj.T4 }))...) + }(fldPath.Child("t4"), &obj.T4, safe.Field(oldObj, func(oldObj *T3) *T4 { return &oldObj.T4 }), oldObj != nil)...) return errs } @@ -146,15 +146,15 @@ func Validate_T3(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T4(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T4) (errs field.ErrorList) { // field T4.MT3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the map and call the value type's validation function errs = append(errs, validate.EachMapVal(ctx, op, fldPath, obj, oldObj, validate.SemanticDeepEqual, Validate_T3)...) return - }(fldPath.Child("mt3"), obj.MT3, safe.Field(oldObj, func(oldObj *T4) map[string]T3 { return oldObj.MT3 }))...) + }(fldPath.Child("mt3"), obj.MT3, safe.Field(oldObj, func(oldObj *T4) map[string]T3 { return oldObj.MT3 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/pointers/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/pointers/zz_generated.validations.go index 11ae1f078ae..d410ebf4333 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/pointers/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/pointers/zz_generated.validations.go @@ -70,9 +70,9 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.PT1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -86,25 +86,25 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt1"), obj.PT1, safe.Field(oldObj, func(oldObj *T1) *T1 { return oldObj.PT1 }))...) + }(fldPath.Child("pt1"), obj.PT1, safe.Field(oldObj, func(oldObj *T1) *T1 { return oldObj.PT1 }), oldObj != nil)...) // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) // field T1.PT2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -118,7 +118,7 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt2"), obj.PT2, safe.Field(oldObj, func(oldObj *T1) *T2 { return oldObj.PT2 }))...) + }(fldPath.Child("pt2"), obj.PT2, safe.Field(oldObj, func(oldObj *T1) *T2 { return oldObj.PT2 }), oldObj != nil)...) return errs } @@ -128,9 +128,9 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { // field T2.PT1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -144,13 +144,13 @@ func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt1"), obj.PT1, safe.Field(oldObj, func(oldObj *T2) *T1 { return oldObj.PT1 }))...) + }(fldPath.Child("pt1"), obj.PT1, safe.Field(oldObj, func(oldObj *T2) *T1 { return oldObj.PT1 }), oldObj != nil)...) // field T2.PT2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -164,13 +164,13 @@ func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt2"), obj.PT2, safe.Field(oldObj, func(oldObj *T2) *T2 { return oldObj.PT2 }))...) + }(fldPath.Child("pt2"), obj.PT2, safe.Field(oldObj, func(oldObj *T2) *T2 { return oldObj.PT2 }), oldObj != nil)...) // field T2.PT3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -184,7 +184,7 @@ func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T3(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt3"), obj.PT3, safe.Field(oldObj, func(oldObj *T2) *T3 { return oldObj.PT3 }))...) + }(fldPath.Child("pt3"), obj.PT3, safe.Field(oldObj, func(oldObj *T2) *T3 { return oldObj.PT3 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/slices/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/slices/zz_generated.validations.go index e640e3b3242..073d491a601 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/slices/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/recursive/slices/zz_generated.validations.go @@ -78,27 +78,27 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) // field T1.T3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_T3(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t3"), &obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return &oldObj.T3 }))...) + }(fldPath.Child("t3"), &obj.T3, safe.Field(oldObj, func(oldObj *T1) *T3 { return &oldObj.T3 }), oldObj != nil)...) return errs } @@ -108,15 +108,15 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { // field T2.ST1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj []T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_T1)...) return - }(fldPath.Child("st1"), obj.ST1, safe.Field(oldObj, func(oldObj *T2) []T1 { return oldObj.ST1 }))...) + }(fldPath.Child("st1"), obj.ST1, safe.Field(oldObj, func(oldObj *T2) []T1 { return oldObj.ST1 }), oldObj != nil)...) return errs } @@ -128,15 +128,15 @@ func Validate_T3(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T3.T4 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T4) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T4, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_T4(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t4"), &obj.T4, safe.Field(oldObj, func(oldObj *T3) *T4 { return &oldObj.T4 }))...) + }(fldPath.Child("t4"), &obj.T4, safe.Field(oldObj, func(oldObj *T3) *T4 { return &oldObj.T4 }), oldObj != nil)...) return errs } @@ -146,15 +146,15 @@ func Validate_T3(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T4(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T4) (errs field.ErrorList) { // field T4.ST3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj []T3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []T3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_T3)...) return - }(fldPath.Child("st3"), obj.ST3, safe.Field(oldObj, func(oldObj *T4) []T3 { return oldObj.ST3 }))...) + }(fldPath.Child("st3"), obj.ST3, safe.Field(oldObj, func(oldObj *T4) []T3 { return oldObj.ST3 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/multiple_validations/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/multiple_validations/zz_generated.validations.go index c17dc05ec12..af84e65066f 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/multiple_validations/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/multiple_validations/zz_generated.validations.go @@ -59,9 +59,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -74,7 +74,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.ListField[*] #2") })...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.ListField }), oldObj != nil)...) // field Struct.UnvalidatedListField has no validation return errs diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/slice_of_primitive/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/slice_of_primitive/zz_generated.validations.go index 8d233d9c61b..d00361b2c86 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/slice_of_primitive/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/slice_of_primitive/zz_generated.validations.go @@ -66,9 +66,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -77,13 +77,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.ListField[*]") })...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.ListField }), oldObj != nil)...) // field Struct.ListTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -94,7 +94,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_StringType)...) return - }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []StringType { return oldObj.ListTypedefField }))...) + }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []StringType { return oldObj.ListTypedefField }), oldObj != nil)...) // field Struct.UnvalidatedListField has no validation return errs diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/slice_of_struct/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/slice_of_struct/zz_generated.validations.go index b47434e5752..cea3ac249ce 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/slice_of_struct/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/slice_of_struct/zz_generated.validations.go @@ -74,9 +74,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -87,13 +87,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_OtherStruct)...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListField }), oldObj != nil)...) // field Struct.ListTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -104,19 +104,19 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_OtherTypedefStruct)...) return - }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.ListTypedefField }))...) + }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.ListTypedefField }), oldObj != nil)...) // field Struct.UnvalidatedListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_OtherStruct)...) return - }(fldPath.Child("UnvalidatedListField"), obj.UnvalidatedListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.UnvalidatedListField }))...) + }(fldPath.Child("UnvalidatedListField"), obj.UnvalidatedListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.UnvalidatedListField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/typedef_to_slice/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/typedef_to_slice/zz_generated.validations.go index a54092c21bf..910c534cf4b 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/typedef_to_slice/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/slices/typedef_to_slice/zz_generated.validations.go @@ -90,9 +90,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ListType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ListType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -103,13 +103,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ListType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) ListType { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) ListType { return oldObj.ListField }), oldObj != nil)...) // field Struct.ListTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ListTypedefType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ListTypedefType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -120,7 +120,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ListTypedefType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) ListTypedefType { return oldObj.ListTypedefField }))...) + }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) ListTypedefType { return oldObj.ListTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachkey/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachkey/zz_generated.validations.go index 99dcbe65687..10f6676bf8e 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachkey/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachkey/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -66,13 +66,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "Struct.MapField(keys)") })...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[UnvalidatedStringType]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[UnvalidatedStringType]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -80,13 +80,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "Struct.MapTypedefField(keys)") })...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[UnvalidatedStringType]string { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[UnvalidatedStringType]string { return oldObj.MapTypedefField }), oldObj != nil)...) // field Struct.MapValidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[ValidatedStringType]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[ValidatedStringType]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -96,13 +96,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the map and call the key type's validation function errs = append(errs, validate.EachMapKey(ctx, op, fldPath, obj, oldObj, Validate_ValidatedStringType)...) return - }(fldPath.Child("mapValidatedTypedefField"), obj.MapValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[ValidatedStringType]string { return oldObj.MapValidatedTypedefField }))...) + }(fldPath.Child("mapValidatedTypedefField"), obj.MapValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[ValidatedStringType]string { return oldObj.MapValidatedTypedefField }), oldObj != nil)...) // field Struct.MapTypeField errs = append(errs, - func(fldPath *field.Path, obj, oldObj UnvalidatedMapType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj UnvalidatedMapType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -110,13 +110,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "Struct.MapTypeField(keys)") })...) return - }(fldPath.Child("mapTypeField"), obj.MapTypeField, safe.Field(oldObj, func(oldObj *Struct) UnvalidatedMapType { return oldObj.MapTypeField }))...) + }(fldPath.Child("mapTypeField"), obj.MapTypeField, safe.Field(oldObj, func(oldObj *Struct) UnvalidatedMapType { return oldObj.MapTypeField }), oldObj != nil)...) // field Struct.ValidatedMapTypeField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ValidatedMapType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ValidatedMapType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -126,7 +126,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ValidatedMapType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedMapTypeField"), obj.ValidatedMapTypeField, safe.Field(oldObj, func(oldObj *Struct) ValidatedMapType { return oldObj.ValidatedMapTypeField }))...) + }(fldPath.Child("validatedMapTypeField"), obj.ValidatedMapTypeField, safe.Field(oldObj, func(oldObj *Struct) ValidatedMapType { return oldObj.ValidatedMapTypeField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_primitive/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_primitive/zz_generated.validations.go index bc010462db2..7108c4bcbec 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_primitive/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_primitive/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -66,13 +66,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapField[*]") })...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -80,7 +80,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapTypedefField[*]") })...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[string]StringType { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[string]StringType { return oldObj.MapTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_struct/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_struct/zz_generated.validations.go index 1b5da1aaeed..6355fdc6f46 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_struct/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/map_of_struct/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -66,13 +66,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapField[*]") })...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]OtherStruct { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]OtherStruct { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]OtherTypedefStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]OtherTypedefStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -80,7 +80,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapTypedefField[*]") })...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[string]OtherTypedefStruct { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) map[string]OtherTypedefStruct { return oldObj.MapTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/slice_of_primitive/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/slice_of_primitive/zz_generated.validations.go index 6a68c737194..172791abd58 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/slice_of_primitive/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/slice_of_primitive/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -66,13 +66,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.ListField[*]") })...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.ListField }), oldObj != nil)...) // field Struct.ListTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -80,7 +80,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.ListTypedefField[*]") })...) return - }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []StringType { return oldObj.ListTypedefField }))...) + }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []StringType { return oldObj.ListTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/slice_of_struct/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/slice_of_struct/zz_generated.validations.go index ab450dc0294..da8f0b07a97 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/slice_of_struct/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/slice_of_struct/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -66,13 +66,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.ListField[*]") })...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListField }), oldObj != nil)...) // field Struct.ListTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -80,13 +80,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.ListTypedefField[*]") })...) return - }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.ListTypedefField }))...) + }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.ListTypedefField }), oldObj != nil)...) // field Struct.ListNonComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -94,7 +94,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.ListNonComparableField[*]") })...) return - }(fldPath.Child("listNonComparableField"), obj.ListNonComparableField, safe.Field(oldObj, func(oldObj *Struct) []NonComparableStruct { return oldObj.ListNonComparableField }))...) + }(fldPath.Child("listNonComparableField"), obj.ListNonComparableField, safe.Field(oldObj, func(oldObj *Struct) []NonComparableStruct { return oldObj.ListNonComparableField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/typedef_to_map/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/typedef_to_map/zz_generated.validations.go index 8b8ed6e5d27..47457f2757f 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/typedef_to_map/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/typedef_to_map/zz_generated.validations.go @@ -88,9 +88,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj MapType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj MapType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -100,13 +100,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_MapType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) MapType { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) MapType { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj MapTypedefType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj MapTypedefType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -116,7 +116,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_MapTypedefType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) MapTypedefType { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) MapTypedefType { return oldObj.MapTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/typedef_to_slice/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/typedef_to_slice/zz_generated.validations.go index a8dc681e51f..8e8fd88dca8 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/typedef_to_slice/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/eachval/typedef_to_slice/zz_generated.validations.go @@ -76,9 +76,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ListType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ListType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -88,13 +88,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ListType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) ListType { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) ListType { return oldObj.ListField }), oldObj != nil)...) // field Struct.ListTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ListTypedefType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ListTypedefType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -104,7 +104,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ListTypedefType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) ListTypedefType { return oldObj.ListTypedefField }))...) + }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) ListTypedefType { return oldObj.ListTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/enum/options/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/enum/options/zz_generated.validations.go index e708bee30ca..7de57c27e1d 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/enum/options/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/enum/options/zz_generated.validations.go @@ -92,27 +92,27 @@ func Validate_ConditionalStruct(ctx context.Context, op operation.Operation, fld // field ConditionalStruct.ConditionalEnumField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ConditionalEnum) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ConditionalEnum, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ConditionalEnum(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("conditionalEnumField"), &obj.ConditionalEnumField, safe.Field(oldObj, func(oldObj *ConditionalStruct) *ConditionalEnum { return &oldObj.ConditionalEnumField }))...) + }(fldPath.Child("conditionalEnumField"), &obj.ConditionalEnumField, safe.Field(oldObj, func(oldObj *ConditionalStruct) *ConditionalEnum { return &oldObj.ConditionalEnumField }), oldObj != nil)...) // field ConditionalStruct.ConditionalEnumPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ConditionalEnum) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ConditionalEnum, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ConditionalEnum(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("conditionalEnumPtrField"), obj.ConditionalEnumPtrField, safe.Field(oldObj, func(oldObj *ConditionalStruct) *ConditionalEnum { return oldObj.ConditionalEnumPtrField }))...) + }(fldPath.Child("conditionalEnumPtrField"), obj.ConditionalEnumPtrField, safe.Field(oldObj, func(oldObj *ConditionalStruct) *ConditionalEnum { return oldObj.ConditionalEnumPtrField }), oldObj != nil)...) return errs } @@ -164,102 +164,102 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Enum0Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum0) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum0, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum0(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum0Field"), &obj.Enum0Field, safe.Field(oldObj, func(oldObj *Struct) *Enum0 { return &oldObj.Enum0Field }))...) + }(fldPath.Child("enum0Field"), &obj.Enum0Field, safe.Field(oldObj, func(oldObj *Struct) *Enum0 { return &oldObj.Enum0Field }), oldObj != nil)...) // field Struct.Enum0PtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum0) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum0, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum0(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum0PtrField"), obj.Enum0PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum0 { return oldObj.Enum0PtrField }))...) + }(fldPath.Child("enum0PtrField"), obj.Enum0PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum0 { return oldObj.Enum0PtrField }), oldObj != nil)...) // field Struct.Enum1Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum1Field"), &obj.Enum1Field, safe.Field(oldObj, func(oldObj *Struct) *Enum1 { return &oldObj.Enum1Field }))...) + }(fldPath.Child("enum1Field"), &obj.Enum1Field, safe.Field(oldObj, func(oldObj *Struct) *Enum1 { return &oldObj.Enum1Field }), oldObj != nil)...) // field Struct.Enum1PtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum1PtrField"), obj.Enum1PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum1 { return oldObj.Enum1PtrField }))...) + }(fldPath.Child("enum1PtrField"), obj.Enum1PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum1 { return oldObj.Enum1PtrField }), oldObj != nil)...) // field Struct.Enum2Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum2Field"), &obj.Enum2Field, safe.Field(oldObj, func(oldObj *Struct) *Enum2 { return &oldObj.Enum2Field }))...) + }(fldPath.Child("enum2Field"), &obj.Enum2Field, safe.Field(oldObj, func(oldObj *Struct) *Enum2 { return &oldObj.Enum2Field }), oldObj != nil)...) // field Struct.Enum2PtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum2PtrField"), obj.Enum2PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum2 { return oldObj.Enum2PtrField }))...) + }(fldPath.Child("enum2PtrField"), obj.Enum2PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum2 { return oldObj.Enum2PtrField }), oldObj != nil)...) // field Struct.NotEnumField has no validation // field Struct.NotEnumPtrField has no validation // field Struct.EnumWithExcludeField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *EnumWithExclude) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *EnumWithExclude, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_EnumWithExclude(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enumWithExcludeField"), &obj.EnumWithExcludeField, safe.Field(oldObj, func(oldObj *Struct) *EnumWithExclude { return &oldObj.EnumWithExcludeField }))...) + }(fldPath.Child("enumWithExcludeField"), &obj.EnumWithExcludeField, safe.Field(oldObj, func(oldObj *Struct) *EnumWithExclude { return &oldObj.EnumWithExcludeField }), oldObj != nil)...) // field Struct.EnumWithExcludePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *EnumWithExclude) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *EnumWithExclude, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_EnumWithExclude(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enumWithExcludePtrField"), obj.EnumWithExcludePtrField, safe.Field(oldObj, func(oldObj *Struct) *EnumWithExclude { return oldObj.EnumWithExcludePtrField }))...) + }(fldPath.Child("enumWithExcludePtrField"), obj.EnumWithExcludePtrField, safe.Field(oldObj, func(oldObj *Struct) *EnumWithExclude { return oldObj.EnumWithExcludePtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/enum/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/enum/zz_generated.validations.go index 9d8ad9ab703..7e8a048a6fd 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/enum/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/enum/zz_generated.validations.go @@ -86,75 +86,75 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Enum0Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum0) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum0, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum0(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum0Field"), &obj.Enum0Field, safe.Field(oldObj, func(oldObj *Struct) *Enum0 { return &oldObj.Enum0Field }))...) + }(fldPath.Child("enum0Field"), &obj.Enum0Field, safe.Field(oldObj, func(oldObj *Struct) *Enum0 { return &oldObj.Enum0Field }), oldObj != nil)...) // field Struct.Enum0PtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum0) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum0, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum0(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum0PtrField"), obj.Enum0PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum0 { return oldObj.Enum0PtrField }))...) + }(fldPath.Child("enum0PtrField"), obj.Enum0PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum0 { return oldObj.Enum0PtrField }), oldObj != nil)...) // field Struct.Enum1Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum1Field"), &obj.Enum1Field, safe.Field(oldObj, func(oldObj *Struct) *Enum1 { return &oldObj.Enum1Field }))...) + }(fldPath.Child("enum1Field"), &obj.Enum1Field, safe.Field(oldObj, func(oldObj *Struct) *Enum1 { return &oldObj.Enum1Field }), oldObj != nil)...) // field Struct.Enum1PtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum1PtrField"), obj.Enum1PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum1 { return oldObj.Enum1PtrField }))...) + }(fldPath.Child("enum1PtrField"), obj.Enum1PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum1 { return oldObj.Enum1PtrField }), oldObj != nil)...) // field Struct.Enum2Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum2Field"), &obj.Enum2Field, safe.Field(oldObj, func(oldObj *Struct) *Enum2 { return &oldObj.Enum2Field }))...) + }(fldPath.Child("enum2Field"), &obj.Enum2Field, safe.Field(oldObj, func(oldObj *Struct) *Enum2 { return &oldObj.Enum2Field }), oldObj != nil)...) // field Struct.Enum2PtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Enum2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Enum2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Enum2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("enum2PtrField"), obj.Enum2PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum2 { return oldObj.Enum2PtrField }))...) + }(fldPath.Child("enum2PtrField"), obj.Enum2PtrField, safe.Field(oldObj, func(oldObj *Struct) *Enum2 { return oldObj.Enum2PtrField }), oldObj != nil)...) // field Struct.NotEnumField has no validation // field Struct.NotEnumPtrField has no validation diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/zz_generated.validations.go index cd6484b6149..8bfe9bba2e0 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-extended-resource-name/zz_generated.validations.go @@ -55,9 +55,9 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field // field MyType.NameField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -70,13 +70,13 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.ExtendedResourceName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("nameField"), &obj.NameField, safe.Field(oldObj, func(oldObj *MyType) *string { return &oldObj.NameField }))...) + }(fldPath.Child("nameField"), &obj.NameField, safe.Field(oldObj, func(oldObj *MyType) *string { return &oldObj.NameField }), oldObj != nil)...) // field MyType.NamePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -89,19 +89,19 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.ExtendedResourceName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("namePtrField"), obj.NamePtrField, safe.Field(oldObj, func(oldObj *MyType) *string { return oldObj.NamePtrField }))...) + }(fldPath.Child("namePtrField"), obj.NamePtrField, safe.Field(oldObj, func(oldObj *MyType) *string { return oldObj.NamePtrField }), oldObj != nil)...) // field MyType.NameTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *NameStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *NameStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_NameStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("nameTypedefField"), &obj.NameTypedefField, safe.Field(oldObj, func(oldObj *MyType) *NameStringType { return &oldObj.NameTypedefField }))...) + }(fldPath.Child("nameTypedefField"), &obj.NameTypedefField, safe.Field(oldObj, func(oldObj *MyType) *NameStringType { return &oldObj.NameTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-label-key/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-label-key/zz_generated.validations.go index 3526de62e10..d08feada4fc 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-label-key/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-label-key/zz_generated.validations.go @@ -63,39 +63,39 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.LabelKeyField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.LabelKey(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("labelKeyField"), &obj.LabelKeyField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.LabelKeyField }))...) + }(fldPath.Child("labelKeyField"), &obj.LabelKeyField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.LabelKeyField }), oldObj != nil)...) // field Struct.LabelKeyPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.LabelKey(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("labelKeyPtrField"), obj.LabelKeyPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.LabelKeyPtrField }))...) + }(fldPath.Child("labelKeyPtrField"), obj.LabelKeyPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.LabelKeyPtrField }), oldObj != nil)...) // field Struct.LabelKeyTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *LabelKeyStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *LabelKeyStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_LabelKeyStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("labelKeyTypedefField"), &obj.LabelKeyTypedefField, safe.Field(oldObj, func(oldObj *Struct) *LabelKeyStringType { return &oldObj.LabelKeyTypedefField }))...) + }(fldPath.Child("labelKeyTypedefField"), &obj.LabelKeyTypedefField, safe.Field(oldObj, func(oldObj *Struct) *LabelKeyStringType { return &oldObj.LabelKeyTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-label-value/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-label-value/zz_generated.validations.go index fb1ca3c3fc3..c18c48ab621 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-label-value/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-label-value/zz_generated.validations.go @@ -63,39 +63,39 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.LabelValueField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.LabelValue(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("labelValueField"), &obj.LabelValueField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.LabelValueField }))...) + }(fldPath.Child("labelValueField"), &obj.LabelValueField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.LabelValueField }), oldObj != nil)...) // field Struct.LabelValuePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.LabelValue(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("labelValuePtrField"), obj.LabelValuePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.LabelValuePtrField }))...) + }(fldPath.Child("labelValuePtrField"), obj.LabelValuePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.LabelValuePtrField }), oldObj != nil)...) // field Struct.LabelValueTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *LabelValueStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *LabelValueStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_LabelValueStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("labelValueTypedefField"), &obj.LabelValueTypedefField, safe.Field(oldObj, func(oldObj *Struct) *LabelValueStringType { return &oldObj.LabelValueTypedefField }))...) + }(fldPath.Child("labelValueTypedefField"), &obj.LabelValueTypedefField, safe.Field(oldObj, func(oldObj *Struct) *LabelValueStringType { return &oldObj.LabelValueTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-long-name-caseless/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-long-name-caseless/zz_generated.validations.go index 89f607b1f25..567e5fc3cdd 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-long-name-caseless/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-long-name-caseless/zz_generated.validations.go @@ -63,39 +63,39 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.LongNameField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.LongNameCaseless(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("longNameField"), &obj.LongNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.LongNameField }))...) + }(fldPath.Child("longNameField"), &obj.LongNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.LongNameField }), oldObj != nil)...) // field Struct.LongNamePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.LongNameCaseless(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("longNamePtrField"), obj.LongNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.LongNamePtrField }))...) + }(fldPath.Child("longNamePtrField"), obj.LongNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.LongNamePtrField }), oldObj != nil)...) // field Struct.LongNameTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *LongNameStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *LongNameStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_LongNameStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("longNameTypedefField"), &obj.LongNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *LongNameStringType { return &oldObj.LongNameTypedefField }))...) + }(fldPath.Child("longNameTypedefField"), &obj.LongNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *LongNameStringType { return &oldObj.LongNameTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-long-name/k8s-long-name/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-long-name/k8s-long-name/zz_generated.validations.go index 25d842d50b1..3966497a646 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-long-name/k8s-long-name/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-long-name/k8s-long-name/zz_generated.validations.go @@ -63,39 +63,39 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.LongNameField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.LongName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("longNameField"), &obj.LongNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.LongNameField }))...) + }(fldPath.Child("longNameField"), &obj.LongNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.LongNameField }), oldObj != nil)...) // field Struct.LongNamePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.LongName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("longNamePtrField"), obj.LongNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.LongNamePtrField }))...) + }(fldPath.Child("longNamePtrField"), obj.LongNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.LongNamePtrField }), oldObj != nil)...) // field Struct.LongNameTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *LongNameStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *LongNameStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_LongNameStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("longNameTypedefField"), &obj.LongNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *LongNameStringType { return &oldObj.LongNameTypedefField }))...) + }(fldPath.Child("longNameTypedefField"), &obj.LongNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *LongNameStringType { return &oldObj.LongNameTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-resource-fully-qualified-name/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-resource-fully-qualified-name/zz_generated.validations.go index e552d59d683..441ce0e5a2e 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-resource-fully-qualified-name/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-resource-fully-qualified-name/zz_generated.validations.go @@ -63,39 +63,39 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.FullyQualifiedNameField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.ResourceFullyQualifiedName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("fullyQualifiedNameField"), &obj.FullyQualifiedNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.FullyQualifiedNameField }))...) + }(fldPath.Child("fullyQualifiedNameField"), &obj.FullyQualifiedNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.FullyQualifiedNameField }), oldObj != nil)...) // field Struct.FullyQualifiedNamePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.ResourceFullyQualifiedName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("fullyQualifiedNamePtrField"), obj.FullyQualifiedNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.FullyQualifiedNamePtrField }))...) + }(fldPath.Child("fullyQualifiedNamePtrField"), obj.FullyQualifiedNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.FullyQualifiedNamePtrField }), oldObj != nil)...) // field Struct.FullyQualifiedNameTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *FullyQualifiedNameStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *FullyQualifiedNameStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_FullyQualifiedNameStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("fullyQualifiedNameTypedefField"), &obj.FullyQualifiedNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *FullyQualifiedNameStringType { return &oldObj.FullyQualifiedNameTypedefField }))...) + }(fldPath.Child("fullyQualifiedNameTypedefField"), &obj.FullyQualifiedNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *FullyQualifiedNameStringType { return &oldObj.FullyQualifiedNameTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-resource-pool-name/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-resource-pool-name/zz_generated.validations.go index 3c4bc6fd620..e6cff3000ea 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-resource-pool-name/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-resource-pool-name/zz_generated.validations.go @@ -63,39 +63,39 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ResourcePoolNameField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.ResourcePoolName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("resourcePoolNameField"), &obj.ResourcePoolNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.ResourcePoolNameField }))...) + }(fldPath.Child("resourcePoolNameField"), &obj.ResourcePoolNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.ResourcePoolNameField }), oldObj != nil)...) // field Struct.ResourcePoolNamePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.ResourcePoolName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("resourcePoolNamePtrField"), obj.ResourcePoolNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.ResourcePoolNamePtrField }))...) + }(fldPath.Child("resourcePoolNamePtrField"), obj.ResourcePoolNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.ResourcePoolNamePtrField }), oldObj != nil)...) // field Struct.ResourcePoolNameTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ResourcePoolNameStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ResourcePoolNameStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ResourcePoolNameStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("resourcePoolNameTypedefField"), &obj.ResourcePoolNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ResourcePoolNameStringType { return &oldObj.ResourcePoolNameTypedefField }))...) + }(fldPath.Child("resourcePoolNameTypedefField"), &obj.ResourcePoolNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ResourcePoolNameStringType { return &oldObj.ResourcePoolNameTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-short-name/k8s-short-name/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-short-name/k8s-short-name/zz_generated.validations.go index ed260d4e006..482d1647154 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-short-name/k8s-short-name/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-short-name/k8s-short-name/zz_generated.validations.go @@ -63,39 +63,39 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ShortNameField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.ShortName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shortNameField"), &obj.ShortNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.ShortNameField }))...) + }(fldPath.Child("shortNameField"), &obj.ShortNameField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.ShortNameField }), oldObj != nil)...) // field Struct.ShortNamePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.ShortName(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shortNamePtrField"), obj.ShortNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.ShortNamePtrField }))...) + }(fldPath.Child("shortNamePtrField"), obj.ShortNamePtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.ShortNamePtrField }), oldObj != nil)...) // field Struct.ShortNameTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ShortNameStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ShortNameStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ShortNameStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("shortNameTypedefField"), &obj.ShortNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ShortNameStringType { return &oldObj.ShortNameTypedefField }))...) + }(fldPath.Child("shortNameTypedefField"), &obj.ShortNameTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ShortNameStringType { return &oldObj.ShortNameTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/zz_generated.validations.go index 62066e47da7..7145bab6004 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/format/k8s-uuid/zz_generated.validations.go @@ -55,9 +55,9 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field // field MyType.UUIDField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -70,13 +70,13 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("uuidField"), &obj.UUIDField, safe.Field(oldObj, func(oldObj *MyType) *string { return &oldObj.UUIDField }))...) + }(fldPath.Child("uuidField"), &obj.UUIDField, safe.Field(oldObj, func(oldObj *MyType) *string { return &oldObj.UUIDField }), oldObj != nil)...) // field MyType.UUIDPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -89,19 +89,19 @@ func Validate_MyType(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.UUID(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("uuidPtrField"), obj.UUIDPtrField, safe.Field(oldObj, func(oldObj *MyType) *string { return oldObj.UUIDPtrField }))...) + }(fldPath.Child("uuidPtrField"), obj.UUIDPtrField, safe.Field(oldObj, func(oldObj *MyType) *string { return oldObj.UUIDPtrField }), oldObj != nil)...) // field MyType.UUIDTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *UUIDStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *UUIDStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_UUIDStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("uuidTypedefField"), &obj.UUIDTypedefField, safe.Field(oldObj, func(oldObj *MyType) *UUIDStringType { return &oldObj.UUIDTypedefField }))...) + }(fldPath.Child("uuidTypedefField"), &obj.UUIDTypedefField, safe.Field(oldObj, func(oldObj *MyType) *UUIDStringType { return &oldObj.UUIDTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/immutable/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/immutable/zz_generated.validations.go index f1481f66f5f..a391627463f 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/immutable/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/immutable/zz_generated.validations.go @@ -71,9 +71,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -86,13 +86,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }), oldObj != nil)...) // field Struct.StringPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -105,13 +105,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }))...) + }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }), oldObj != nil)...) // field Struct.StructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -124,13 +124,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *ComparableStruct { return &oldObj.StructField }))...) + }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *ComparableStruct { return &oldObj.StructField }), oldObj != nil)...) // field Struct.StructPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -143,13 +143,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *ComparableStruct { return oldObj.StructPtrField }))...) + }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *ComparableStruct { return oldObj.StructPtrField }), oldObj != nil)...) // field Struct.NonComparableStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -162,13 +162,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("noncomparableStructField"), &obj.NonComparableStructField, safe.Field(oldObj, func(oldObj *Struct) *NonComparableStruct { return &oldObj.NonComparableStructField }))...) + }(fldPath.Child("noncomparableStructField"), &obj.NonComparableStructField, safe.Field(oldObj, func(oldObj *Struct) *NonComparableStruct { return &oldObj.NonComparableStructField }), oldObj != nil)...) // field Struct.NonComparableStructPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -181,13 +181,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("noncomparableStructPtrField"), obj.NonComparableStructPtrField, safe.Field(oldObj, func(oldObj *Struct) *NonComparableStruct { return oldObj.NonComparableStructPtrField }))...) + }(fldPath.Child("noncomparableStructPtrField"), obj.NonComparableStructPtrField, safe.Field(oldObj, func(oldObj *Struct) *NonComparableStruct { return oldObj.NonComparableStructPtrField }), oldObj != nil)...) // field Struct.SliceField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -200,13 +200,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("sliceField"), obj.SliceField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.SliceField }))...) + }(fldPath.Child("sliceField"), obj.SliceField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.SliceField }), oldObj != nil)...) // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -219,31 +219,31 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }), oldObj != nil)...) // field Struct.ImmutableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ImmutableType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ImmutableType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ImmutableType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("immutableField"), &obj.ImmutableField, safe.Field(oldObj, func(oldObj *Struct) *ImmutableType { return &oldObj.ImmutableField }))...) + }(fldPath.Child("immutableField"), &obj.ImmutableField, safe.Field(oldObj, func(oldObj *Struct) *ImmutableType { return &oldObj.ImmutableField }), oldObj != nil)...) // field Struct.ImmutablePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ImmutableType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ImmutableType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ImmutableType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("immutablePtrField"), obj.ImmutablePtrField, safe.Field(oldObj, func(oldObj *Struct) *ImmutableType { return oldObj.ImmutablePtrField }))...) + }(fldPath.Child("immutablePtrField"), obj.ImmutablePtrField, safe.Field(oldObj, func(oldObj *Struct) *ImmutableType { return oldObj.ImmutablePtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/immutable_transitions/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/immutable_transitions/zz_generated.validations.go index 6b13e9aa616..89a0f4328da 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/immutable_transitions/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/immutable_transitions/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -87,7 +87,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field } }() return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.ListField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/multiple_keys/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/multiple_keys/zz_generated.validations.go index 6265d502ece..264626d78ab 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/multiple_keys/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/multiple_keys/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -75,13 +75,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.Items }), oldObj != nil)...) // field Struct.OutOfOrder errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -95,13 +95,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("outOfOrder"), obj.OutOfOrder, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.OutOfOrder }))...) + }(fldPath.Child("outOfOrder"), obj.OutOfOrder, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.OutOfOrder }), oldObj != nil)...) // field Struct.PtrItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj []PtrItem) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []PtrItem, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -117,13 +117,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("ptrItems"), obj.PtrItems, safe.Field(oldObj, func(oldObj *Struct) []PtrItem { return oldObj.PtrItems }))...) + }(fldPath.Child("ptrItems"), obj.PtrItems, safe.Field(oldObj, func(oldObj *Struct) []PtrItem { return oldObj.PtrItems }), oldObj != nil)...) // field Struct.MixedPtrItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj []MixedPtrItem) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []MixedPtrItem, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -139,7 +139,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("mixedPtrItems"), obj.MixedPtrItems, safe.Field(oldObj, func(oldObj *Struct) []MixedPtrItem { return oldObj.MixedPtrItems }))...) + }(fldPath.Child("mixedPtrItems"), obj.MixedPtrItems, safe.Field(oldObj, func(oldObj *Struct) []MixedPtrItem { return oldObj.MixedPtrItems }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/single_key/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/single_key/zz_generated.validations.go index d3da78237a0..29410ca04b3 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/single_key/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/single_key/zz_generated.validations.go @@ -64,9 +64,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -81,13 +81,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.Items }), oldObj != nil)...) // field Struct.IntKeyItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj []IntKeyItem) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []IntKeyItem, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -102,13 +102,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("intKeyItems"), obj.IntKeyItems, safe.Field(oldObj, func(oldObj *Struct) []IntKeyItem { return oldObj.IntKeyItems }))...) + }(fldPath.Child("intKeyItems"), obj.IntKeyItems, safe.Field(oldObj, func(oldObj *Struct) []IntKeyItem { return oldObj.IntKeyItems }), oldObj != nil)...) // field Struct.BoolKeyItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj []BoolKeyItem) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []BoolKeyItem, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -123,13 +123,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("boolKeyItems"), obj.BoolKeyItems, safe.Field(oldObj, func(oldObj *Struct) []BoolKeyItem { return oldObj.BoolKeyItems }))...) + }(fldPath.Child("boolKeyItems"), obj.BoolKeyItems, safe.Field(oldObj, func(oldObj *Struct) []BoolKeyItem { return oldObj.BoolKeyItems }), oldObj != nil)...) // field Struct.TypedefItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj TypedefItemList) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj TypedefItemList, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -144,13 +144,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("typedefItems"), obj.TypedefItems, safe.Field(oldObj, func(oldObj *Struct) TypedefItemList { return oldObj.TypedefItems }))...) + }(fldPath.Child("typedefItems"), obj.TypedefItems, safe.Field(oldObj, func(oldObj *Struct) TypedefItemList { return oldObj.TypedefItems }), oldObj != nil)...) // field Struct.AtomicUniqueMapItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -162,13 +162,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("atomicUniqueMapItems"), obj.AtomicUniqueMapItems, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.AtomicUniqueMapItems }))...) + }(fldPath.Child("atomicUniqueMapItems"), obj.AtomicUniqueMapItems, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.AtomicUniqueMapItems }), oldObj != nil)...) // field Struct.PtrKeyItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj []PtrKeyItem) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []PtrKeyItem, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -182,7 +182,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("ptrKeyItems"), obj.PtrKeyItems, safe.Field(oldObj, func(oldObj *Struct) []PtrKeyItem { return oldObj.PtrKeyItems }))...) + }(fldPath.Child("ptrKeyItems"), obj.PtrKeyItems, safe.Field(oldObj, func(oldObj *Struct) []PtrKeyItem { return oldObj.PtrKeyItems }), oldObj != nil)...) return errs } @@ -194,9 +194,9 @@ func Validate_StructWithNestedTypedef(ctx context.Context, op operation.Operatio // field StructWithNestedTypedef.NestedItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj []NestedTypedefItem) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []NestedTypedefItem, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -208,7 +208,7 @@ func Validate_StructWithNestedTypedef(ctx context.Context, op operation.Operatio })...) }() return - }(fldPath.Child("nestedItems"), obj.NestedItems, safe.Field(oldObj, func(oldObj *StructWithNestedTypedef) []NestedTypedefItem { return oldObj.NestedItems }))...) + }(fldPath.Child("nestedItems"), obj.NestedItems, safe.Field(oldObj, func(oldObj *StructWithNestedTypedef) []NestedTypedefItem { return oldObj.NestedItems }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/subfield/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/subfield/zz_generated.validations.go index f7035e54def..7e46bf60917 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/subfield/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/subfield/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Items errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -72,13 +72,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.Items }))...) + }(fldPath.Child("items"), obj.Items, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.Items }), oldObj != nil)...) // field Struct.RatchetItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj []RatchetItem) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []RatchetItem, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -92,7 +92,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("ratchetItems"), obj.RatchetItems, safe.Field(oldObj, func(oldObj *Struct) []RatchetItem { return oldObj.RatchetItems }))...) + }(fldPath.Child("ratchetItems"), obj.RatchetItems, safe.Field(oldObj, func(oldObj *Struct) []RatchetItem { return oldObj.RatchetItems }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/typedef/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/typedef/zz_generated.validations.go index 9d9128bc6eb..a7cf2541b26 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/typedef/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/typedef/zz_generated.validations.go @@ -122,33 +122,33 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.TypedefItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj ItemList) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ItemList, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ItemList(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefItems"), obj.TypedefItems, safe.Field(oldObj, func(oldObj *Struct) ItemList { return oldObj.TypedefItems }))...) + }(fldPath.Child("typedefItems"), obj.TypedefItems, safe.Field(oldObj, func(oldObj *Struct) ItemList { return oldObj.TypedefItems }), oldObj != nil)...) // field Struct.NestedTypedefItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj ItemListAlias) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ItemListAlias, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ItemListAlias(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("nestedTypedefItems"), obj.NestedTypedefItems, safe.Field(oldObj, func(oldObj *Struct) ItemListAlias { return oldObj.NestedTypedefItems }))...) + }(fldPath.Child("nestedTypedefItems"), obj.NestedTypedefItems, safe.Field(oldObj, func(oldObj *Struct) ItemListAlias { return oldObj.NestedTypedefItems }), oldObj != nil)...) // field Struct.DualItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj DualItemList) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj DualItemList, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -160,13 +160,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_DualItemList(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("dualItems"), obj.DualItems, safe.Field(oldObj, func(oldObj *Struct) DualItemList { return oldObj.DualItems }))...) + }(fldPath.Child("dualItems"), obj.DualItems, safe.Field(oldObj, func(oldObj *Struct) DualItemList { return oldObj.DualItems }), oldObj != nil)...) // field Struct.ConflictingItems errs = append(errs, - func(fldPath *field.Path, obj, oldObj ConflictingItemList) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ConflictingItemList, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -178,7 +178,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ConflictingItemList(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("conflictingItems"), obj.ConflictingItems, safe.Field(oldObj, func(oldObj *Struct) ConflictingItemList { return oldObj.ConflictingItems }))...) + }(fldPath.Child("conflictingItems"), obj.ConflictingItems, safe.Field(oldObj, func(oldObj *Struct) ConflictingItemList { return oldObj.ConflictingItems }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/union/simple/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/union/simple/zz_generated.validations.go index 31d24f91d7f..c3f7f255cb2 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/union/simple/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/union/simple/zz_generated.validations.go @@ -58,9 +58,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Tasks errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Task) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Task, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -82,7 +82,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return false })...) return - }(fldPath.Child("tasks"), obj.Tasks, safe.Field(oldObj, func(oldObj *Struct) []Task { return oldObj.Tasks }))...) + }(fldPath.Child("tasks"), obj.Tasks, safe.Field(oldObj, func(oldObj *Struct) []Task { return oldObj.Tasks }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/union/typedef/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/union/typedef/zz_generated.validations.go index 5f240b9b750..873e58d44a5 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/union/typedef/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/union/typedef/zz_generated.validations.go @@ -56,15 +56,15 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Tasks errs = append(errs, - func(fldPath *field.Path, obj, oldObj TaskList) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj TaskList, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_TaskList(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("tasks"), obj.Tasks, safe.Field(oldObj, func(oldObj *Struct) TaskList { return oldObj.Tasks }))...) + }(fldPath.Child("tasks"), obj.Tasks, safe.Field(oldObj, func(oldObj *Struct) TaskList { return oldObj.Tasks }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/zerorooneof/simple/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/zerorooneof/simple/zz_generated.validations.go index f4ac450fdaa..71f31587243 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/zerorooneof/simple/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/zerorooneof/simple/zz_generated.validations.go @@ -58,9 +58,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Tasks errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Task) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Task, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -82,7 +82,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return false })...) return - }(fldPath.Child("tasks"), obj.Tasks, safe.Field(oldObj, func(oldObj *Struct) []Task { return oldObj.Tasks }))...) + }(fldPath.Child("tasks"), obj.Tasks, safe.Field(oldObj, func(oldObj *Struct) []Task { return oldObj.Tasks }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/zerorooneof/typedef/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/zerorooneof/typedef/zz_generated.validations.go index be89dc4a068..71529e3d4c0 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/zerorooneof/typedef/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/item/zerorooneof/typedef/zz_generated.validations.go @@ -56,15 +56,15 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Tasks errs = append(errs, - func(fldPath *field.Path, obj, oldObj TaskList) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj TaskList, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_TaskList(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("tasks"), obj.Tasks, safe.Field(oldObj, func(oldObj *Struct) TaskList { return oldObj.Tasks }))...) + }(fldPath.Child("tasks"), obj.Tasks, safe.Field(oldObj, func(oldObj *Struct) TaskList { return oldObj.Tasks }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listmap/multiple_keys/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listmap/multiple_keys/zz_generated.validations.go index 77f848de273..5c72158fa3d 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listmap/multiple_keys/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listmap/multiple_keys/zz_generated.validations.go @@ -67,9 +67,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -88,13 +88,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return a.Key1Field == b.Key1Field && a.Key2Field == b.Key2Field })...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListField }), oldObj != nil)...) // field Struct.ListTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -113,13 +113,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return a.Key1Field == b.Key1Field && a.Key2Field == b.Key2Field })...) return - }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.ListTypedefField }))...) + }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.ListTypedefField }), oldObj != nil)...) // field Struct.TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ListType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ListType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -136,13 +136,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ListType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefField"), obj.TypedefField, safe.Field(oldObj, func(oldObj *Struct) ListType { return oldObj.TypedefField }))...) + }(fldPath.Child("typedefField"), obj.TypedefField, safe.Field(oldObj, func(oldObj *Struct) ListType { return oldObj.TypedefField }), oldObj != nil)...) // field Struct.ListComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -156,13 +156,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return a.Key1Field == b.Key1Field && a.Key2Field == b.Key2Field })...) return - }(fldPath.Child("listComparableField"), obj.ListComparableField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListComparableField }))...) + }(fldPath.Child("listComparableField"), obj.ListComparableField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListComparableField }), oldObj != nil)...) // field Struct.ListNonComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -176,13 +176,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return a.Key1Field == b.Key1Field && a.Key2Field == b.Key2Field })...) return - }(fldPath.Child("listNonComparableField"), obj.ListNonComparableField, safe.Field(oldObj, func(oldObj *Struct) []NonComparableStruct { return oldObj.ListNonComparableField }))...) + }(fldPath.Child("listNonComparableField"), obj.ListNonComparableField, safe.Field(oldObj, func(oldObj *Struct) []NonComparableStruct { return oldObj.ListNonComparableField }), oldObj != nil)...) // field Struct.ListPtrKeyField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []PtrKeyStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []PtrKeyStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -198,13 +198,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("listPtrKeyField"), obj.ListPtrKeyField, safe.Field(oldObj, func(oldObj *Struct) []PtrKeyStruct { return oldObj.ListPtrKeyField }))...) + }(fldPath.Child("listPtrKeyField"), obj.ListPtrKeyField, safe.Field(oldObj, func(oldObj *Struct) []PtrKeyStruct { return oldObj.ListPtrKeyField }), oldObj != nil)...) // field Struct.ListMixedPtrKeyField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []MixedPtrKeyStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []MixedPtrKeyStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -220,7 +220,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("listMixedPtrKeyField"), obj.ListMixedPtrKeyField, safe.Field(oldObj, func(oldObj *Struct) []MixedPtrKeyStruct { return oldObj.ListMixedPtrKeyField }))...) + }(fldPath.Child("listMixedPtrKeyField"), obj.ListMixedPtrKeyField, safe.Field(oldObj, func(oldObj *Struct) []MixedPtrKeyStruct { return oldObj.ListMixedPtrKeyField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listmap/single_key/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listmap/single_key/zz_generated.validations.go index 4aa7de5123e..d3e10565ba4 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listmap/single_key/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listmap/single_key/zz_generated.validations.go @@ -65,9 +65,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ListField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -82,13 +82,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // lists with map semantics require unique keys errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, func(a OtherStruct, b OtherStruct) bool { return a.KeyField == b.KeyField })...) return - }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListField }))...) + }(fldPath.Child("listField"), obj.ListField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListField }), oldObj != nil)...) // field Struct.ListTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -103,13 +103,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // lists with map semantics require unique keys errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, func(a OtherTypedefStruct, b OtherTypedefStruct) bool { return a.KeyField == b.KeyField })...) return - }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.ListTypedefField }))...) + }(fldPath.Child("listTypedefField"), obj.ListTypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.ListTypedefField }), oldObj != nil)...) // field Struct.TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ListType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ListType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -124,13 +124,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_ListType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefField"), obj.TypedefField, safe.Field(oldObj, func(oldObj *Struct) ListType { return oldObj.TypedefField }))...) + }(fldPath.Child("typedefField"), obj.TypedefField, safe.Field(oldObj, func(oldObj *Struct) ListType { return oldObj.TypedefField }), oldObj != nil)...) // field Struct.ListComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -140,13 +140,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // lists with map semantics require unique keys errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, func(a OtherStruct, b OtherStruct) bool { return a.KeyField == b.KeyField })...) return - }(fldPath.Child("listComparableField"), obj.ListComparableField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListComparableField }))...) + }(fldPath.Child("listComparableField"), obj.ListComparableField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListComparableField }), oldObj != nil)...) // field Struct.ListNonComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -156,13 +156,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // lists with map semantics require unique keys errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, func(a NonComparableStruct, b NonComparableStruct) bool { return a.KeyField == b.KeyField })...) return - }(fldPath.Child("listNonComparableField"), obj.ListNonComparableField, safe.Field(oldObj, func(oldObj *Struct) []NonComparableStruct { return oldObj.ListNonComparableField }))...) + }(fldPath.Child("listNonComparableField"), obj.ListNonComparableField, safe.Field(oldObj, func(oldObj *Struct) []NonComparableStruct { return oldObj.ListNonComparableField }), oldObj != nil)...) // field Struct.ListPtrKeyField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []PtrKeyStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []PtrKeyStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -171,7 +171,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return ((a.KeyField == nil && b.KeyField == nil) || (a.KeyField != nil && b.KeyField != nil && *a.KeyField == *b.KeyField)) })...) return - }(fldPath.Child("listPtrKeyField"), obj.ListPtrKeyField, safe.Field(oldObj, func(oldObj *Struct) []PtrKeyStruct { return oldObj.ListPtrKeyField }))...) + }(fldPath.Child("listPtrKeyField"), obj.ListPtrKeyField, safe.Field(oldObj, func(oldObj *Struct) []PtrKeyStruct { return oldObj.ListPtrKeyField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listset/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listset/zz_generated.validations.go index 536ccf0bbac..59c8ea9c77a 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listset/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/listset/zz_generated.validations.go @@ -64,9 +64,9 @@ func Validate_ImmutableStruct(ctx context.Context, op operation.Operation, fldPa // field ImmutableStruct.SliceComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []ComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []ComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -79,13 +79,13 @@ func Validate_ImmutableStruct(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("sliceComparableField"), obj.SliceComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []ComparableStruct { return oldObj.SliceComparableField }))...) + }(fldPath.Child("sliceComparableField"), obj.SliceComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []ComparableStruct { return oldObj.SliceComparableField }), oldObj != nil)...) // field ImmutableStruct.SliceSetComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []ComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []ComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -100,13 +100,13 @@ func Validate_ImmutableStruct(ctx context.Context, op operation.Operation, fldPa // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("sliceSetComparableField"), obj.SliceSetComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []ComparableStruct { return oldObj.SliceSetComparableField }))...) + }(fldPath.Child("sliceSetComparableField"), obj.SliceSetComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []ComparableStruct { return oldObj.SliceSetComparableField }), oldObj != nil)...) // field ImmutableStruct.SliceNonComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -119,13 +119,13 @@ func Validate_ImmutableStruct(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("sliceNonComparableField"), obj.SliceNonComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []NonComparableStruct { return oldObj.SliceNonComparableField }))...) + }(fldPath.Child("sliceNonComparableField"), obj.SliceNonComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []NonComparableStruct { return oldObj.SliceNonComparableField }), oldObj != nil)...) // field ImmutableStruct.SliceSetNonComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -140,13 +140,13 @@ func Validate_ImmutableStruct(ctx context.Context, op operation.Operation, fldPa // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.SemanticDeepEqual)...) return - }(fldPath.Child("sliceSetNonComparableField"), obj.SliceSetNonComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []NonComparableStruct { return oldObj.SliceSetNonComparableField }))...) + }(fldPath.Child("sliceSetNonComparableField"), obj.SliceSetNonComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []NonComparableStruct { return oldObj.SliceSetNonComparableField }), oldObj != nil)...) // field ImmutableStruct.SlicePrimitiveField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -159,13 +159,13 @@ func Validate_ImmutableStruct(ctx context.Context, op operation.Operation, fldPa return // do not proceed } return - }(fldPath.Child("slicePrimitiveField"), obj.SlicePrimitiveField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []int { return oldObj.SlicePrimitiveField }))...) + }(fldPath.Child("slicePrimitiveField"), obj.SlicePrimitiveField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []int { return oldObj.SlicePrimitiveField }), oldObj != nil)...) // field ImmutableStruct.SliceSetPrimitiveField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -180,13 +180,13 @@ func Validate_ImmutableStruct(ctx context.Context, op operation.Operation, fldPa // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("sliceSetPrimitiveField"), obj.SliceSetPrimitiveField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []int { return oldObj.SliceSetPrimitiveField }))...) + }(fldPath.Child("sliceSetPrimitiveField"), obj.SliceSetPrimitiveField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []int { return oldObj.SliceSetPrimitiveField }), oldObj != nil)...) // field ImmutableStruct.SliceSetFalselyComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []FalselyComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []FalselyComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -201,7 +201,7 @@ func Validate_ImmutableStruct(ctx context.Context, op operation.Operation, fldPa // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.SemanticDeepEqual)...) return - }(fldPath.Child("sliceSetFalselyComparableField"), obj.SliceSetFalselyComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []FalselyComparableStruct { return oldObj.SliceSetFalselyComparableField }))...) + }(fldPath.Child("sliceSetFalselyComparableField"), obj.SliceSetFalselyComparableField, safe.Field(oldObj, func(oldObj *ImmutableStruct) []FalselyComparableStruct { return oldObj.SliceSetFalselyComparableField }), oldObj != nil)...) return errs } @@ -213,68 +213,68 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.SliceStringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("sliceStringField"), obj.SliceStringField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.SliceStringField }))...) + }(fldPath.Child("sliceStringField"), obj.SliceStringField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.SliceStringField }), oldObj != nil)...) // field Struct.SliceIntField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("sliceIntField"), obj.SliceIntField, safe.Field(oldObj, func(oldObj *Struct) []int { return oldObj.SliceIntField }))...) + }(fldPath.Child("sliceIntField"), obj.SliceIntField, safe.Field(oldObj, func(oldObj *Struct) []int { return oldObj.SliceIntField }), oldObj != nil)...) // field Struct.SliceComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []ComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []ComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("sliceComparableField"), obj.SliceComparableField, safe.Field(oldObj, func(oldObj *Struct) []ComparableStruct { return oldObj.SliceComparableField }))...) + }(fldPath.Child("sliceComparableField"), obj.SliceComparableField, safe.Field(oldObj, func(oldObj *Struct) []ComparableStruct { return oldObj.SliceComparableField }), oldObj != nil)...) // field Struct.SliceNonComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.SemanticDeepEqual)...) return - }(fldPath.Child("sliceNonComparableField"), obj.SliceNonComparableField, safe.Field(oldObj, func(oldObj *Struct) []NonComparableStruct { return oldObj.SliceNonComparableField }))...) + }(fldPath.Child("sliceNonComparableField"), obj.SliceNonComparableField, safe.Field(oldObj, func(oldObj *Struct) []NonComparableStruct { return oldObj.SliceNonComparableField }), oldObj != nil)...) // field Struct.SliceFalselyComparableField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []FalselyComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []FalselyComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.SemanticDeepEqual)...) return - }(fldPath.Child("sliceFalselyComparableField"), obj.SliceFalselyComparableField, safe.Field(oldObj, func(oldObj *Struct) []FalselyComparableStruct { return oldObj.SliceFalselyComparableField }))...) + }(fldPath.Child("sliceFalselyComparableField"), obj.SliceFalselyComparableField, safe.Field(oldObj, func(oldObj *Struct) []FalselyComparableStruct { return oldObj.SliceFalselyComparableField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/slice_of_primitive/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/slice_of_primitive/zz_generated.validations.go index 84c26a90c24..31cba4d93f1 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/slice_of_primitive/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/slice_of_primitive/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Max0Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj []int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -71,13 +71,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("max0Field"), obj.Max0Field, safe.Field(oldObj, func(oldObj *Struct) []int { return oldObj.Max0Field }))...) + }(fldPath.Child("max0Field"), obj.Max0Field, safe.Field(oldObj, func(oldObj *Struct) []int { return oldObj.Max0Field }), oldObj != nil)...) // field Struct.Max10Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj []int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -90,13 +90,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("max10Field"), obj.Max10Field, safe.Field(oldObj, func(oldObj *Struct) []int { return oldObj.Max10Field }))...) + }(fldPath.Child("max10Field"), obj.Max10Field, safe.Field(oldObj, func(oldObj *Struct) []int { return oldObj.Max10Field }), oldObj != nil)...) // field Struct.Max0TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -109,13 +109,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("max0TypedefField"), obj.Max0TypedefField, safe.Field(oldObj, func(oldObj *Struct) []IntType { return oldObj.Max0TypedefField }))...) + }(fldPath.Child("max0TypedefField"), obj.Max0TypedefField, safe.Field(oldObj, func(oldObj *Struct) []IntType { return oldObj.Max0TypedefField }), oldObj != nil)...) // field Struct.Max10TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -128,7 +128,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("max10TypedefField"), obj.Max10TypedefField, safe.Field(oldObj, func(oldObj *Struct) []IntType { return oldObj.Max10TypedefField }))...) + }(fldPath.Child("max10TypedefField"), obj.Max10TypedefField, safe.Field(oldObj, func(oldObj *Struct) []IntType { return oldObj.Max10TypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/slice_of_struct/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/slice_of_struct/zz_generated.validations.go index 8e4fe3160a9..aeed32b4ac1 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/slice_of_struct/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/slice_of_struct/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Max0Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -71,13 +71,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("max0Field"), obj.Max0Field, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.Max0Field }))...) + }(fldPath.Child("max0Field"), obj.Max0Field, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.Max0Field }), oldObj != nil)...) // field Struct.Max10Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -90,13 +90,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("max10Field"), obj.Max10Field, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.Max10Field }))...) + }(fldPath.Child("max10Field"), obj.Max10Field, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.Max10Field }), oldObj != nil)...) // field Struct.Max0TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -109,13 +109,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("max0TypedefField"), obj.Max0TypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.Max0TypedefField }))...) + }(fldPath.Child("max0TypedefField"), obj.Max0TypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.Max0TypedefField }), oldObj != nil)...) // field Struct.Max10TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherTypedefStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -128,7 +128,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("max10TypedefField"), obj.Max10TypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.Max10TypedefField }))...) + }(fldPath.Child("max10TypedefField"), obj.Max10TypedefField, safe.Field(oldObj, func(oldObj *Struct) []OtherTypedefStruct { return oldObj.Max10TypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/typedef_to_slice/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/typedef_to_slice/zz_generated.validations.go index 3627bfccfca..f4d9e47ea71 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/typedef_to_slice/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxitems/typedef_to_slice/zz_generated.validations.go @@ -117,51 +117,51 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Max0Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj Max0Type) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj Max0Type, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_Max0Type(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("max0Field"), obj.Max0Field, safe.Field(oldObj, func(oldObj *Struct) Max0Type { return oldObj.Max0Field }))...) + }(fldPath.Child("max0Field"), obj.Max0Field, safe.Field(oldObj, func(oldObj *Struct) Max0Type { return oldObj.Max0Field }), oldObj != nil)...) // field Struct.Max10Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj Max10Type) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj Max10Type, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_Max10Type(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("max10Field"), obj.Max10Field, safe.Field(oldObj, func(oldObj *Struct) Max10Type { return oldObj.Max10Field }))...) + }(fldPath.Child("max10Field"), obj.Max10Field, safe.Field(oldObj, func(oldObj *Struct) Max10Type { return oldObj.Max10Field }), oldObj != nil)...) // field Struct.Max0TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj Max0TypedefType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj Max0TypedefType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_Max0TypedefType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("max0TypedefField"), obj.Max0TypedefField, safe.Field(oldObj, func(oldObj *Struct) Max0TypedefType { return oldObj.Max0TypedefField }))...) + }(fldPath.Child("max0TypedefField"), obj.Max0TypedefField, safe.Field(oldObj, func(oldObj *Struct) Max0TypedefType { return oldObj.Max0TypedefField }), oldObj != nil)...) // field Struct.Max10TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj Max10TypedefType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj Max10TypedefType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_Max10TypedefType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("max10TypedefField"), obj.Max10TypedefField, safe.Field(oldObj, func(oldObj *Struct) Max10TypedefType { return oldObj.Max10TypedefField }))...) + }(fldPath.Child("max10TypedefField"), obj.Max10TypedefField, safe.Field(oldObj, func(oldObj *Struct) Max10TypedefType { return oldObj.Max10TypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxlength/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxlength/zz_generated.validations.go index 8f791b9dd04..3ae14972d82 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxlength/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/maxlength/zz_generated.validations.go @@ -71,147 +71,147 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.Max0Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("max0Field"), &obj.Max0Field, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.Max0Field }))...) + }(fldPath.Child("max0Field"), &obj.Max0Field, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.Max0Field }), oldObj != nil)...) // field Struct.Max0PtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("max0PtrField"), obj.Max0PtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.Max0PtrField }))...) + }(fldPath.Child("max0PtrField"), obj.Max0PtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.Max0PtrField }), oldObj != nil)...) // field Struct.Max10Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 10)...) return - }(fldPath.Child("max10Field"), &obj.Max10Field, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.Max10Field }))...) + }(fldPath.Child("max10Field"), &obj.Max10Field, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.Max10Field }), oldObj != nil)...) // field Struct.Max10PtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 10)...) return - }(fldPath.Child("max10PtrField"), obj.Max10PtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.Max10PtrField }))...) + }(fldPath.Child("max10PtrField"), obj.Max10PtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.Max10PtrField }), oldObj != nil)...) // field Struct.Max0UnvalidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *UnvalidatedStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *UnvalidatedStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("max0UnvalidatedTypedefField"), &obj.Max0UnvalidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *UnvalidatedStringType { return &oldObj.Max0UnvalidatedTypedefField }))...) + }(fldPath.Child("max0UnvalidatedTypedefField"), &obj.Max0UnvalidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *UnvalidatedStringType { return &oldObj.Max0UnvalidatedTypedefField }), oldObj != nil)...) // field Struct.Max0UnvalidatedTypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *UnvalidatedStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *UnvalidatedStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("max0UnvalidatedTypedefPtrField"), obj.Max0UnvalidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *UnvalidatedStringType { return oldObj.Max0UnvalidatedTypedefPtrField }))...) + }(fldPath.Child("max0UnvalidatedTypedefPtrField"), obj.Max0UnvalidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *UnvalidatedStringType { return oldObj.Max0UnvalidatedTypedefPtrField }), oldObj != nil)...) // field Struct.Max10UnvalidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *UnvalidatedStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *UnvalidatedStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 10)...) return - }(fldPath.Child("max10UnvalidatedTypedefField"), &obj.Max10UnvalidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *UnvalidatedStringType { return &oldObj.Max10UnvalidatedTypedefField }))...) + }(fldPath.Child("max10UnvalidatedTypedefField"), &obj.Max10UnvalidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *UnvalidatedStringType { return &oldObj.Max10UnvalidatedTypedefField }), oldObj != nil)...) // field Struct.Max10UnvalidatedTypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *UnvalidatedStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *UnvalidatedStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.MaxLength(ctx, op, fldPath, obj, oldObj, 10)...) return - }(fldPath.Child("max10UnvalidatedTypedefPtrField"), obj.Max10UnvalidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *UnvalidatedStringType { return oldObj.Max10UnvalidatedTypedefPtrField }))...) + }(fldPath.Child("max10UnvalidatedTypedefPtrField"), obj.Max10UnvalidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *UnvalidatedStringType { return oldObj.Max10UnvalidatedTypedefPtrField }), oldObj != nil)...) // field Struct.Max0ValidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Max0Type) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Max0Type, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Max0Type(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("max0ValidatedTypedefField"), &obj.Max0ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *Max0Type { return &oldObj.Max0ValidatedTypedefField }))...) + }(fldPath.Child("max0ValidatedTypedefField"), &obj.Max0ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *Max0Type { return &oldObj.Max0ValidatedTypedefField }), oldObj != nil)...) // field Struct.Max0ValidatedTypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Max0Type) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Max0Type, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Max0Type(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("max0ValidatedTypedefPtrField"), obj.Max0ValidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *Max0Type { return oldObj.Max0ValidatedTypedefPtrField }))...) + }(fldPath.Child("max0ValidatedTypedefPtrField"), obj.Max0ValidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *Max0Type { return oldObj.Max0ValidatedTypedefPtrField }), oldObj != nil)...) // field Struct.Max10ValidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Max10Type) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Max10Type, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Max10Type(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("max10ValidatedTypedefField"), &obj.Max10ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *Max10Type { return &oldObj.Max10ValidatedTypedefField }))...) + }(fldPath.Child("max10ValidatedTypedefField"), &obj.Max10ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *Max10Type { return &oldObj.Max10ValidatedTypedefField }), oldObj != nil)...) // field Struct.Max10ValidatedTypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *Max10Type) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *Max10Type, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_Max10Type(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("max10ValidatedTypedefPtrField"), obj.Max10ValidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *Max10Type { return oldObj.Max10ValidatedTypedefPtrField }))...) + }(fldPath.Child("max10ValidatedTypedefPtrField"), obj.Max10ValidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *Max10Type { return oldObj.Max10ValidatedTypedefPtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/minimum/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/minimum/zz_generated.validations.go index a8fc2df748a..30f89bbe4a6 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/minimum/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/minimum/zz_generated.validations.go @@ -63,147 +63,147 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.IntField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }))...) + }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }), oldObj != nil)...) // field Struct.IntPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }))...) + }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }), oldObj != nil)...) // field Struct.Int16Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int16) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int16, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("int16Field"), &obj.Int16Field, safe.Field(oldObj, func(oldObj *Struct) *int16 { return &oldObj.Int16Field }))...) + }(fldPath.Child("int16Field"), &obj.Int16Field, safe.Field(oldObj, func(oldObj *Struct) *int16 { return &oldObj.Int16Field }), oldObj != nil)...) // field Struct.Int32Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int32, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("int32Field"), &obj.Int32Field, safe.Field(oldObj, func(oldObj *Struct) *int32 { return &oldObj.Int32Field }))...) + }(fldPath.Child("int32Field"), &obj.Int32Field, safe.Field(oldObj, func(oldObj *Struct) *int32 { return &oldObj.Int32Field }), oldObj != nil)...) // field Struct.Int64Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("int64Field"), &obj.Int64Field, safe.Field(oldObj, func(oldObj *Struct) *int64 { return &oldObj.Int64Field }))...) + }(fldPath.Child("int64Field"), &obj.Int64Field, safe.Field(oldObj, func(oldObj *Struct) *int64 { return &oldObj.Int64Field }), oldObj != nil)...) // field Struct.UintField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *uint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *uint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("uintField"), &obj.UintField, safe.Field(oldObj, func(oldObj *Struct) *uint { return &oldObj.UintField }))...) + }(fldPath.Child("uintField"), &obj.UintField, safe.Field(oldObj, func(oldObj *Struct) *uint { return &oldObj.UintField }), oldObj != nil)...) // field Struct.UintPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *uint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *uint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("uintPtrField"), obj.UintPtrField, safe.Field(oldObj, func(oldObj *Struct) *uint { return oldObj.UintPtrField }))...) + }(fldPath.Child("uintPtrField"), obj.UintPtrField, safe.Field(oldObj, func(oldObj *Struct) *uint { return oldObj.UintPtrField }), oldObj != nil)...) // field Struct.Uint16Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *uint16) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *uint16, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("uint16Field"), &obj.Uint16Field, safe.Field(oldObj, func(oldObj *Struct) *uint16 { return &oldObj.Uint16Field }))...) + }(fldPath.Child("uint16Field"), &obj.Uint16Field, safe.Field(oldObj, func(oldObj *Struct) *uint16 { return &oldObj.Uint16Field }), oldObj != nil)...) // field Struct.Uint32Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *uint32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *uint32, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("uint32Field"), &obj.Uint32Field, safe.Field(oldObj, func(oldObj *Struct) *uint32 { return &oldObj.Uint32Field }))...) + }(fldPath.Child("uint32Field"), &obj.Uint32Field, safe.Field(oldObj, func(oldObj *Struct) *uint32 { return &oldObj.Uint32Field }), oldObj != nil)...) // field Struct.Uint64Field errs = append(errs, - func(fldPath *field.Path, obj, oldObj *uint64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *uint64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 1)...) return - }(fldPath.Child("uint64Field"), &obj.Uint64Field, safe.Field(oldObj, func(oldObj *Struct) *uint64 { return &oldObj.Uint64Field }))...) + }(fldPath.Child("uint64Field"), &obj.Uint64Field, safe.Field(oldObj, func(oldObj *Struct) *uint64 { return &oldObj.Uint64Field }), oldObj != nil)...) // field Struct.TypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_IntType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefField"), &obj.TypedefField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return &oldObj.TypedefField }))...) + }(fldPath.Child("typedefField"), &obj.TypedefField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return &oldObj.TypedefField }), oldObj != nil)...) // field Struct.TypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_IntType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("typedefPtrField"), obj.TypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return oldObj.TypedefPtrField }))...) + }(fldPath.Child("typedefPtrField"), obj.TypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return oldObj.TypedefPtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neq/neqchained/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neq/neqchained/zz_generated.validations.go index 00233c54749..c220d01acbd 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neq/neqchained/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neq/neqchained/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *InnerStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *InnerStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -68,13 +68,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *InnerStruct { return &oldObj.StructField }))...) + }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *InnerStruct { return &oldObj.StructField }), oldObj != nil)...) // field Struct.StructPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *InnerStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *InnerStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -91,13 +91,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *InnerStruct { return oldObj.StructPtrField }))...) + }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *InnerStruct { return oldObj.StructPtrField }), oldObj != nil)...) // field Struct.StringSliceField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -105,13 +105,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.NEQ(ctx, op, fldPath, obj, oldObj, "disallowed-slice") })...) return - }(fldPath.Child("stringSliceField"), obj.StringSliceField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.StringSliceField }))...) + }(fldPath.Child("stringSliceField"), obj.StringSliceField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.StringSliceField }), oldObj != nil)...) // field Struct.StringMapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -119,13 +119,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.NEQ(ctx, op, fldPath, obj, oldObj, "disallowed-map-val") })...) return - }(fldPath.Child("stringMapField"), obj.StringMapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.StringMapField }))...) + }(fldPath.Child("stringMapField"), obj.StringMapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.StringMapField }), oldObj != nil)...) // field Struct.StringMapKeyField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -133,31 +133,31 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.NEQ(ctx, op, fldPath, obj, oldObj, "disallowed-key") })...) return - }(fldPath.Child("stringMapKeyField"), obj.StringMapKeyField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.StringMapKeyField }))...) + }(fldPath.Child("stringMapKeyField"), obj.StringMapKeyField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.StringMapKeyField }), oldObj != nil)...) // field Struct.ValidatedSliceField errs = append(errs, - func(fldPath *field.Path, obj, oldObj ValidatedStringSlice) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj ValidatedStringSlice, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call the type's validation function errs = append(errs, Validate_ValidatedStringSlice(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedSliceField"), obj.ValidatedSliceField, safe.Field(oldObj, func(oldObj *Struct) ValidatedStringSlice { return oldObj.ValidatedSliceField }))...) + }(fldPath.Child("validatedSliceField"), obj.ValidatedSliceField, safe.Field(oldObj, func(oldObj *Struct) ValidatedStringSlice { return oldObj.ValidatedSliceField }), oldObj != nil)...) // field Struct.ValidatedStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ValidatedInnerStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ValidatedInnerStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ValidatedInnerStruct(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedStructField"), &obj.ValidatedStructField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedInnerStruct { return &oldObj.ValidatedStructField }))...) + }(fldPath.Child("validatedStructField"), &obj.ValidatedStructField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedInnerStruct { return &oldObj.ValidatedStructField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqbool/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqbool/zz_generated.validations.go index f46208c637c..3eb857925bf 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqbool/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqbool/zz_generated.validations.go @@ -55,39 +55,39 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.NeqTrueField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, true)...) return - }(fldPath.Child("neqTrueField"), &obj.NeqTrueField, safe.Field(oldObj, func(oldObj *Struct) *bool { return &oldObj.NeqTrueField }))...) + }(fldPath.Child("neqTrueField"), &obj.NeqTrueField, safe.Field(oldObj, func(oldObj *Struct) *bool { return &oldObj.NeqTrueField }), oldObj != nil)...) // field Struct.NeqFalsePtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, false)...) return - }(fldPath.Child("neqFalsePtrField"), obj.NeqFalsePtrField, safe.Field(oldObj, func(oldObj *Struct) *bool { return oldObj.NeqFalsePtrField }))...) + }(fldPath.Child("neqFalsePtrField"), obj.NeqFalsePtrField, safe.Field(oldObj, func(oldObj *Struct) *bool { return oldObj.NeqFalsePtrField }), oldObj != nil)...) // field Struct.ValidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ValidatedBoolType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ValidatedBoolType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ValidatedBoolType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedTypedefField"), &obj.ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedBoolType { return &oldObj.ValidatedTypedefField }))...) + }(fldPath.Child("validatedTypedefField"), &obj.ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedBoolType { return &oldObj.ValidatedTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqint/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqint/zz_generated.validations.go index 584bc6b7471..6bbd8079a54 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqint/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqint/zz_generated.validations.go @@ -55,51 +55,51 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.IntField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, 0)...) return - }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }))...) + }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }), oldObj != nil)...) // field Struct.IntPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, -1)...) return - }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }))...) + }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }), oldObj != nil)...) // field Struct.IntTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, 42)...) return - }(fldPath.Child("intTypedefField"), &obj.IntTypedefField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return &oldObj.IntTypedefField }))...) + }(fldPath.Child("intTypedefField"), &obj.IntTypedefField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return &oldObj.IntTypedefField }), oldObj != nil)...) // field Struct.ValidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ValidatedIntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ValidatedIntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ValidatedIntType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedTypedefField"), &obj.ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedIntType { return &oldObj.ValidatedTypedefField }))...) + }(fldPath.Child("validatedTypedefField"), &obj.ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedIntType { return &oldObj.ValidatedTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqstring/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqstring/zz_generated.validations.go index 6b25dc0f004..1f6f9c40990 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqstring/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/neq/neqstring/zz_generated.validations.go @@ -55,75 +55,75 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, "disallowed-string")...) return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }), oldObj != nil)...) // field Struct.StringPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, "disallowed-pointer")...) return - }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }))...) + }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }), oldObj != nil)...) // field Struct.StringTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, "disallowed-typedef")...) return - }(fldPath.Child("stringTypedefField"), &obj.StringTypedefField, safe.Field(oldObj, func(oldObj *Struct) *StringType { return &oldObj.StringTypedefField }))...) + }(fldPath.Child("stringTypedefField"), &obj.StringTypedefField, safe.Field(oldObj, func(oldObj *Struct) *StringType { return &oldObj.StringTypedefField }), oldObj != nil)...) // field Struct.StringTypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.NEQ(ctx, op, fldPath, obj, oldObj, "disallowed-typedef-pointer")...) return - }(fldPath.Child("stringTypedefPtrField"), obj.StringTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *StringType { return oldObj.StringTypedefPtrField }))...) + }(fldPath.Child("stringTypedefPtrField"), obj.StringTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *StringType { return oldObj.StringTypedefPtrField }), oldObj != nil)...) // field Struct.ValidatedTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ValidatedStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ValidatedStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ValidatedStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedTypedefField"), &obj.ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedStringType { return &oldObj.ValidatedTypedefField }))...) + }(fldPath.Child("validatedTypedefField"), &obj.ValidatedTypedefField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedStringType { return &oldObj.ValidatedTypedefField }), oldObj != nil)...) // field Struct.ValidatedTypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ValidatedStringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ValidatedStringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call the type's validation function errs = append(errs, Validate_ValidatedStringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("validatedTypedefPtrField"), obj.ValidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedStringType { return oldObj.ValidatedTypedefPtrField }))...) + }(fldPath.Child("validatedTypedefPtrField"), obj.ValidatedTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *ValidatedStringType { return oldObj.ValidatedTypedefPtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/opaque/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/opaque/zz_generated.validations.go index 61cb27de7a4..932b5fc900a 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/opaque/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/opaque/zz_generated.validations.go @@ -96,15 +96,15 @@ func Validate_OtherStruct(ctx context.Context, op operation.Operation, fldPath * // field OtherStruct.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field OtherStruct.StringField")...) return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *OtherStruct) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *OtherStruct) *string { return &oldObj.StringField }), oldObj != nil)...) return errs } @@ -116,9 +116,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -126,13 +126,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_OtherStruct(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return &oldObj.StructField }))...) + }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return &oldObj.StructField }), oldObj != nil)...) // field Struct.StructPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -148,25 +148,25 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_OtherStruct(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.StructPtrField }))...) + }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.StructPtrField }), oldObj != nil)...) // field Struct.OpaqueStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.OpaqueStructField")...) return - }(fldPath.Child("opaqueStructField"), &obj.OpaqueStructField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return &oldObj.OpaqueStructField }))...) + }(fldPath.Child("opaqueStructField"), &obj.OpaqueStructField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return &oldObj.OpaqueStructField }), oldObj != nil)...) // field Struct.OpaqueStructPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -180,13 +180,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.OpaqueStructPtrField")...) return - }(fldPath.Child("opaqueStructPtrField"), obj.OpaqueStructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.OpaqueStructPtrField }))...) + }(fldPath.Child("opaqueStructPtrField"), obj.OpaqueStructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.OpaqueStructPtrField }), oldObj != nil)...) // field Struct.SliceOfStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -197,13 +197,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_OtherStruct)...) return - }(fldPath.Child("sliceOfStructField"), obj.SliceOfStructField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.SliceOfStructField }))...) + }(fldPath.Child("sliceOfStructField"), obj.SliceOfStructField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.SliceOfStructField }), oldObj != nil)...) // field Struct.SliceOfOpaqueStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -212,13 +212,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.SliceOfOpaqueStructField vals") })...) return - }(fldPath.Child("sliceOfOpaqueStructField"), obj.SliceOfOpaqueStructField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.SliceOfOpaqueStructField }))...) + }(fldPath.Child("sliceOfOpaqueStructField"), obj.SliceOfOpaqueStructField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.SliceOfOpaqueStructField }), oldObj != nil)...) // field Struct.ListMapOfStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -231,13 +231,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, func(a OtherStruct, b OtherStruct) bool { return a.StringField == b.StringField }, validate.DirectEqual, Validate_OtherStruct)...) return - }(fldPath.Child("listMapOfStructField"), obj.ListMapOfStructField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListMapOfStructField }))...) + }(fldPath.Child("listMapOfStructField"), obj.ListMapOfStructField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListMapOfStructField }), oldObj != nil)...) // field Struct.ListMapOfOpaqueStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -248,13 +248,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // lists with map semantics require unique keys errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, func(a OtherStruct, b OtherStruct) bool { return a.StringField == b.StringField })...) return - }(fldPath.Child("listMapOfOpaqueStructField"), obj.ListMapOfOpaqueStructField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListMapOfOpaqueStructField }))...) + }(fldPath.Child("listMapOfOpaqueStructField"), obj.ListMapOfOpaqueStructField, safe.Field(oldObj, func(oldObj *Struct) []OtherStruct { return oldObj.ListMapOfOpaqueStructField }), oldObj != nil)...) // field Struct.MapOfStringToStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[OtherString]OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[OtherString]OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -270,13 +270,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // iterate the map and call the value type's validation function errs = append(errs, validate.EachMapVal(ctx, op, fldPath, obj, oldObj, validate.DirectEqual, Validate_OtherStruct)...) return - }(fldPath.Child("mapOfStringToStructField"), obj.MapOfStringToStructField, safe.Field(oldObj, func(oldObj *Struct) map[OtherString]OtherStruct { return oldObj.MapOfStringToStructField }))...) + }(fldPath.Child("mapOfStringToStructField"), obj.MapOfStringToStructField, safe.Field(oldObj, func(oldObj *Struct) map[OtherString]OtherStruct { return oldObj.MapOfStringToStructField }), oldObj != nil)...) // field Struct.MapOfStringToOpaqueStructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[OtherString]OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[OtherString]OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -288,7 +288,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapOfStringToOpaqueStructField vals") })...) return - }(fldPath.Child("mapOfStringToOpaqueStructField"), obj.MapOfStringToOpaqueStructField, safe.Field(oldObj, func(oldObj *Struct) map[OtherString]OtherStruct { return oldObj.MapOfStringToOpaqueStructField }))...) + }(fldPath.Child("mapOfStringToOpaqueStructField"), obj.MapOfStringToOpaqueStructField, safe.Field(oldObj, func(oldObj *Struct) map[OtherString]OtherStruct { return oldObj.MapOfStringToOpaqueStructField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/nonzero_defaults/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/nonzero_defaults/zz_generated.validations.go index 2c4d96163e0..992a631b885 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/nonzero_defaults/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/nonzero_defaults/zz_generated.validations.go @@ -55,9 +55,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -71,13 +71,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }), oldObj != nil)...) // field Struct.StringPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -91,13 +91,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }))...) + }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }), oldObj != nil)...) // field Struct.IntField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -111,13 +111,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }))...) + }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }), oldObj != nil)...) // field Struct.IntPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -131,13 +131,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }))...) + }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }), oldObj != nil)...) // field Struct.BoolField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -151,13 +151,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("boolField"), &obj.BoolField, safe.Field(oldObj, func(oldObj *Struct) *bool { return &oldObj.BoolField }))...) + }(fldPath.Child("boolField"), &obj.BoolField, safe.Field(oldObj, func(oldObj *Struct) *bool { return &oldObj.BoolField }), oldObj != nil)...) // field Struct.BoolPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -171,7 +171,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("boolPtrField"), obj.BoolPtrField, safe.Field(oldObj, func(oldObj *Struct) *bool { return oldObj.BoolPtrField }))...) + }(fldPath.Child("boolPtrField"), obj.BoolPtrField, safe.Field(oldObj, func(oldObj *Struct) *bool { return oldObj.BoolPtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/zero_defaults/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/zero_defaults/zz_generated.validations.go index a00efc2f28a..dbf159a1eb8 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/zero_defaults/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/zero_defaults/zz_generated.validations.go @@ -55,16 +55,16 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // optional value-type fields with zero-value defaults are purely documentation return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }), oldObj != nil)...) // field Struct.StringPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -78,20 +78,20 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }))...) + }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }), oldObj != nil)...) // field Struct.IntField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // optional value-type fields with zero-value defaults are purely documentation return - }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }))...) + }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }), oldObj != nil)...) // field Struct.IntPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -105,20 +105,20 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }))...) + }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }), oldObj != nil)...) // field Struct.BoolField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // optional value-type fields with zero-value defaults are purely documentation return - }(fldPath.Child("boolField"), &obj.BoolField, safe.Field(oldObj, func(oldObj *Struct) *bool { return &oldObj.BoolField }))...) + }(fldPath.Child("boolField"), &obj.BoolField, safe.Field(oldObj, func(oldObj *Struct) *bool { return &oldObj.BoolField }), oldObj != nil)...) // field Struct.BoolPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -132,7 +132,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("boolPtrField"), obj.BoolPtrField, safe.Field(oldObj, func(oldObj *Struct) *bool { return oldObj.BoolPtrField }))...) + }(fldPath.Child("boolPtrField"), obj.BoolPtrField, safe.Field(oldObj, func(oldObj *Struct) *bool { return oldObj.BoolPtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/zz_generated.validations.go index 07d63e0be5e..71a430d50c6 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/optional/zz_generated.validations.go @@ -96,9 +96,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -111,13 +111,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.StringField")...) return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }), oldObj != nil)...) // field Struct.StringPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -130,13 +130,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.StringPtrField")...) return - }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }))...) + }(fldPath.Child("stringPtrField"), obj.StringPtrField, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.StringPtrField }), oldObj != nil)...) // field Struct.StringTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -151,13 +151,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_StringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("stringTypedefField"), &obj.StringTypedefField, safe.Field(oldObj, func(oldObj *Struct) *StringType { return &oldObj.StringTypedefField }))...) + }(fldPath.Child("stringTypedefField"), &obj.StringTypedefField, safe.Field(oldObj, func(oldObj *Struct) *StringType { return &oldObj.StringTypedefField }), oldObj != nil)...) // field Struct.StringTypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *StringType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *StringType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -172,13 +172,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_StringType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("stringTypedefPtrField"), obj.StringTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *StringType { return oldObj.StringTypedefPtrField }))...) + }(fldPath.Child("stringTypedefPtrField"), obj.StringTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *StringType { return oldObj.StringTypedefPtrField }), oldObj != nil)...) // field Struct.IntField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -191,13 +191,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.IntField")...) return - }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }))...) + }(fldPath.Child("intField"), &obj.IntField, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.IntField }), oldObj != nil)...) // field Struct.IntPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -210,13 +210,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.IntPtrField")...) return - }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }))...) + }(fldPath.Child("intPtrField"), obj.IntPtrField, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IntPtrField }), oldObj != nil)...) // field Struct.IntTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -231,13 +231,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_IntType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("intTypedefField"), &obj.IntTypedefField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return &oldObj.IntTypedefField }))...) + }(fldPath.Child("intTypedefField"), &obj.IntTypedefField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return &oldObj.IntTypedefField }), oldObj != nil)...) // field Struct.IntTypedefPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *IntType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *IntType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -252,13 +252,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_IntType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("intTypedefPtrField"), obj.IntTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return oldObj.IntTypedefPtrField }))...) + }(fldPath.Child("intTypedefPtrField"), obj.IntTypedefPtrField, safe.Field(oldObj, func(oldObj *Struct) *IntType { return oldObj.IntTypedefPtrField }), oldObj != nil)...) // field Struct.OtherStructPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -273,13 +273,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_OtherStruct(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("otherStructPtrField"), obj.OtherStructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.OtherStructPtrField }))...) + }(fldPath.Child("otherStructPtrField"), obj.OtherStructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.OtherStructPtrField }), oldObj != nil)...) // field Struct.SliceField errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -292,13 +292,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.SliceField")...) return - }(fldPath.Child("sliceField"), obj.SliceField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.SliceField }))...) + }(fldPath.Child("sliceField"), obj.SliceField, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.SliceField }), oldObj != nil)...) // field Struct.SliceTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj SliceType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj SliceType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -313,13 +313,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_SliceType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("sliceTypedefField"), obj.SliceTypedefField, safe.Field(oldObj, func(oldObj *Struct) SliceType { return oldObj.SliceTypedefField }))...) + }(fldPath.Child("sliceTypedefField"), obj.SliceTypedefField, safe.Field(oldObj, func(oldObj *Struct) SliceType { return oldObj.SliceTypedefField }), oldObj != nil)...) // field Struct.MapField errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -332,13 +332,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field } errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.MapField")...) return - }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }))...) + }(fldPath.Child("mapField"), obj.MapField, safe.Field(oldObj, func(oldObj *Struct) map[string]string { return oldObj.MapField }), oldObj != nil)...) // field Struct.MapTypedefField errs = append(errs, - func(fldPath *field.Path, obj, oldObj MapType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj MapType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -353,7 +353,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // call the type's validation function errs = append(errs, Validate_MapType(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) MapType { return oldObj.MapTypedefField }))...) + }(fldPath.Child("mapTypedefField"), obj.MapTypedefField, safe.Field(oldObj, func(oldObj *Struct) MapType { return oldObj.MapTypedefField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/options/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/options/zz_generated.validations.go index 1da94eda381..4270e882181 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/options/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/options/zz_generated.validations.go @@ -55,9 +55,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.ObjectMeta errs = append(errs, - func(fldPath *field.Path, obj, oldObj *ObjectMeta) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *ObjectMeta, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -67,13 +67,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field }) })...) return - }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *Struct) *ObjectMeta { return &oldObj.ObjectMeta }))...) + }(fldPath.Child("metadata"), &obj.ObjectMeta, safe.Field(oldObj, func(oldObj *Struct) *ObjectMeta { return &oldObj.ObjectMeta }), oldObj != nil)...) // field Struct.XEnabledField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -81,13 +81,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.XEnabledField") })...) return - }(fldPath.Child("xEnabledField"), &obj.XEnabledField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.XEnabledField }))...) + }(fldPath.Child("xEnabledField"), &obj.XEnabledField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.XEnabledField }), oldObj != nil)...) // field Struct.XDisabledField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -95,13 +95,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.XDisabledField") })...) return - }(fldPath.Child("xDisabledField"), &obj.XDisabledField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.XDisabledField }))...) + }(fldPath.Child("xDisabledField"), &obj.XDisabledField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.XDisabledField }), oldObj != nil)...) // field Struct.YEnabledField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -109,13 +109,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.YEnabledField") })...) return - }(fldPath.Child("yEnabledField"), &obj.YEnabledField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.YEnabledField }))...) + }(fldPath.Child("yEnabledField"), &obj.YEnabledField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.YEnabledField }), oldObj != nil)...) // field Struct.YDisabledField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -123,13 +123,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.YDisabledField") })...) return - }(fldPath.Child("yDisabledField"), &obj.YDisabledField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.YDisabledField }))...) + }(fldPath.Child("yDisabledField"), &obj.YDisabledField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.YDisabledField }), oldObj != nil)...) // field Struct.XYMixedField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -140,7 +140,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.XYMixedField/X") })...) return - }(fldPath.Child("xyMixedField"), &obj.XYMixedField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.XYMixedField }))...) + }(fldPath.Child("xyMixedField"), &obj.XYMixedField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.XYMixedField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/deep/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/deep/zz_generated.validations.go index 18666d6d668..dc4408587c9 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/deep/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/deep/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -93,13 +93,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return &oldObj.StructField }))...) + }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return &oldObj.StructField }), oldObj != nil)...) // field Struct.StructPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -134,7 +134,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.StructPtrField }))...) + }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.StructPtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/nonincluded/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/nonincluded/zz_generated.validations.go index d7e394f0d4c..07de680b9a8 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/nonincluded/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/nonincluded/zz_generated.validations.go @@ -54,9 +54,9 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *Struct) (errs field.ErrorList) { // field Struct.StructType errs = append(errs, - func(fldPath *field.Path, obj, oldObj *other.StructType) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *other.StructType, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -66,7 +66,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("other.StructType") }), &obj.StructType, safe.Field(oldObj, func(oldObj *Struct) *other.StructType { return &oldObj.StructType }))...) + }(safe.Value(fldPath, func() *field.Path { return fldPath.Child("other.StructType") }), &obj.StructType, safe.Field(oldObj, func(oldObj *Struct) *other.StructType { return &oldObj.StructType }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/shallow/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/shallow/zz_generated.validations.go index 4c0164a90a1..69256650d56 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/shallow/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/subfield/shallow/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StructField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -91,13 +91,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return &oldObj.StructField }))...) + }(fldPath.Child("structField"), &obj.StructField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return &oldObj.StructField }), oldObj != nil)...) // field Struct.StructPtrField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *OtherStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *OtherStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -130,7 +130,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field })...) }() return - }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.StructPtrField }))...) + }(fldPath.Child("structPtrField"), obj.StructPtrField, safe.Field(oldObj, func(oldObj *Struct) *OtherStruct { return oldObj.StructPtrField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/issubresource/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/issubresource/zz_generated.validations.go index dabab9691fc..dfe38b14d79 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/issubresource/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/issubresource/zz_generated.validations.go @@ -53,15 +53,15 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/root/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/root/zz_generated.validations.go index e54bf0310a9..d71be382579 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/root/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/root/zz_generated.validations.go @@ -53,15 +53,15 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/subresource/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/subresource/zz_generated.validations.go index eb082c765c4..ee6cba998ce 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/subresource/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/supported_resources/subresource/zz_generated.validations.go @@ -53,15 +53,15 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field T1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T1) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/custom_members/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/custom_members/zz_generated.validations.go index 80fcc259e7c..4b600682e9b 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/custom_members/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/custom_members/zz_generated.validations.go @@ -75,9 +75,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -89,13 +89,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }))...) + }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }), oldObj != nil)...) // field Struct.M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -107,7 +107,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }))...) + }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/multiple/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/multiple/zz_generated.validations.go index d0f97c87e14..02a8f459dbb 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/multiple/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/multiple/zz_generated.validations.go @@ -92,9 +92,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.U1M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -106,13 +106,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u1m1"), obj.U1M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U1M1 }))...) + }(fldPath.Child("u1m1"), obj.U1M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U1M1 }), oldObj != nil)...) // field Struct.U1M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -124,15 +124,15 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u1m2"), obj.U1M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U1M2 }))...) + }(fldPath.Child("u1m2"), obj.U1M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U1M2 }), oldObj != nil)...) // field Struct.D2 has no validation // field Struct.U2M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -144,13 +144,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u2m1"), obj.U2M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U2M1 }))...) + }(fldPath.Child("u2m1"), obj.U2M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U2M1 }), oldObj != nil)...) // field Struct.U2M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -162,7 +162,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u2m2"), obj.U2M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U2M2 }))...) + }(fldPath.Child("u2m2"), obj.U2M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U2M2 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/simple/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/simple/zz_generated.validations.go index 0ac6d21c5be..f54d8805d4c 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/simple/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/simple/zz_generated.validations.go @@ -75,9 +75,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -89,13 +89,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }))...) + }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }), oldObj != nil)...) // field Struct.M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -107,7 +107,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }))...) + }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/sparse/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/sparse/zz_generated.validations.go index feba6af707f..d2afbed6e20 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/sparse/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/discriminated/sparse/zz_generated.validations.go @@ -70,9 +70,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -84,7 +84,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }))...) + }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/custom_members/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/custom_members/zz_generated.validations.go index 66fe6c162eb..f0076bf9ba3 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/custom_members/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/custom_members/zz_generated.validations.go @@ -70,9 +70,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -84,13 +84,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }))...) + }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }), oldObj != nil)...) // field Struct.M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -102,7 +102,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }))...) + }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/multiple/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/multiple/zz_generated.validations.go index 325d81374d1..029fa453494 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/multiple/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/multiple/zz_generated.validations.go @@ -82,9 +82,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.U1M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -96,13 +96,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u1m1"), obj.U1M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U1M1 }))...) + }(fldPath.Child("u1m1"), obj.U1M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U1M1 }), oldObj != nil)...) // field Struct.U1M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -114,13 +114,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u1m2"), obj.U1M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U1M2 }))...) + }(fldPath.Child("u1m2"), obj.U1M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U1M2 }), oldObj != nil)...) // field Struct.U2M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -132,13 +132,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u2m1"), obj.U2M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U2M1 }))...) + }(fldPath.Child("u2m1"), obj.U2M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U2M1 }), oldObj != nil)...) // field Struct.U2M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -150,7 +150,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u2m2"), obj.U2M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U2M2 }))...) + }(fldPath.Child("u2m2"), obj.U2M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U2M2 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/simple/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/simple/zz_generated.validations.go index 33e5604f893..80c81dc083d 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/simple/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/union/union/undiscriminated/simple/zz_generated.validations.go @@ -81,9 +81,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -95,13 +95,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }))...) + }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }), oldObj != nil)...) // field Struct.M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -113,13 +113,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }))...) + }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }), oldObj != nil)...) // field Struct.M3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -131,13 +131,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m3"), &obj.M3, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.M3 }))...) + }(fldPath.Child("m3"), &obj.M3, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.M3 }), oldObj != nil)...) // field Struct.M4 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -149,7 +149,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m4"), obj.M4, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.M4 }))...) + }(fldPath.Child("m4"), obj.M4, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.M4 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/zz_generated.validations.go index 689fd6bc78b..f7dd76b8d22 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/unique/zz_generated.validations.go @@ -56,75 +56,75 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.PrimitiveListUniqueSet errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("primitiveListUniqueSet"), obj.PrimitiveListUniqueSet, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.PrimitiveListUniqueSet }))...) + }(fldPath.Child("primitiveListUniqueSet"), obj.PrimitiveListUniqueSet, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.PrimitiveListUniqueSet }), oldObj != nil)...) // field Struct.SliceMapFieldWithMultipleKeys errs = append(errs, - func(fldPath *field.Path, obj, oldObj []ItemWithMultipleKeys) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []ItemWithMultipleKeys, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with map semantics require unique keys errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, func(a ItemWithMultipleKeys, b ItemWithMultipleKeys) bool { return a.Key1 == b.Key1 && a.Key2 == b.Key2 })...) return - }(fldPath.Child("sliceMapFieldWithMultipleKeys"), obj.SliceMapFieldWithMultipleKeys, safe.Field(oldObj, func(oldObj *Struct) []ItemWithMultipleKeys { return oldObj.SliceMapFieldWithMultipleKeys }))...) + }(fldPath.Child("sliceMapFieldWithMultipleKeys"), obj.SliceMapFieldWithMultipleKeys, safe.Field(oldObj, func(oldObj *Struct) []ItemWithMultipleKeys { return oldObj.SliceMapFieldWithMultipleKeys }), oldObj != nil)...) // field Struct.AtomicListUniqueSet errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with set semantics require unique values errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, validate.DirectEqual)...) return - }(fldPath.Child("atomicListUniqueSet"), obj.AtomicListUniqueSet, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.AtomicListUniqueSet }))...) + }(fldPath.Child("atomicListUniqueSet"), obj.AtomicListUniqueSet, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.AtomicListUniqueSet }), oldObj != nil)...) // field Struct.AtomicListUniqueMap errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations // lists with map semantics require unique keys errs = append(errs, validate.Unique(ctx, op, fldPath, obj, oldObj, func(a Item, b Item) bool { return a.Key == b.Key })...) return - }(fldPath.Child("atomicListUniqueMap"), obj.AtomicListUniqueMap, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.AtomicListUniqueMap }))...) + }(fldPath.Child("atomicListUniqueMap"), obj.AtomicListUniqueMap, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.AtomicListUniqueMap }), oldObj != nil)...) // field Struct.CustomUniqueListWithTypeSet errs = append(errs, - func(fldPath *field.Path, obj, oldObj []string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []string, oldValueCorrelated bool) (errs field.ErrorList) { // Uniqueness validation is implemented via custom, handwritten validation return - }(fldPath.Child("customUniqueListWithTypeSet"), obj.CustomUniqueListWithTypeSet, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.CustomUniqueListWithTypeSet }))...) + }(fldPath.Child("customUniqueListWithTypeSet"), obj.CustomUniqueListWithTypeSet, safe.Field(oldObj, func(oldObj *Struct) []string { return oldObj.CustomUniqueListWithTypeSet }), oldObj != nil)...) // field Struct.CustomUniqueListWithTypeMap errs = append(errs, - func(fldPath *field.Path, obj, oldObj []Item) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []Item, oldValueCorrelated bool) (errs field.ErrorList) { // Uniqueness validation is implemented via custom, handwritten validation return - }(fldPath.Child("customUniqueListWithTypeMap"), obj.CustomUniqueListWithTypeMap, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.CustomUniqueListWithTypeMap }))...) + }(fldPath.Child("customUniqueListWithTypeMap"), obj.CustomUniqueListWithTypeMap, safe.Field(oldObj, func(oldObj *Struct) []Item { return oldObj.CustomUniqueListWithTypeMap }), oldObj != nil)...) // field Struct.SliceMapFieldWithPtrKey errs = append(errs, - func(fldPath *field.Path, obj, oldObj []PtrKeyStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []PtrKeyStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -133,13 +133,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return ((a.Key == nil && b.Key == nil) || (a.Key != nil && b.Key != nil && *a.Key == *b.Key)) })...) return - }(fldPath.Child("sliceMapFieldWithPtrKey"), obj.SliceMapFieldWithPtrKey, safe.Field(oldObj, func(oldObj *Struct) []PtrKeyStruct { return oldObj.SliceMapFieldWithPtrKey }))...) + }(fldPath.Child("sliceMapFieldWithPtrKey"), obj.SliceMapFieldWithPtrKey, safe.Field(oldObj, func(oldObj *Struct) []PtrKeyStruct { return oldObj.SliceMapFieldWithPtrKey }), oldObj != nil)...) // field Struct.SliceMapFieldWithMixedKeys errs = append(errs, - func(fldPath *field.Path, obj, oldObj []ItemWithMixedKeys) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []ItemWithMixedKeys, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -148,13 +148,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return ((a.Key1 == nil && b.Key1 == nil) || (a.Key1 != nil && b.Key1 != nil && *a.Key1 == *b.Key1)) && a.Key2 == b.Key2 })...) return - }(fldPath.Child("sliceMapFieldWithMixedKeys"), obj.SliceMapFieldWithMixedKeys, safe.Field(oldObj, func(oldObj *Struct) []ItemWithMixedKeys { return oldObj.SliceMapFieldWithMixedKeys }))...) + }(fldPath.Child("sliceMapFieldWithMixedKeys"), obj.SliceMapFieldWithMixedKeys, safe.Field(oldObj, func(oldObj *Struct) []ItemWithMixedKeys { return oldObj.SliceMapFieldWithMixedKeys }), oldObj != nil)...) // field Struct.SliceMapFieldWithMultiplePtrKeys errs = append(errs, - func(fldPath *field.Path, obj, oldObj []ItemWithMultiplePtrKeys) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []ItemWithMultiplePtrKeys, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -163,7 +163,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return ((a.Key1 == nil && b.Key1 == nil) || (a.Key1 != nil && b.Key1 != nil && *a.Key1 == *b.Key1)) && ((a.Key2 == nil && b.Key2 == nil) || (a.Key2 != nil && b.Key2 != nil && *a.Key2 == *b.Key2)) })...) return - }(fldPath.Child("sliceMapFieldWithMultiplePtrKeys"), obj.SliceMapFieldWithMultiplePtrKeys, safe.Field(oldObj, func(oldObj *Struct) []ItemWithMultiplePtrKeys { return oldObj.SliceMapFieldWithMultiplePtrKeys }))...) + }(fldPath.Child("sliceMapFieldWithMultiplePtrKeys"), obj.SliceMapFieldWithMultiplePtrKeys, safe.Field(oldObj, func(oldObj *Struct) []ItemWithMultiplePtrKeys { return oldObj.SliceMapFieldWithMultiplePtrKeys }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/update/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/update/zz_generated.validations.go index 57bc85bae15..3fe9bad1959 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/update/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/update/zz_generated.validations.go @@ -56,9 +56,9 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP // field UpdateTestStruct.StringNoSet errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -71,13 +71,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("stringNoSet"), &obj.StringNoSet, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringNoSet }))...) + }(fldPath.Child("stringNoSet"), &obj.StringNoSet, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringNoSet }), oldObj != nil)...) // field UpdateTestStruct.StringNoUnset errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -90,13 +90,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("stringNoUnset"), &obj.StringNoUnset, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringNoUnset }))...) + }(fldPath.Child("stringNoUnset"), &obj.StringNoUnset, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringNoUnset }), oldObj != nil)...) // field UpdateTestStruct.StringNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -109,13 +109,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("stringNoModify"), &obj.StringNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringNoModify }))...) + }(fldPath.Child("stringNoModify"), &obj.StringNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringNoModify }), oldObj != nil)...) // field UpdateTestStruct.StringFullyRestricted errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -128,13 +128,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("stringFullyRestricted"), &obj.StringFullyRestricted, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringFullyRestricted }))...) + }(fldPath.Child("stringFullyRestricted"), &obj.StringFullyRestricted, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringFullyRestricted }), oldObj != nil)...) // field UpdateTestStruct.StringSetOnce errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -147,13 +147,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("stringSetOnce"), &obj.StringSetOnce, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringSetOnce }))...) + }(fldPath.Child("stringSetOnce"), &obj.StringSetOnce, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return &oldObj.StringSetOnce }), oldObj != nil)...) // field UpdateTestStruct.IntNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -166,13 +166,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("intNoModify"), &obj.IntNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *int { return &oldObj.IntNoModify }))...) + }(fldPath.Child("intNoModify"), &obj.IntNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *int { return &oldObj.IntNoModify }), oldObj != nil)...) // field UpdateTestStruct.Int32NoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int32, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -185,13 +185,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("int32NoModify"), &obj.Int32NoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *int32 { return &oldObj.Int32NoModify }))...) + }(fldPath.Child("int32NoModify"), &obj.Int32NoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *int32 { return &oldObj.Int32NoModify }), oldObj != nil)...) // field UpdateTestStruct.Int64NoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -204,13 +204,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("int64NoModify"), &obj.Int64NoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *int64 { return &oldObj.Int64NoModify }))...) + }(fldPath.Child("int64NoModify"), &obj.Int64NoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *int64 { return &oldObj.Int64NoModify }), oldObj != nil)...) // field UpdateTestStruct.UintNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *uint) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *uint, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -223,13 +223,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("uintNoModify"), &obj.UintNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *uint { return &oldObj.UintNoModify }))...) + }(fldPath.Child("uintNoModify"), &obj.UintNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *uint { return &oldObj.UintNoModify }), oldObj != nil)...) // field UpdateTestStruct.BoolNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -242,13 +242,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("boolNoModify"), &obj.BoolNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *bool { return &oldObj.BoolNoModify }))...) + }(fldPath.Child("boolNoModify"), &obj.BoolNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *bool { return &oldObj.BoolNoModify }), oldObj != nil)...) // field UpdateTestStruct.Float32NoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *float32) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *float32, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -261,13 +261,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("float32NoModify"), &obj.Float32NoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *float32 { return &oldObj.Float32NoModify }))...) + }(fldPath.Child("float32NoModify"), &obj.Float32NoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *float32 { return &oldObj.Float32NoModify }), oldObj != nil)...) // field UpdateTestStruct.Float64NoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *float64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *float64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -280,13 +280,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("float64NoModify"), &obj.Float64NoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *float64 { return &oldObj.Float64NoModify }))...) + }(fldPath.Child("float64NoModify"), &obj.Float64NoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *float64 { return &oldObj.Float64NoModify }), oldObj != nil)...) // field UpdateTestStruct.ByteNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *byte) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *byte, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -299,13 +299,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("byteNoModify"), &obj.ByteNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *byte { return &oldObj.ByteNoModify }))...) + }(fldPath.Child("byteNoModify"), &obj.ByteNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *byte { return &oldObj.ByteNoModify }), oldObj != nil)...) // field UpdateTestStruct.StructNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *TestStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *TestStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -318,13 +318,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("structNoModify"), &obj.StructNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *TestStruct { return &oldObj.StructNoModify }))...) + }(fldPath.Child("structNoModify"), &obj.StructNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *TestStruct { return &oldObj.StructNoModify }), oldObj != nil)...) // field UpdateTestStruct.NonComparableStructNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *NonComparableStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *NonComparableStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // call field-attached validations @@ -337,13 +337,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("nonComparableStructNoModify"), &obj.NonComparableStructNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *NonComparableStruct { return &oldObj.NonComparableStructNoModify }))...) + }(fldPath.Child("nonComparableStructNoModify"), &obj.NonComparableStructNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *NonComparableStruct { return &oldObj.NonComparableStructNoModify }), oldObj != nil)...) // field UpdateTestStruct.PointerNoSet errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -356,13 +356,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("pointerNoSet"), obj.PointerNoSet, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return oldObj.PointerNoSet }))...) + }(fldPath.Child("pointerNoSet"), obj.PointerNoSet, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return oldObj.PointerNoSet }), oldObj != nil)...) // field UpdateTestStruct.PointerNoUnset errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -375,13 +375,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("pointerNoUnset"), obj.PointerNoUnset, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return oldObj.PointerNoUnset }))...) + }(fldPath.Child("pointerNoUnset"), obj.PointerNoUnset, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return oldObj.PointerNoUnset }), oldObj != nil)...) // field UpdateTestStruct.PointerNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -394,13 +394,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("pointerNoModify"), obj.PointerNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return oldObj.PointerNoModify }))...) + }(fldPath.Child("pointerNoModify"), obj.PointerNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return oldObj.PointerNoModify }), oldObj != nil)...) // field UpdateTestStruct.PointerFullyRestricted errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -413,13 +413,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("pointerFullyRestricted"), obj.PointerFullyRestricted, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return oldObj.PointerFullyRestricted }))...) + }(fldPath.Child("pointerFullyRestricted"), obj.PointerFullyRestricted, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *string { return oldObj.PointerFullyRestricted }), oldObj != nil)...) // field UpdateTestStruct.IntPointerNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -432,13 +432,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("intPointerNoModify"), obj.IntPointerNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *int { return oldObj.IntPointerNoModify }))...) + }(fldPath.Child("intPointerNoModify"), obj.IntPointerNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *int { return oldObj.IntPointerNoModify }), oldObj != nil)...) // field UpdateTestStruct.BoolPointerNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -451,13 +451,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("boolPointerNoModify"), obj.BoolPointerNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *bool { return oldObj.BoolPointerNoModify }))...) + }(fldPath.Child("boolPointerNoModify"), obj.BoolPointerNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *bool { return oldObj.BoolPointerNoModify }), oldObj != nil)...) // field UpdateTestStruct.StructPointerNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *TestStruct) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *TestStruct, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -470,13 +470,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("structPointerNoModify"), obj.StructPointerNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *TestStruct { return oldObj.StructPointerNoModify }))...) + }(fldPath.Child("structPointerNoModify"), obj.StructPointerNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *TestStruct { return oldObj.StructPointerNoModify }), oldObj != nil)...) // field UpdateTestStruct.CustomTypeNoModify errs = append(errs, - func(fldPath *field.Path, obj, oldObj *CustomString) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *CustomString, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -489,13 +489,13 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("customTypeNoModify"), &obj.CustomTypeNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *CustomString { return &oldObj.CustomTypeNoModify }))...) + }(fldPath.Child("customTypeNoModify"), &obj.CustomTypeNoModify, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *CustomString { return &oldObj.CustomTypeNoModify }), oldObj != nil)...) // field UpdateTestStruct.CustomTypeNoSet errs = append(errs, - func(fldPath *field.Path, obj, oldObj *CustomInt) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *CustomInt, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -508,7 +508,7 @@ func Validate_UpdateTestStruct(ctx context.Context, op operation.Operation, fldP return // do not proceed } return - }(fldPath.Child("customTypeNoSet"), &obj.CustomTypeNoSet, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *CustomInt { return &oldObj.CustomTypeNoSet }))...) + }(fldPath.Child("customTypeNoSet"), &obj.CustomTypeNoSet, safe.Field(oldObj, func(oldObj *UpdateTestStruct) *CustomInt { return &oldObj.CustomTypeNoSet }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/validate_false/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/validate_false/zz_generated.validations.go index c22f7461787..f2f535af986 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/validate_false/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/validate_false/zz_generated.validations.go @@ -55,15 +55,15 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field Struct.StringField")...) return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/validate_true/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/validate_true/zz_generated.validations.go index 27e2d0ca014..64edd69dd3a 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/validate_true/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/validate_true/zz_generated.validations.go @@ -55,15 +55,15 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.StringField errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, true, "field Struct.StringField")...) return - }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }))...) + }(fldPath.Child("stringField"), &obj.StringField, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.StringField }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/custom_members/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/custom_members/zz_generated.validations.go index 3f54080a684..90cdf50da32 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/custom_members/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/custom_members/zz_generated.validations.go @@ -70,9 +70,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -84,13 +84,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }))...) + }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }), oldObj != nil)...) // field Struct.M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -102,7 +102,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }))...) + }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/multiple/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/multiple/zz_generated.validations.go index 02c4cfc4ed6..4e73c44d4fc 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/multiple/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/multiple/zz_generated.validations.go @@ -82,9 +82,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.U1M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -96,13 +96,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u1m1"), obj.U1M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U1M1 }))...) + }(fldPath.Child("u1m1"), obj.U1M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U1M1 }), oldObj != nil)...) // field Struct.U1M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -114,13 +114,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u1m2"), obj.U1M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U1M2 }))...) + }(fldPath.Child("u1m2"), obj.U1M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U1M2 }), oldObj != nil)...) // field Struct.U2M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -132,13 +132,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u2m1"), obj.U2M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U2M1 }))...) + }(fldPath.Child("u2m1"), obj.U2M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.U2M1 }), oldObj != nil)...) // field Struct.U2M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -150,7 +150,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("u2m2"), obj.U2M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U2M2 }))...) + }(fldPath.Child("u2m2"), obj.U2M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.U2M2 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/simple/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/simple/zz_generated.validations.go index cf12726d75b..3a2d4ee6d40 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/simple/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/tags/zerooroneof/zerooroneof/simple/zz_generated.validations.go @@ -81,9 +81,9 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field // field Struct.M1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -95,13 +95,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }))...) + }(fldPath.Child("m1"), obj.M1, safe.Field(oldObj, func(oldObj *Struct) *M1 { return oldObj.M1 }), oldObj != nil)...) // field Struct.M2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *M2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *M2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -113,13 +113,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }))...) + }(fldPath.Child("m2"), obj.M2, safe.Field(oldObj, func(oldObj *Struct) *M2 { return oldObj.M2 }), oldObj != nil)...) // field Struct.M3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -131,13 +131,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m3"), &obj.M3, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.M3 }))...) + }(fldPath.Child("m3"), &obj.M3, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.M3 }), oldObj != nil)...) // field Struct.M4 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -149,7 +149,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("m4"), obj.M4, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.M4 }))...) + }(fldPath.Child("m4"), obj.M4, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.M4 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/type_args/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/type_args/zz_generated.validations.go index e886e989386..afe42d55a1f 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/type_args/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/type_args/zz_generated.validations.go @@ -64,9 +64,9 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.S1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *primitives.T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *primitives.T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -74,13 +74,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, primitives.Validate_T1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("s1"), obj.S1, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.S1 }))...) + }(fldPath.Child("s1"), obj.S1, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.S1 }), oldObj != nil)...) // field T1.PS1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *primitives.T1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *primitives.T1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -88,13 +88,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, primitives.Validate_T1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("ps1"), obj.PS1, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.PS1 }))...) + }(fldPath.Child("ps1"), obj.PS1, safe.Field(oldObj, func(oldObj *T1) *primitives.T1 { return oldObj.PS1 }), oldObj != nil)...) // field T1.E1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -102,13 +102,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("e1"), &obj.E1, safe.Field(oldObj, func(oldObj *T1) *E1 { return &oldObj.E1 }))...) + }(fldPath.Child("e1"), &obj.E1, safe.Field(oldObj, func(oldObj *T1) *E1 { return &oldObj.E1 }), oldObj != nil)...) // field T1.PE1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -116,31 +116,31 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pe1"), obj.PE1, safe.Field(oldObj, func(oldObj *T1) *E1 { return oldObj.PE1 }))...) + }(fldPath.Child("pe1"), obj.PE1, safe.Field(oldObj, func(oldObj *T1) *E1 { return oldObj.PE1 }), oldObj != nil)...) // field T1.I1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult[*int](ctx, op, fldPath, obj, oldObj, false, "T1.I1")...) return - }(fldPath.Child("i1"), &obj.I1, safe.Field(oldObj, func(oldObj *T1) *int { return &oldObj.I1 }))...) + }(fldPath.Child("i1"), &obj.I1, safe.Field(oldObj, func(oldObj *T1) *int { return &oldObj.I1 }), oldObj != nil)...) // field T1.PI1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult[*int](ctx, op, fldPath, obj, oldObj, true, "T1.PI1")...) return - }(fldPath.Child("pi1"), obj.PI1, safe.Field(oldObj, func(oldObj *T1) *int { return oldObj.PI1 }))...) + }(fldPath.Child("pi1"), obj.PI1, safe.Field(oldObj, func(oldObj *T1) *int { return oldObj.PI1 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/typedefs/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/typedefs/zz_generated.validations.go index 5386a309ef4..d0dc30ea080 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/typedefs/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/typedefs/zz_generated.validations.go @@ -79,15 +79,15 @@ func Validate_E4(ctx context.Context, op operation.Operation, fldPath *field.Pat // field E4.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *E4) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *E4) *string { return &oldObj.S }), oldObj != nil)...) return errs } @@ -101,9 +101,9 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T1.E1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -111,13 +111,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("e1"), &obj.E1, safe.Field(oldObj, func(oldObj *T1) *E1 { return &oldObj.E1 }))...) + }(fldPath.Child("e1"), &obj.E1, safe.Field(oldObj, func(oldObj *T1) *E1 { return &oldObj.E1 }), oldObj != nil)...) // field T1.PE1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -125,13 +125,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E1(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pe1"), obj.PE1, safe.Field(oldObj, func(oldObj *T1) *E1 { return oldObj.PE1 }))...) + }(fldPath.Child("pe1"), obj.PE1, safe.Field(oldObj, func(oldObj *T1) *E1 { return oldObj.PE1 }), oldObj != nil)...) // field T1.E2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -139,13 +139,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("e2"), &obj.E2, safe.Field(oldObj, func(oldObj *T1) *E2 { return &oldObj.E2 }))...) + }(fldPath.Child("e2"), &obj.E2, safe.Field(oldObj, func(oldObj *T1) *E2 { return &oldObj.E2 }), oldObj != nil)...) // field T1.PE2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -153,13 +153,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pe2"), obj.PE2, safe.Field(oldObj, func(oldObj *T1) *E2 { return oldObj.PE2 }))...) + }(fldPath.Child("pe2"), obj.PE2, safe.Field(oldObj, func(oldObj *T1) *E2 { return oldObj.PE2 }), oldObj != nil)...) // field T1.E3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -167,13 +167,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E3(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("e3"), &obj.E3, safe.Field(oldObj, func(oldObj *T1) *E3 { return &oldObj.E3 }))...) + }(fldPath.Child("e3"), &obj.E3, safe.Field(oldObj, func(oldObj *T1) *E3 { return &oldObj.E3 }), oldObj != nil)...) // field T1.PE3 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E3) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E3, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -181,13 +181,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E3(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pe3"), obj.PE3, safe.Field(oldObj, func(oldObj *T1) *E3 { return oldObj.PE3 }))...) + }(fldPath.Child("pe3"), obj.PE3, safe.Field(oldObj, func(oldObj *T1) *E3 { return oldObj.PE3 }), oldObj != nil)...) // field T1.E4 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E4) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E4, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -195,13 +195,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E4(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("e4"), &obj.E4, safe.Field(oldObj, func(oldObj *T1) *E4 { return &oldObj.E4 }))...) + }(fldPath.Child("e4"), &obj.E4, safe.Field(oldObj, func(oldObj *T1) *E4 { return &oldObj.E4 }), oldObj != nil)...) // field T1.PE4 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *E4) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *E4, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -209,13 +209,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_E4(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pe4"), obj.PE4, safe.Field(oldObj, func(oldObj *T1) *E4 { return oldObj.PE4 }))...) + }(fldPath.Child("pe4"), obj.PE4, safe.Field(oldObj, func(oldObj *T1) *E4 { return oldObj.PE4 }), oldObj != nil)...) // field T1.T2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -223,13 +223,13 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }))...) + }(fldPath.Child("t2"), &obj.T2, safe.Field(oldObj, func(oldObj *T1) *T2 { return &oldObj.T2 }), oldObj != nil)...) // field T1.PT2 errs = append(errs, - func(fldPath *field.Path, obj, oldObj *T2) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *T2, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -237,7 +237,7 @@ func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Pat // call the type's validation function errs = append(errs, Validate_T2(ctx, op, fldPath, obj, oldObj)...) return - }(fldPath.Child("pt2"), obj.PT2, safe.Field(oldObj, func(oldObj *T1) *T2 { return oldObj.PT2 }))...) + }(fldPath.Child("pt2"), obj.PT2, safe.Field(oldObj, func(oldObj *T1) *T2 { return oldObj.PT2 }), oldObj != nil)...) return errs } @@ -249,15 +249,15 @@ func Validate_T2(ctx context.Context, op operation.Operation, fldPath *field.Pat // field T2.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "field T2.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *T2) *string { return &oldObj.S }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/lists/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/lists/zz_generated.validations.go index 8edecf3bf25..530fe6e7602 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/lists/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/lists/zz_generated.validations.go @@ -62,15 +62,15 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_M1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { // field M1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "M1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *M1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *M1) *string { return &oldObj.S }), oldObj != nil)...) return errs } @@ -80,15 +80,15 @@ func Validate_M1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.LM1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj []M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj []M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the list and call the type's validation function errs = append(errs, validate.EachSliceVal(ctx, op, fldPath, obj, oldObj, nil, nil, Validate_M1)...) return - }(fldPath.Child("lm1"), obj.LM1, safe.Field(oldObj, func(oldObj *T1) []M1 { return oldObj.LM1 }))...) + }(fldPath.Child("lm1"), obj.LM1, safe.Field(oldObj, func(oldObj *T1) []M1 { return oldObj.LM1 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/maps/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/maps/zz_generated.validations.go index b90fc570d6c..0540e426e3e 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/maps/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/maps/zz_generated.validations.go @@ -62,15 +62,15 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_M1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *M1) (errs field.ErrorList) { // field M1.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations errs = append(errs, validate.FixedResult(ctx, op, fldPath, obj, oldObj, false, "M1.S")...) return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *M1) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *M1) *string { return &oldObj.S }), oldObj != nil)...) return errs } @@ -80,15 +80,15 @@ func Validate_M1(ctx context.Context, op operation.Operation, fldPath *field.Pat func Validate_T1(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *T1) (errs field.ErrorList) { // field T1.MSM1 errs = append(errs, - func(fldPath *field.Path, obj, oldObj map[string]M1) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj map[string]M1, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { + if oldValueCorrelated && op.Type == operation.Update && equality.Semantic.DeepEqual(obj, oldObj) { return nil } // iterate the map and call the value type's validation function errs = append(errs, validate.EachMapVal(ctx, op, fldPath, obj, oldObj, validate.DirectEqual, Validate_M1)...) return - }(fldPath.Child("msm1"), obj.MSM1, safe.Field(oldObj, func(oldObj *T1) map[string]M1 { return oldObj.MSM1 }))...) + }(fldPath.Child("msm1"), obj.MSM1, safe.Field(oldObj, func(oldObj *T1) map[string]M1 { return oldObj.MSM1 }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/primitive_pointers/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/primitive_pointers/zz_generated.validations.go index 933387d6c36..d67280723b7 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/primitive_pointers/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/primitive_pointers/zz_generated.validations.go @@ -53,9 +53,9 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *Struct) (errs field.ErrorList) { // field Struct.SP errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -68,13 +68,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("sp"), obj.SP, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.SP }))...) + }(fldPath.Child("sp"), obj.SP, safe.Field(oldObj, func(oldObj *Struct) *string { return oldObj.SP }), oldObj != nil)...) // field Struct.IP errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -87,13 +87,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("ip"), obj.IP, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IP }))...) + }(fldPath.Child("ip"), obj.IP, safe.Field(oldObj, func(oldObj *Struct) *int { return oldObj.IP }), oldObj != nil)...) // field Struct.BP errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -106,13 +106,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("bp"), obj.BP, safe.Field(oldObj, func(oldObj *Struct) *bool { return oldObj.BP }))...) + }(fldPath.Child("bp"), obj.BP, safe.Field(oldObj, func(oldObj *Struct) *bool { return oldObj.BP }), oldObj != nil)...) // field Struct.FP errs = append(errs, - func(fldPath *field.Path, obj, oldObj *float64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *float64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -125,7 +125,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("fp"), obj.FP, safe.Field(oldObj, func(oldObj *Struct) *float64 { return oldObj.FP }))...) + }(fldPath.Child("fp"), obj.FP, safe.Field(oldObj, func(oldObj *Struct) *float64 { return oldObj.FP }), oldObj != nil)...) return errs } diff --git a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/primitives/zz_generated.validations.go b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/primitives/zz_generated.validations.go index 1e9623308eb..029e994e89b 100644 --- a/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/primitives/zz_generated.validations.go +++ b/staging/src/k8s.io/code-generator/cmd/validation-gen/output_tests/update_validations/primitives/zz_generated.validations.go @@ -53,9 +53,9 @@ func RegisterValidations(scheme *testscheme.Scheme) error { func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *Struct) (errs field.ErrorList) { // field Struct.S errs = append(errs, - func(fldPath *field.Path, obj, oldObj *string) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *string, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -68,13 +68,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.S }))...) + }(fldPath.Child("s"), &obj.S, safe.Field(oldObj, func(oldObj *Struct) *string { return &oldObj.S }), oldObj != nil)...) // field Struct.I errs = append(errs, - func(fldPath *field.Path, obj, oldObj *int) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *int, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -87,13 +87,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("i"), &obj.I, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.I }))...) + }(fldPath.Child("i"), &obj.I, safe.Field(oldObj, func(oldObj *Struct) *int { return &oldObj.I }), oldObj != nil)...) // field Struct.B errs = append(errs, - func(fldPath *field.Path, obj, oldObj *bool) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *bool, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -106,13 +106,13 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("b"), &obj.B, safe.Field(oldObj, func(oldObj *Struct) *bool { return &oldObj.B }))...) + }(fldPath.Child("b"), &obj.B, safe.Field(oldObj, func(oldObj *Struct) *bool { return &oldObj.B }), oldObj != nil)...) // field Struct.F errs = append(errs, - func(fldPath *field.Path, obj, oldObj *float64) (errs field.ErrorList) { + func(fldPath *field.Path, obj, oldObj *float64, oldValueCorrelated bool) (errs field.ErrorList) { // don't revalidate unchanged data - if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { + if oldValueCorrelated && op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) { return nil } // call field-attached validations @@ -125,7 +125,7 @@ func Validate_Struct(ctx context.Context, op operation.Operation, fldPath *field return // do not proceed } return - }(fldPath.Child("f"), &obj.F, safe.Field(oldObj, func(oldObj *Struct) *float64 { return &oldObj.F }))...) + }(fldPath.Child("f"), &obj.F, safe.Field(oldObj, func(oldObj *Struct) *float64 { return &oldObj.F }), oldObj != nil)...) return errs }