reduce diff

pull/17038/head
Rich Harris 6 days ago
parent df666c3ce3
commit 7585da0686

@ -281,10 +281,9 @@ export function create_child_block(body, async) {
export function create_async_block(body, blockers = b.array([]), has_await = true, markers = true) {
return b.stmt(
b.call(
'$$renderer.async',
markers ? '$$renderer.async_block' : '$$renderer.async',
blockers,
b.arrow([b.id('$$renderer')], body, has_await),
markers && b.true
b.arrow([b.id('$$renderer')], body, has_await)
)
);
}

@ -102,9 +102,18 @@ export class Renderer {
/**
* @param {Array<Promise<void>>} blockers
* @param {(renderer: Renderer) => void} fn
* @param {boolean} markers
*/
async(blockers, fn, markers) {
async_block(blockers, fn) {
this.#out.push(BLOCK_OPEN);
this.async(blockers, fn);
this.#out.push(BLOCK_CLOSE);
}
/**
* @param {Array<Promise<void>>} blockers
* @param {(renderer: Renderer) => void} fn
*/
async(blockers, fn) {
let callback = fn;
if (blockers.length > 0) {
@ -124,9 +133,7 @@ export class Renderer {
};
}
if (markers) this.#out.push(BLOCK_OPEN);
this.child(callback);
if (markers) this.#out.push(BLOCK_CLOSE);
}
/**

@ -2,28 +2,24 @@ import 'svelte/internal/flags/async';
import * as $ from 'svelte/internal/server';
export default function Async_each_fallback_hoisting($$renderer) {
$$renderer.async(
[],
async ($$renderer) => {
const each_array = $.ensure_array_like((await $.save(Promise.resolve([])))());
$$renderer.async_block([], async ($$renderer) => {
const each_array = $.ensure_array_like((await $.save(Promise.resolve([])))());
if (each_array.length !== 0) {
$$renderer.push('<!--[-->');
if (each_array.length !== 0) {
$$renderer.push('<!--[-->');
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let item = each_array[$$index];
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let item = each_array[$$index];
$$renderer.push(`<!---->`);
$$renderer.push(async () => $.escape(await Promise.reject('This should never be reached')));
}
} else {
$$renderer.push('<!--[!-->');
$$renderer.push(`<!---->`);
$$renderer.push(async () => $.escape(await Promise.resolve(4)));
$$renderer.push(async () => $.escape(await Promise.reject('This should never be reached')));
}
},
true
);
} else {
$$renderer.push('<!--[!-->');
$$renderer.push(`<!---->`);
$$renderer.push(async () => $.escape(await Promise.resolve(4)));
}
});
$$renderer.push(`<!--]-->`);
}

@ -8,20 +8,16 @@ export default function Async_each_hoisting($$renderer) {
$$renderer.push(`<!--[-->`);
$$renderer.async(
[],
async ($$renderer) => {
const each_array = $.ensure_array_like((await $.save(Promise.resolve([first, second, third])))());
$$renderer.async_block([], async ($$renderer) => {
const each_array = $.ensure_array_like((await $.save(Promise.resolve([first, second, third])))());
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let item = each_array[$$index];
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let item = each_array[$$index];
$$renderer.push(`<!---->`);
$$renderer.push(async () => $.escape(await item));
}
},
true
);
$$renderer.push(`<!---->`);
$$renderer.push(async () => $.escape(await item));
}
});
$$renderer.push(`<!--]-->`);
}

@ -2,19 +2,15 @@ import 'svelte/internal/flags/async';
import * as $ from 'svelte/internal/server';
export default function Async_if_alternate_hoisting($$renderer) {
$$renderer.async(
[],
async ($$renderer) => {
if ((await $.save(Promise.resolve(false)))()) {
$$renderer.push('<!--[-->');
$$renderer.push(async () => $.escape(await Promise.reject('no no no')));
} else {
$$renderer.push('<!--[!-->');
$$renderer.push(async () => $.escape(await Promise.resolve('yes yes yes')));
}
},
true
);
$$renderer.async_block([], async ($$renderer) => {
if ((await $.save(Promise.resolve(false)))()) {
$$renderer.push('<!--[-->');
$$renderer.push(async () => $.escape(await Promise.reject('no no no')));
} else {
$$renderer.push('<!--[!-->');
$$renderer.push(async () => $.escape(await Promise.resolve('yes yes yes')));
}
});
$$renderer.push(`<!--]-->`);
}

@ -2,19 +2,15 @@ import 'svelte/internal/flags/async';
import * as $ from 'svelte/internal/server';
export default function Async_if_hoisting($$renderer) {
$$renderer.async(
[],
async ($$renderer) => {
if ((await $.save(Promise.resolve(true)))()) {
$$renderer.push('<!--[-->');
$$renderer.push(async () => $.escape(await Promise.resolve('yes yes yes')));
} else {
$$renderer.push('<!--[!-->');
$$renderer.push(async () => $.escape(await Promise.reject('no no no')));
}
},
true
);
$$renderer.async_block([], async ($$renderer) => {
if ((await $.save(Promise.resolve(true)))()) {
$$renderer.push('<!--[-->');
$$renderer.push(async () => $.escape(await Promise.resolve('yes yes yes')));
} else {
$$renderer.push('<!--[!-->');
$$renderer.push(async () => $.escape(await Promise.reject('no no no')));
}
});
$$renderer.push(`<!--]-->`);
}

@ -18,28 +18,24 @@ export default function Async_in_derived($$renderer, $$props) {
}
]);
$$renderer.async(
[],
async ($$renderer) => {
if (true) {
$$renderer.push('<!--[-->');
const yes1 = (await $.save(1))();
const yes2 = foo((await $.save(1))());
const no1 = (async () => {
return await 1;
})();
const no2 = (async () => {
return await 1;
})();
} else {
$$renderer.push('<!--[!-->');
}
},
true
);
$$renderer.async_block([], async ($$renderer) => {
if (true) {
$$renderer.push('<!--[-->');
const yes1 = (await $.save(1))();
const yes2 = foo((await $.save(1))());
const no1 = (async () => {
return await 1;
})();
const no2 = (async () => {
return await 1;
})();
} else {
$$renderer.push('<!--[!-->');
}
});
$$renderer.push(`<!--]-->`);
});

Loading…
Cancel
Save