microsoft / vscode-json-languageservice

JSON language service extracted from VSCode to be reused, e.g in the Monaco editor.
Other
261 stars 110 forks source link

Ensure parser uses errorMessage for minContains/maxContains #229

Closed michaeltlombardi closed 5 months ago

michaeltlombardi commented 5 months ago

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.