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 @@
+
+
+