fix(console): prevent duplicate error printing when the cause is assi… #25327
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.
This commit fixes the error format when the cause is assigned separately, ensuring that the cause is only printed once instead of twice.
The fix addresses issue #21651.
Use Case
When an error instance has a cause assigned separately, it produces the same output as when the cause is passed directly to the Error constructor.
constructed-with-cause.js
assigned-cause.js
When running the command
deno run constructed-with-cause.js
, the cause is printed twice. This occurs because theinspectError
function checks for a cause property in the error and appends it to the final message, leading to the first print. The second print happens due to the direct assignment of the cause, which makes it an enumerable property. When thegetKeys
function retrieves the enumerable keys from the error, it includes cause, resulting in it being appended again to the final message after callingformatProperty
, which invokesinspectError
once more. as shown in this code:Code changes
A) Skip adding the cause as a key since it is already handeled in the
inspectError
method