diff --git a/test/autotests/render/error-component-class-extends/expected.html b/test/autotests/render/error-component-class-extends/expected.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/test/autotests/render/error-component-class-extends/template.marko b/test/autotests/render/error-component-class-extends/template.marko
new file mode 100644
index 000000000..c8a684809
--- /dev/null
+++ b/test/autotests/render/error-component-class-extends/template.marko
@@ -0,0 +1,6 @@
+class Foo extends Bar {
+
+}
+
+
+
\ No newline at end of file
diff --git a/test/autotests/render/error-component-class-extends/test.js b/test/autotests/render/error-component-class-extends/test.js
new file mode 100644
index 000000000..5b9d164f1
--- /dev/null
+++ b/test/autotests/render/error-component-class-extends/test.js
@@ -0,0 +1,6 @@
+var expect = require('chai').expect;
+
+exports.checkError = function(e) {
+ expect(e.toString()).to.contain('A component class is not allowed to use `extends`');
+ expect(e.toString()).to.contain('https://github.com/marko-js/marko/wiki/Error:-Component-class-with-extends');
+};
\ No newline at end of file
diff --git a/widgets/taglib/TransformHelper/handleRootNodes.js b/widgets/taglib/TransformHelper/handleRootNodes.js
index 689d96632..b8a98ac73 100644
--- a/widgets/taglib/TransformHelper/handleRootNodes.js
+++ b/widgets/taglib/TransformHelper/handleRootNodes.js
@@ -207,6 +207,12 @@ function handleClassDeclaration(classEl, transformHelper) {
return;
}
let expression = tree.body[0].expression;
+
+ if (expression.superClass && expression.superClass.name) {
+ transformHelper.context.addError(classEl, 'A component class is not allowed to use `extends`. See: https://github.com/marko-js/marko/wiki/Error:-Component-class-with-extends');
+ return;
+ }
+
let object = classToObject(expression);
let componentVar = transformHelper.context.addStaticVar('marko_component', escodegen.generate(object));