Reject class with extends for single file UI components

This commit is contained in:
Patrick Steele-Idem 2017-02-08 22:53:46 -08:00
parent ab1e53701b
commit baf6cf6a14
4 changed files with 18 additions and 0 deletions

View File

@ -0,0 +1,6 @@
class Foo extends Bar {
}
<div>
</div>

View File

@ -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');
};

View File

@ -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));