Commit 0381794b authored by Simon Zünd's avatar Simon Zünd Committed by Commit Bot

Add tests for accessing Error.stack on error objects in dictionary mode

This CL adds two mjsunit tests that transition an error object to
dictionary mode before and after Error.stack is formatted and verify
that the custom 'stack' property accessor works as intended.

Bug: v8:8742
Change-Id: I4beb52c75b94533c10fac007f41117ab8915fac8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1649789Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Auto-Submit: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62078}
parent 06930f74
......@@ -73,3 +73,31 @@
assertEquals(error[42], "Who needs stack traces anyway?");
assertEquals(error.stack, undefined); // No getter.
})();
(function TestFormatStackPropertyInDictionaryMode() {
Error.prepareStackTrace = (error, frames) => {
return "<formatted stack trace>";
};
const error = new Error("foo");
error[%MaxSmi()] = 42;
assertTrue(%HasDictionaryElements(error));
// Check it twice.
assertEquals(error.stack, "<formatted stack trace>");
assertEquals(error.stack, "<formatted stack trace>");
})();
(function TestTransitionToDictionaryModeAfterFormatting() {
Error.prepareStackTrace = (error, frames) => {
return "<formatted stack trace>";
};
const error = new Error("foo");
assertFalse(%HasDictionaryElements(error));
assertEquals(error.stack, "<formatted stack trace>");
error[%MaxSmi()] = 42;
assertTrue(%HasDictionaryElements(error));
assertEquals(error.stack, "<formatted stack trace>");
})();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment