pull/15844/head
Rich Harris 2 months ago
commit 693da2ce29

@ -0,0 +1,5 @@
---
'svelte': patch
---
fix: don't show adjusted error messages in boundaries

@ -66,18 +66,12 @@ export function invoke_error_boundary(error, effect) {
throw error; throw error;
} }
/** @type {WeakSet<Error>} */
const adjusted_errors = new WeakSet();
/** /**
* Add useful information to the error message/stack in development * Add useful information to the error message/stack in development
* @param {Error} error * @param {Error} error
* @param {Effect} effect * @param {Effect} effect
*/ */
function get_adjustments(error, effect) { function get_adjustments(error, effect) {
if (adjusted_errors.has(error)) return;
adjusted_errors.add(error);
const message_descriptor = get_descriptor(error, 'message'); const message_descriptor = get_descriptor(error, 'message');
// if the message was already changed and it's not configurable we can't change it // if the message was already changed and it's not configurable we can't change it

@ -9,6 +9,6 @@ export default test({
flushSync(); flushSync();
assert.deepEqual(logs, ['error caught']); assert.deepEqual(logs, ['error caught']);
assert.htmlEqual(target.innerHTML, `<div>Fallback!</div><button>+</button>`); assert.htmlEqual(target.innerHTML, `<div>oh no!</div><button>+</button>`);
} }
}); });

@ -1,6 +1,6 @@
<script> <script>
function throw_error() { function throw_error() {
throw new Error('test') throw new Error('oh no!')
} }
let count = $state(0); let count = $state(0);
@ -9,8 +9,8 @@
<svelte:boundary onerror={(e) => console.log('error caught')}> <svelte:boundary onerror={(e) => console.log('error caught')}>
{count > 0 ? throw_error() : null} {count > 0 ? throw_error() : null}
{#snippet failed()} {#snippet failed(e)}
<div>Fallback!</div> <div>{e.message}</div>
{/snippet} {/snippet}
</svelte:boundary> </svelte:boundary>

Loading…
Cancel
Save