Skip to content

Commit 31dc8ea

Browse files
Ensure parser uses errorMessage for minContains/maxContains (#229)
Prior to this change, the language server ignored any defined `errorMessage` when a subschema fails validation for a `contains` keyword and `minContains` is defined. The `errorMessage` was only used when `minContains` was not defined and no item in the array matched the subschema. Even if `minContains` isn't defined, the parser ignores `errorMessage` when the array contains more matching items than `maxContains` allows. This change updates the parser to use the `errorMessage`, if defined, for any failure of the `contains` keyword, regardless of the values of `minContains` and `maxContains`. This is useful for cases where a developer wants to define an error message indicating both what the schema expects to contain and how many times. The default error message is not very helpful in these cases, because most users won't know how to look up "the contains contraint" for whatever file they're working with.
1 parent ad4b805 commit 31dc8ea

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/parser/jsonParser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -810,13 +810,13 @@ function validate(n: ASTNode | undefined, schema: JSONSchema, validationResult:
810810
if (isNumber(schema.minContains) && containsCount < schema.minContains) {
811811
validationResult.problems.push({
812812
location: { offset: node.offset, length: node.length },
813-
message: l10n.t('Array has too few items that match the contains contraint. Expected {0} or more.', schema.minContains)
813+
message: schema.errorMessage || l10n.t('Array has too few items that match the contains contraint. Expected {0} or more.', schema.minContains)
814814
});
815815
}
816816
if (isNumber(schema.maxContains) && containsCount > schema.maxContains) {
817817
validationResult.problems.push({
818818
location: { offset: node.offset, length: node.length },
819-
message: l10n.t('Array has too many items that match the contains contraint. Expected {0} or less.', schema.maxContains)
819+
message: schema.errorMessage || l10n.t('Array has too many items that match the contains contraint. Expected {0} or less.', schema.maxContains)
820820
});
821821
}
822822
}

0 commit comments

Comments
 (0)