|
|
@ -6,11 +6,24 @@ export default test({
|
|
|
|
compileOptions: {
|
|
|
|
compileOptions: {
|
|
|
|
dev: true
|
|
|
|
dev: true
|
|
|
|
},
|
|
|
|
},
|
|
|
|
html: `<p>no parent</p><p>if</p><p>each</p><p>loading</p><p>key</p><p>hi</p><p>hi</p><p>hi</p>`,
|
|
|
|
html: `
|
|
|
|
|
|
|
|
<p>no parent</p>
|
|
|
|
|
|
|
|
<button>toggle</button>
|
|
|
|
|
|
|
|
<p>if</p>
|
|
|
|
|
|
|
|
<p>each</p>
|
|
|
|
|
|
|
|
<p>loading</p>
|
|
|
|
|
|
|
|
<p>key</p>
|
|
|
|
|
|
|
|
<p>hi</p>
|
|
|
|
|
|
|
|
<p>hi</p>
|
|
|
|
|
|
|
|
<p>hi</p>
|
|
|
|
|
|
|
|
<p>hi</p>
|
|
|
|
|
|
|
|
<p>hi</p>
|
|
|
|
|
|
|
|
`,
|
|
|
|
|
|
|
|
|
|
|
|
async test({ target, assert }) {
|
|
|
|
async test({ target, assert }) {
|
|
|
|
await tick();
|
|
|
|
function check() {
|
|
|
|
const [main, if_, each, await_, key, child1, child2, child3] = target.querySelectorAll('p');
|
|
|
|
const [main, if_, each, await_, key, child1, child2, child3, child4, dynamic] =
|
|
|
|
|
|
|
|
target.querySelectorAll('p');
|
|
|
|
|
|
|
|
|
|
|
|
// @ts-expect-error
|
|
|
|
// @ts-expect-error
|
|
|
|
assert.deepEqual(main.__svelte_meta.parent, null);
|
|
|
|
assert.deepEqual(main.__svelte_meta.parent, null);
|
|
|
@ -19,7 +32,7 @@ export default test({
|
|
|
|
assert.deepEqual(if_.__svelte_meta.parent, {
|
|
|
|
assert.deepEqual(if_.__svelte_meta.parent, {
|
|
|
|
file: 'main.svelte',
|
|
|
|
file: 'main.svelte',
|
|
|
|
type: 'if',
|
|
|
|
type: 'if',
|
|
|
|
line: 10,
|
|
|
|
line: 12,
|
|
|
|
column: 0,
|
|
|
|
column: 0,
|
|
|
|
parent: null
|
|
|
|
parent: null
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -28,7 +41,7 @@ export default test({
|
|
|
|
assert.deepEqual(each.__svelte_meta.parent, {
|
|
|
|
assert.deepEqual(each.__svelte_meta.parent, {
|
|
|
|
file: 'main.svelte',
|
|
|
|
file: 'main.svelte',
|
|
|
|
type: 'each',
|
|
|
|
type: 'each',
|
|
|
|
line: 14,
|
|
|
|
line: 16,
|
|
|
|
column: 0,
|
|
|
|
column: 0,
|
|
|
|
parent: null
|
|
|
|
parent: null
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -37,7 +50,7 @@ export default test({
|
|
|
|
assert.deepEqual(await_.__svelte_meta.parent, {
|
|
|
|
assert.deepEqual(await_.__svelte_meta.parent, {
|
|
|
|
file: 'main.svelte',
|
|
|
|
file: 'main.svelte',
|
|
|
|
type: 'await',
|
|
|
|
type: 'await',
|
|
|
|
line: 18,
|
|
|
|
line: 20,
|
|
|
|
column: 0,
|
|
|
|
column: 0,
|
|
|
|
parent: null
|
|
|
|
parent: null
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -46,7 +59,7 @@ export default test({
|
|
|
|
assert.deepEqual(key.__svelte_meta.parent, {
|
|
|
|
assert.deepEqual(key.__svelte_meta.parent, {
|
|
|
|
file: 'main.svelte',
|
|
|
|
file: 'main.svelte',
|
|
|
|
type: 'key',
|
|
|
|
type: 'key',
|
|
|
|
line: 24,
|
|
|
|
line: 26,
|
|
|
|
column: 0,
|
|
|
|
column: 0,
|
|
|
|
parent: null
|
|
|
|
parent: null
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -56,7 +69,7 @@ export default test({
|
|
|
|
file: 'main.svelte',
|
|
|
|
file: 'main.svelte',
|
|
|
|
type: 'component',
|
|
|
|
type: 'component',
|
|
|
|
componentTag: 'Child',
|
|
|
|
componentTag: 'Child',
|
|
|
|
line: 28,
|
|
|
|
line: 30,
|
|
|
|
column: 0,
|
|
|
|
column: 0,
|
|
|
|
parent: null
|
|
|
|
parent: null
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -66,26 +79,108 @@ export default test({
|
|
|
|
file: 'main.svelte',
|
|
|
|
file: 'main.svelte',
|
|
|
|
type: 'component',
|
|
|
|
type: 'component',
|
|
|
|
componentTag: 'Child',
|
|
|
|
componentTag: 'Child',
|
|
|
|
line: 31,
|
|
|
|
line: 33,
|
|
|
|
column: 1,
|
|
|
|
column: 1,
|
|
|
|
|
|
|
|
parent: {
|
|
|
|
|
|
|
|
file: 'passthrough.svelte',
|
|
|
|
|
|
|
|
type: 'render',
|
|
|
|
|
|
|
|
line: 5,
|
|
|
|
|
|
|
|
column: 0,
|
|
|
|
parent: {
|
|
|
|
parent: {
|
|
|
|
file: 'main.svelte',
|
|
|
|
file: 'main.svelte',
|
|
|
|
type: 'component',
|
|
|
|
type: 'component',
|
|
|
|
componentTag: 'Passthrough',
|
|
|
|
componentTag: 'Passthrough',
|
|
|
|
line: 30,
|
|
|
|
line: 32,
|
|
|
|
column: 0,
|
|
|
|
column: 0,
|
|
|
|
parent: null
|
|
|
|
parent: null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// @ts-expect-error
|
|
|
|
// @ts-expect-error
|
|
|
|
assert.deepEqual(child3.__svelte_meta.parent, {
|
|
|
|
assert.deepEqual(child3.__svelte_meta.parent, {
|
|
|
|
|
|
|
|
file: 'main.svelte',
|
|
|
|
|
|
|
|
type: 'component',
|
|
|
|
|
|
|
|
componentTag: 'Child',
|
|
|
|
|
|
|
|
line: 38,
|
|
|
|
|
|
|
|
column: 2,
|
|
|
|
|
|
|
|
parent: {
|
|
|
|
|
|
|
|
file: 'passthrough.svelte',
|
|
|
|
|
|
|
|
type: 'render',
|
|
|
|
|
|
|
|
line: 5,
|
|
|
|
|
|
|
|
column: 0,
|
|
|
|
|
|
|
|
parent: {
|
|
|
|
|
|
|
|
file: 'main.svelte',
|
|
|
|
|
|
|
|
type: 'component',
|
|
|
|
|
|
|
|
componentTag: 'Passthrough',
|
|
|
|
|
|
|
|
line: 37,
|
|
|
|
|
|
|
|
column: 1,
|
|
|
|
|
|
|
|
parent: {
|
|
|
|
|
|
|
|
file: 'passthrough.svelte',
|
|
|
|
|
|
|
|
type: 'render',
|
|
|
|
|
|
|
|
line: 5,
|
|
|
|
|
|
|
|
column: 0,
|
|
|
|
|
|
|
|
parent: {
|
|
|
|
|
|
|
|
file: 'main.svelte',
|
|
|
|
|
|
|
|
type: 'component',
|
|
|
|
|
|
|
|
componentTag: 'Passthrough',
|
|
|
|
|
|
|
|
line: 36,
|
|
|
|
|
|
|
|
column: 0,
|
|
|
|
|
|
|
|
parent: null
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// @ts-expect-error
|
|
|
|
|
|
|
|
assert.deepEqual(child4.__svelte_meta.parent, {
|
|
|
|
|
|
|
|
file: 'passthrough.svelte',
|
|
|
|
|
|
|
|
type: 'render',
|
|
|
|
|
|
|
|
line: 8,
|
|
|
|
|
|
|
|
column: 1,
|
|
|
|
|
|
|
|
parent: {
|
|
|
|
|
|
|
|
file: 'passthrough.svelte',
|
|
|
|
|
|
|
|
type: 'if',
|
|
|
|
|
|
|
|
line: 7,
|
|
|
|
|
|
|
|
column: 0,
|
|
|
|
|
|
|
|
parent: {
|
|
|
|
|
|
|
|
file: 'main.svelte',
|
|
|
|
|
|
|
|
type: 'component',
|
|
|
|
|
|
|
|
componentTag: 'Passthrough',
|
|
|
|
|
|
|
|
line: 43,
|
|
|
|
|
|
|
|
column: 1,
|
|
|
|
|
|
|
|
parent: {
|
|
|
|
|
|
|
|
file: 'main.svelte',
|
|
|
|
|
|
|
|
type: 'if',
|
|
|
|
|
|
|
|
line: 42,
|
|
|
|
|
|
|
|
column: 0,
|
|
|
|
|
|
|
|
parent: null
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// @ts-expect-error
|
|
|
|
|
|
|
|
assert.deepEqual(dynamic.__svelte_meta.parent, {
|
|
|
|
file: 'main.svelte',
|
|
|
|
file: 'main.svelte',
|
|
|
|
type: 'component',
|
|
|
|
type: 'component',
|
|
|
|
componentTag: 'x.y',
|
|
|
|
componentTag: 'x.y',
|
|
|
|
line: 34,
|
|
|
|
line: 50,
|
|
|
|
column: 0,
|
|
|
|
column: 0,
|
|
|
|
parent: null
|
|
|
|
parent: null
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await tick();
|
|
|
|
|
|
|
|
check();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Test that stack is kept when re-rendering
|
|
|
|
|
|
|
|
const button = target.querySelector('button');
|
|
|
|
|
|
|
|
button?.click();
|
|
|
|
|
|
|
|
await tick();
|
|
|
|
|
|
|
|
button?.click();
|
|
|
|
|
|
|
|
await tick();
|
|
|
|
|
|
|
|
check();
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|