diff --git a/src/compile/nodes/InlineComponent.ts b/src/compile/nodes/InlineComponent.ts index 28c7b2594e..7ba476e21d 100644 --- a/src/compile/nodes/InlineComponent.ts +++ b/src/compile/nodes/InlineComponent.ts @@ -42,6 +42,13 @@ export default class InlineComponent extends Node { }); case 'Attribute': + if (node.name === 'slot') { + component.error(node, { + code: `invalid-prop`, + message: `'slot' is reserved for future use in named slots` + }); + } + // fallthrough case 'Spread': this.attributes.push(new Attribute(component, this, scope, node)); break; diff --git a/test/validator/samples/prop-slot/errors.json b/test/validator/samples/prop-slot/errors.json new file mode 100644 index 0000000000..01e864b542 --- /dev/null +++ b/test/validator/samples/prop-slot/errors.json @@ -0,0 +1,15 @@ +[{ + "code": "invalid-prop", + "message": "'slot' is reserved for future use in named slots", + "start": { + "line": 5, + "column": 8, + "character": 65 + }, + "end": { + "line": 5, + "column": 18, + "character": 75 + }, + "pos": 65 +}] diff --git a/test/validator/samples/prop-slot/input.html b/test/validator/samples/prop-slot/input.html new file mode 100644 index 0000000000..6ce1b6dcce --- /dev/null +++ b/test/validator/samples/prop-slot/input.html @@ -0,0 +1,5 @@ + + +