@@ -22,6 +22,13 @@ import Data.Validator.Reference (updateResolutionScope)
2222embedded :: Schema -> ([Schema], [Schema])
2323embedded s = JT.embedded (d4Spec (ReferencedSchemas s mempty) mempty Nothing) s
2424
25+-- | For internal use.
26+--
27+-- A specialized version of 'const' that prevents overwriting
28+-- useful information.
29+toss :: a -> () -> a
30+toss = const
31+
2532validate
2633 :: ReferencedSchemas Schema
2734 -> SchemaWithURI Schema
@@ -52,7 +59,7 @@ d4Spec
5259d4Spec referenced visited scope = Spec
5360 [ dimap
5461 (fmap D4.MultipleOf . _schemaMultipleOf)
55− (const MultipleOf)
62+ (toss MultipleOf)
5663 D4.multipleOf
5764 , dimap
5865 (\s -> D4.MaximumContext (fromMaybe False (_schemaExclusiveMaximum s))
@@ -65,13 +72,13 @@ d4Spec referenced visited scope = Spec
6572 minE
6673 D4.minimumVal
6774
68− , dimap (fmap D4.MaxLength . _schemaMaxLength) (const MaxLength) D4.maxLength
69− , dimap (fmap D4.MinLength . _schemaMinLength) (const MinLength) D4.minLength
70− , dimap (fmap D4.PatternVal . _schemaPattern) (const PatternValidator) D4.patternVal
75+ , dimap (fmap D4.MaxLength . _schemaMaxLength) (toss MaxLength) D4.maxLength
76+ , dimap (fmap D4.MinLength . _schemaMinLength) (toss MinLength) D4.minLength
77+ , dimap (fmap D4.PatternVal . _schemaPattern) (toss PatternValidator) D4.patternVal
7178
72− , dimap (fmap D4.MaxItems . _schemaMaxItems) (const MaxItems) D4.maxItems
73− , dimap (fmap D4.MinItems . _schemaMinItems) (const MinItems) D4.minItems
74− , dimap (fmap D4.UniqueItems . _schemaUniqueItems) (const UniqueItems) D4.uniqueItems
79+ , dimap (fmap D4.MaxItems . _schemaMaxItems) (toss MaxItems) D4.maxItems
80+ , dimap (fmap D4.MinItems . _schemaMinItems) (toss MinItems) D4.minItems
81+ , dimap (fmap D4.UniqueItems . _schemaUniqueItems) (toss UniqueItems) D4.uniqueItems
7582 , dimap
7683 (\s -> D4.ItemsContext (_schemaAdditionalItems s) <$> _schemaItems s)
7784 itemsE
@@ -79,9 +86,9 @@ d4Spec referenced visited scope = Spec
7986 , lmap (fmap D4.AdditionalItemsContext . _schemaAdditionalItems) D4.additionalItemsEmbedded
8087 , lmap (fmap D4.Definitions . _schemaDefinitions) D4.definitionsEmbedded
8188
82− , dimap (fmap D4.MaxProperties . _schemaMaxProperties) (const MaxProperties) D4.maxProperties
83− , dimap (fmap D4.MinProperties . _schemaMinProperties) (const MinProperties) D4.minProperties
84− , dimap (fmap D4.RequiredContext . _schemaRequired) (const Required) D4.required
89+ , dimap (fmap D4.MaxProperties . _schemaMaxProperties) (toss MaxProperties) D4.maxProperties
90+ , dimap (fmap D4.MinProperties . _schemaMinProperties) (toss MinProperties) D4.minProperties
91+ , dimap (fmap D4.RequiredContext . _schemaRequired) (toss Required) D4.required
8592 , dimap (fmap D4.DependenciesContext . _schemaDependencies) depsE (D4.dependencies descend)
8693 , dimap
8794 (\s -> D4.PropertiesContext
@@ -109,12 +116,12 @@ d4Spec referenced visited scope = Spec
109116 (\s -> D4.Ref <$> _schemaRef s)
110117 refE
111118 (D4.ref visited scope (FE.getReference referenced) refVal)
112− , dimap (fmap D4.EnumContext . _schemaEnum) (const Enum) D4.enumVal
113− , dimap (fmap D4.TypeContext . _schemaType) (const TypeValidator) D4.typeVal
119+ , dimap (fmap D4.EnumContext . _schemaEnum) (toss Enum) D4.enumVal
120+ , dimap (fmap D4.TypeContext . _schemaType) (toss TypeValidator) D4.typeVal
114121 , dimap (fmap D4.AllOf . _schemaAllOf) AllOf (D4.allOf lateral)
115− , dimap (fmap D4.AnyOf . _schemaAnyOf) (const AnyOf) (D4.anyOf lateral)
116− , dimap (fmap D4.OneOf . _schemaOneOf) (const OneOf) (D4.oneOf lateral)
117− , dimap (fmap D4.NotVal . _schemaNot) (const NotValidator) (D4.notVal lateral)
122+ , dimap (fmap D4.AnyOf . _schemaAnyOf) AnyOf (D4.anyOf lateral)
123+ , dimap (fmap D4.OneOf . _schemaOneOf) oneOfE (D4.oneOf lateral)
124+ , dimap (fmap D4.NotVal . _schemaNot) (toss NotValidator) (D4.notVal lateral)
118125 ]
119126 where
120127 refVal :: AN.VisitedSchemas -> Maybe Text -> Schema -> Value -> [Failure]