@@ -828,31 +828,32 @@ func skipValidationForField(key string) bool {
828828// skipLeafOfObject checks if the element is a child of an object that was skipped in some previous
829829// version of the spec. This is relevant in documents that store fields without subobjects.
830830func skipLeafOfObject (root , name string , specVersion semver.Version , schema []FieldDefinition ) bool {
831- if specVersion .LessThan (semver3_0_1 ) {
832- // Check if this is a subobject of an object we didn't traverse.
833- if ! strings .Contains (name , "." ) {
831+ // We are only skipping validation of these fields on versions older than 3.0.1.
832+ if ! specVersion .LessThan (semver3_0_1 ) {
833+ return false
834+ }
835+
836+ // If it doesn't contain a dot in the name, we have traversed its parent, if any.
837+ if ! strings .Contains (name , "." ) {
838+ return false
839+ }
840+
841+ key := name
842+ if root != "" {
843+ key = root + "." + name
844+ }
845+ _ , ancestor := findAncestorElementDefinition (key , schema , func (key string , def * FieldDefinition ) bool {
846+ // Don't look for ancestors beyond root, these objects have been already traversed.
847+ if len (key ) < len (root ) {
834848 return false
835849 }
836- key := name
837- if root != "" {
838- key = root + "." + name
839- }
840- _ , ancestor := findAncestorElementDefinition (key , schema , func (key string , def * FieldDefinition ) bool {
841- // Don't look for ancestors beyond root, these objects have been already traversed.
842- if len (key ) < len (root ) {
843- return false
844- }
845- if ! slices .Contains ([]string {"group" , "object" , "nested" , "flattened" }, def .Type ) {
846- return false
847- }
848- return true
849- })
850- if ancestor != nil {
851- return true
850+ if ! slices .Contains ([]string {"group" , "object" , "nested" , "flattened" }, def .Type ) {
851+ return false
852852 }
853- }
853+ return true
854+ })
854855
855- return false
856+ return ancestor != nil
856857}
857858
858859func isFieldFamilyMatching (family , key string ) bool {
0 commit comments