From 67af1a203e03ff1d6b5405af7553682174d7a4a6 Mon Sep 17 00:00:00 2001 From: Conduitry Date: Tue, 29 Jan 2019 11:25:40 -0500 Subject: [PATCH] disallow `slot` as a prop name in inline components (#2019) --- src/compile/nodes/InlineComponent.ts | 7 +++++++ test/validator/samples/prop-slot/errors.json | 15 +++++++++++++++ test/validator/samples/prop-slot/input.html | 5 +++++ 3 files changed, 27 insertions(+) create mode 100644 test/validator/samples/prop-slot/errors.json create mode 100644 test/validator/samples/prop-slot/input.html 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 @@ + + +