diff --git a/lib/vocabularies/validation/const.ts b/lib/vocabularies/validation/const.ts index 00231bbdc..a3b94a5dc 100644 --- a/lib/vocabularies/validation/const.ts +++ b/lib/vocabularies/validation/const.ts @@ -16,9 +16,12 @@ const def: CodeKeywordDefinition = { $data: true, error, code(cxt: KeywordCxt) { - const {gen, data, schemaCode} = cxt - // TODO optimize for scalar values in schema - cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`) + const {gen, data, $data, schemaCode, schema} = cxt + if ($data || (schema && typeof schema == "object")) { + cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`) + } else { + cxt.fail(_`${schema} !== ${data}`) + } }, } diff --git a/lib/vocabularies/validation/enum.ts b/lib/vocabularies/validation/enum.ts index 4b093faf0..fa85373c4 100644 --- a/lib/vocabularies/validation/enum.ts +++ b/lib/vocabularies/validation/enum.ts @@ -42,7 +42,7 @@ const def: CodeKeywordDefinition = { function equalCode(vSchema: Name, i: number): Code { const sch = schema[i] - return sch && typeof sch === "object" + return typeof sch === "object" && sch !== null ? _`${eql}(${data}, ${vSchema}[${i}])` : _`${data} === ${sch}` }