add error for decorators not being implemented yet
This commit is contained in:
@@ -70,12 +70,18 @@ export default function ({ types: t }) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function doError(path) {
|
||||
throw path.buildCodeFrameError("Decorators are not supported yet in 6.x pending proposal update.");
|
||||
}
|
||||
|
||||
return {
|
||||
inherits: require("babel-plugin-syntax-decorators"),
|
||||
|
||||
visitor: {
|
||||
ClassExpression(path) {
|
||||
if (!hasDecorators(path)) return;
|
||||
doError(path);
|
||||
|
||||
explodeClass(path);
|
||||
|
||||
let ref = path.scope.generateDeclaredUidIdentifier("ref");
|
||||
@@ -92,6 +98,7 @@ export default function ({ types: t }) {
|
||||
|
||||
ClassDeclaration(path) {
|
||||
if (!hasDecorators(path)) return;
|
||||
doError(path);
|
||||
explodeClass(path);
|
||||
|
||||
let ref = path.node.id;
|
||||
@@ -105,6 +112,7 @@ export default function ({ types: t }) {
|
||||
|
||||
ObjectExpression(path) {
|
||||
if (!hasDecorators(path)) return;
|
||||
doError(path);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
function noop() {}
|
||||
|
||||
function override() {
|
||||
return "bar";
|
||||
}
|
||||
|
||||
@override
|
||||
class Foo {}
|
||||
|
||||
@noop
|
||||
class Bar {
|
||||
constructor() {
|
||||
this.foo = "bar";
|
||||
}
|
||||
}
|
||||
|
||||
assert.equal(Foo, "bar");
|
||||
assert.equal(new Bar().foo, "bar");
|
||||
@@ -1,23 +0,0 @@
|
||||
class Person {
|
||||
@reader _first;
|
||||
@reader last;
|
||||
|
||||
constructor(first, last) {
|
||||
this._first = first;
|
||||
this._last = last;
|
||||
}
|
||||
|
||||
@reader get _fullName() {
|
||||
return `${this._first} ${this._last}`;
|
||||
}
|
||||
}
|
||||
|
||||
let jason = new Person("Jason", "Orendorff");
|
||||
|
||||
assert.equal(jason.first, "Jason");
|
||||
assert.equal(jason.last, "Orendorff");
|
||||
assert.equal(jason.fullName, "Jason Orendorff");
|
||||
|
||||
jason.update("JSON", "Orendorff")
|
||||
assert.equal(jason.first, "JSON");
|
||||
assert.equal(jason.fullName, "JSON Orendorff");
|
||||
@@ -1,8 +0,0 @@
|
||||
class Person {
|
||||
@reader _first = "Andreas";
|
||||
@reader _last = "Rossberg";
|
||||
}
|
||||
|
||||
let andreas = new Person();
|
||||
assert.equal(andreas.first, "Andreas");
|
||||
assert.equal(andreas.last, "Rossberg");
|
||||
@@ -1,8 +0,0 @@
|
||||
class Person {
|
||||
@reader static _first = "Brendan";
|
||||
@reader static _last = "Eich";
|
||||
}
|
||||
|
||||
let brendan = Person;
|
||||
assert.equal(brendan.first, "Brendan");
|
||||
assert.equal(brendan.last, "Eich");
|
||||
@@ -1,7 +0,0 @@
|
||||
let person = {
|
||||
@reader _first: "Mark",
|
||||
@reader _last: "Miller"
|
||||
};
|
||||
|
||||
assert.equal(person.first, "Mark");
|
||||
assert.equal(person.last, "Miller");
|
||||
@@ -1,33 +0,0 @@
|
||||
function reader(target, descriptor) {
|
||||
let { enumerable, configurable, property: { name, get }, hint } = descriptor;
|
||||
let publicName = extractPublicName(name());
|
||||
Object.defineProperty(target, publicName, {
|
||||
enumerable, configurable, get: function() { return get(this, name); }
|
||||
});
|
||||
return descriptor;
|
||||
}
|
||||
|
||||
function extractPublicName(name) {
|
||||
// _first -> first
|
||||
return name.slice(1);
|
||||
}
|
||||
|
||||
class Person {
|
||||
@reader _first;
|
||||
@reader _last;
|
||||
|
||||
constructor(first, last) {
|
||||
this._first = first;
|
||||
this._last = last;
|
||||
}
|
||||
|
||||
@reader _update(first, last) {
|
||||
this._first = first;
|
||||
this._last = last;
|
||||
}
|
||||
}
|
||||
|
||||
let alex = new Person("Alex", "Russell");
|
||||
assert.equal(alex.first, "Alex");
|
||||
alex.update("Alexander", "Russell");
|
||||
assert.equal(alex.first, "Alexander");
|
||||
@@ -1,17 +0,0 @@
|
||||
class Person {
|
||||
@reader _first;
|
||||
@reader _last;
|
||||
|
||||
constructor(first="Waldemar", last="Horwat") {
|
||||
this._first = first;
|
||||
this._last = last;
|
||||
}
|
||||
}
|
||||
|
||||
let waldemar = new Person();
|
||||
assert.equal(waldemar.first, "Waldemar");
|
||||
assert.equal(waldemar.last, "Horwat");
|
||||
|
||||
let jeff = new Person("Jeff", "Morrison");
|
||||
assert.equal(jeff.first, "Jeff");
|
||||
assert.equal(jeff.last, "Morrison");
|
||||
@@ -1,11 +0,0 @@
|
||||
let person = {
|
||||
@reader _first,
|
||||
@reader _last
|
||||
};
|
||||
|
||||
assert.equal(person.first, "undefined");
|
||||
|
||||
Object.assign(person, { _first: "Brian", _last: "Terlson" });
|
||||
|
||||
assert.equal(person.first, "Brian");
|
||||
assert.equal(person.last, "Terlson");
|
||||
@@ -1,13 +0,0 @@
|
||||
class Person {
|
||||
@reader static _first;
|
||||
@reader static _last;
|
||||
}
|
||||
|
||||
let jonathan = Person;
|
||||
|
||||
assert.equal(jonathan.first, undefined);
|
||||
|
||||
Object.assign(jonathan, { _first: "Jonathan", _last: "Turner" });
|
||||
|
||||
assert.equal(jonathan.first, "Jonathan");
|
||||
assert.equal(jonathan.last, "Turner");
|
||||
Reference in New Issue
Block a user