assert: handle class constructors in throws() #4168
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, if a class constructor is passed as the expected value to
throws()
, and a match is not received, the code falls through to the validation function case, which usesfn.prototype.call()
. Class constructors must be called withnew
, so this throws aTypeError
. This commit adds atry...catch
, which handles the thrown error.I'm proposing this as an alternative to #4166. The drawback I see with #4166 is that it only handles classes which extend
Error
. In general, it might be a good thing to wrap user defined validation functions in atry...catch
anyway. Closes #3188.