@@ -794,8 +794,6 @@ func (schema *Schema) visitJSON(settings *schemaValidationSettings, value interf
794794}
795795
796796func (schema * Schema ) visitSetOperations (settings * schemaValidationSettings , value interface {}) (err error ) {
797- var oldfailfast bool
798-
799797 if enum := schema .Enum ; len (enum ) != 0 {
800798 for _ , v := range enum {
801799 if value == v {
@@ -818,9 +816,12 @@ func (schema *Schema) visitSetOperations(settings *schemaValidationSettings, val
818816 if v == nil {
819817 return foundUnresolvedRef (ref .Ref )
820818 }
819+ var oldfailfast bool
821820 oldfailfast , settings .failfast = settings .failfast , true
822- if err := v .visitJSON (settings , value ); err == nil {
823- if oldfailfast {
821+ err := v .visitJSON (settings , value )
822+ settings .failfast = oldfailfast
823+ if err == nil {
824+ if settings .failfast {
824825 return errSchema
825826 }
826827 return & SchemaError {
@@ -829,7 +830,6 @@ func (schema *Schema) visitSetOperations(settings *schemaValidationSettings, val
829830 SchemaField : "not" ,
830831 }
831832 }
832- settings .failfast = oldfailfast
833833 }
834834
835835 if v := schema .OneOf ; len (v ) > 0 {
@@ -839,11 +839,13 @@ func (schema *Schema) visitSetOperations(settings *schemaValidationSettings, val
839839 if v == nil {
840840 return foundUnresolvedRef (item .Ref )
841841 }
842+ var oldfailfast bool
842843 oldfailfast , settings .failfast = settings .failfast , true
843- if err := v .visitJSON (settings , value ); err == nil {
844+ err := v .visitJSON (settings , value )
845+ settings .failfast = oldfailfast
846+ if err == nil {
844847 ok ++
845848 }
846- settings .failfast = oldfailfast
847849 }
848850 if ok != 1 {
849851 if settings .failfast {
@@ -864,12 +866,14 @@ func (schema *Schema) visitSetOperations(settings *schemaValidationSettings, val
864866 if v == nil {
865867 return foundUnresolvedRef (item .Ref )
866868 }
869+ var oldfailfast bool
867870 oldfailfast , settings .failfast = settings .failfast , true
868- if err := v .visitJSON (settings , value ); err == nil {
871+ err := v .visitJSON (settings , value )
872+ settings .failfast = oldfailfast
873+ if err == nil {
869874 ok = true
870875 break
871876 }
872- settings .failfast = oldfailfast
873877 }
874878 if ! ok {
875879 if settings .failfast {
@@ -888,9 +892,12 @@ func (schema *Schema) visitSetOperations(settings *schemaValidationSettings, val
888892 if v == nil {
889893 return foundUnresolvedRef (item .Ref )
890894 }
895+ var oldfailfast bool
891896 oldfailfast , settings .failfast = settings .failfast , false
892- if err := v .visitJSON (settings , value ); err != nil {
893- if oldfailfast {
897+ err := v .visitJSON (settings , value )
898+ settings .failfast = oldfailfast
899+ if err != nil {
900+ if settings .failfast {
894901 return errSchema
895902 }
896903 return & SchemaError {
@@ -900,7 +907,6 @@ func (schema *Schema) visitSetOperations(settings *schemaValidationSettings, val
900907 Origin : err ,
901908 }
902909 }
903- settings .failfast = oldfailfast
904910 }
905911 return
906912}
@@ -1494,7 +1500,7 @@ func (err *SchemaError) Error() string {
14941500 buf .WriteByte ('/' )
14951501 buf .WriteString (reversePath [i ])
14961502 }
1497- buf .WriteString (`":` )
1503+ buf .WriteString (`": ` )
14981504 }
14991505 reason := err .Reason
15001506 if reason == "" {
0 commit comments