Skip to content

Commit aae80c2

Browse files
committed
tweaks
1 parent 9787e26 commit aae80c2

File tree

1 file changed

+26
-24
lines changed
  • packages/svelte/src/internal/server

1 file changed

+26
-24
lines changed

packages/svelte/src/internal/server/dev.js

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ import { current_component } from './context.js';
99
* @typedef {{
1010
* tag: string;
1111
* parent: null | Element;
12-
* filename: string;
12+
* filename: null | string;
1313
* }} Element
1414
*/
1515

1616
/**
1717
* @type {Element | null}
1818
*/
19-
let current_element = null;
19+
let parent = null;
2020

2121
/**
2222
* @param {import('#server').Payload} payload
@@ -33,12 +33,24 @@ function error_on_client(payload, message) {
3333
}
3434

3535
/**
36-
* @param {string} file
36+
* @param {string | null} file
3737
*/
3838
function print_file(file) {
3939
return file ? `(${file})` : '';
4040
}
4141

42+
/**
43+
* @param {import('#server').Payload} payload
44+
* @param {Element} parent
45+
* @param {Element} child
46+
*/
47+
function print_error(payload, parent, child) {
48+
error_on_client(
49+
payload,
50+
`<${child.tag}> ${print_file(child.filename)} is not a valid child element of <${parent.tag}> ${print_file(parent.filename)}`
51+
);
52+
}
53+
4254
/**
4355
* @param {import('#server').Payload} payload
4456
* @param {string} tag
@@ -47,47 +59,37 @@ function print_file(file) {
4759
*/
4860
export function push_element(payload, tag, line, column) {
4961
var filename = /** @type {import('#server').Component} */ (current_component).function.filename;
62+
var child = { tag, parent, filename };
5063

51-
if (current_element !== null && !is_tag_valid_with_parent(tag, current_element.tag)) {
52-
error_on_client(
53-
payload,
54-
`<${tag}> ${print_file(filename)} is not a valid child element of <${current_element.tag}> ${print_file(current_element.filename)}`
55-
);
64+
if (parent !== null && !is_tag_valid_with_parent(tag, parent.tag)) {
65+
print_error(payload, parent, child);
5666
}
5767

5868
if (interactive_elements.has(tag)) {
59-
let element = current_element;
69+
let element = parent;
6070
while (element !== null) {
6171
if (interactive_elements.has(element.tag)) {
62-
error_on_client(
63-
payload,
64-
`<${tag}> ${print_file(filename)} is not a valid child element of <${element.tag}> ${print_file(element.filename)}`
65-
);
72+
print_error(payload, element, child);
73+
break;
6674
}
6775
element = element.parent;
6876
}
6977
}
7078

7179
if (disallowed_paragraph_contents.includes(tag)) {
72-
let element = current_element;
80+
let element = parent;
7381
while (element !== null) {
7482
if (element.tag === 'p') {
75-
error_on_client(
76-
payload,
77-
`<${tag}> ${print_file(filename)} is not a valid child element of <p> ${print_file(element.filename)}`
78-
);
83+
print_error(payload, element, child);
84+
break;
7985
}
8086
element = element.parent;
8187
}
8288
}
8389

84-
current_element = {
85-
tag,
86-
parent: current_element,
87-
filename
88-
};
90+
parent = child;
8991
}
9092

9193
export function pop_element() {
92-
current_element = /** @type {Element} */ (current_element).parent;
94+
parent = /** @type {Element} */ (parent).parent;
9395
}

0 commit comments

Comments
 (0)