Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(824)

Unified Diff: test/decorator_test.ts

Issue 2225953002: Strip more unused features. (Closed) Base URL: git@github.com:dart-lang/js_facade_gen.git@master
Patch Set: Fix types Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/declaration_test.ts ('k') | test/e2e/helloworld.ts » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/decorator_test.ts
diff --git a/test/decorator_test.ts b/test/decorator_test.ts
index 72e00862f7d52ce4c27a9c136f606b551b294526..d411a19aa9c57ffb74e9653ff7dfb2c917041d49 100644
--- a/test/decorator_test.ts
+++ b/test/decorator_test.ts
@@ -1,82 +1,115 @@
/// <reference path="../typings/mocha/mocha.d.ts"/>
-import {expectTranslate, expectErroneousCode} from './test_support';
+import {expectTranslate} from './test_support';
-describe('decorators', () => {
+
+// We want to ignore decorators on JS interop for now.
+// These tests make sure we haven't accidentally left in historic code from
+// ts2dart that export decorators.
+describe('ignore decorators', () => {
it('translates plain decorators', () => {
- expectTranslate('@A class X {}').to.equal(`@A
-class X {}`);
+ expectTranslate('@A class X {}').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+}`);
});
- it('translates plain decorators when applied to abstract classes', () => {
- expectTranslate('@A abstract class X {}').to.equal(`@A
-abstract class X {}`);
+ it('ignore plain decorators applied to abstract classes', () => {
+ expectTranslate('@A abstract class X {}').to.equal(`@JS()
+abstract class X {
+ // @Ignore
+ X.fakeConstructor$();
+}`);
});
it('translates arguments', () => {
- expectTranslate('@A(a, b) class X {}').to.equal(`@A(a, b)
-class X {}`);
+ expectTranslate('@A(a, b) class X {}').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+}`);
});
it('translates const arguments', () => {
- expectTranslate('@A([1]) class X {}').to.equal(`@A(const [1])
-class X {}`);
- expectTranslate('@A({"a": 1}) class X {}').to.equal(`@A(const {"a": 1})
-class X {}`);
- expectTranslate('@A(new B()) class X {}').to.equal(`@A(const B())
-class X {}`);
+ expectTranslate('@A([1]) class X {}').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+}`);
+ expectTranslate('@A({"a": 1}) class X {}').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+}`);
+ expectTranslate('@A(new B()) class X {}').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+}`);
});
it('translates on functions', () => {
- expectTranslate('@A function f() {}').to.equal(`@A
-f() {}`);
+ expectTranslate('@A function f() {}').to.equal(`@JS()
+external f();`);
});
it('translates on properties', () => {
- expectTranslate('class X { @A p; }').to.equal(`class X {
- @A
- var p;
+ expectTranslate('class X { @A p; }').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+ external get p;
+ external set p(v);
}`);
});
- it('translates on parameters',
- () => { expectTranslate('function f (@A p) {}').to.equal('f(@A p) {}'); });
- it('special cases @CONST', () => {
- expectTranslate('@CONST class X {}').to.equal(`class X {
- const X();
+ it('translates on parameters', () => {
+ expectTranslate('function f (@A p) {}').to.equal(`@JS()
+external f(p);`);
+ });
+ it('ignore special cases @CONST', () => {
+ expectTranslate('@CONST class X {}').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
}`);
- expectTranslate('@CONST() class X {}').to.equal(`class X {
- const X();
+ expectTranslate('@CONST() class X {}').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
}`);
expectTranslate(`@CONST class X {
x: number;
y;
constructor() { super(3); this.x = 1; this.y = 2; }
}`)
- .to.equal(`class X {
- final num x;
- final y;
- const X()
- : x = 1,
- y = 2,
- super(3);
+ .to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+ external num get x;
+ external set x(num v);
+ external get y;
+ external set y(v);
+ external factory X();
}`);
// @CONST constructors.
- expectTranslate('@CONST class X { constructor() {} }').to.equal(`class X {
- const X();
+ expectTranslate('@CONST class X { constructor() {} }').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+ external factory X();
}`);
// For backwards-compatibility for traceur inputs (not valid TS input)
- expectTranslate('class X { @CONST constructor() {} }').to.equal(`class X {
- const X();
+ expectTranslate('class X { @CONST constructor() {} }').to.equal(`@JS()
+class X {
+ // @Ignore
+ X.fakeConstructor$();
+ external factory X();
}`);
- expectErroneousCode('@CONST class X { constructor() { if (1); } }')
- .to.throw('const constructors can only contain assignments and super calls');
- expectErroneousCode('@CONST class X { constructor() { f(); } }')
- .to.throw('const constructors can only contain assignments and super calls');
- expectErroneousCode('@CONST class X { constructor() { "string literal"; } }')
- .to.throw('const constructors can only contain assignments and super calls');
- expectErroneousCode('class X { @CONST constructor() { x = 1; } }')
- .to.throw('assignments in const constructors must assign into this.');
- expectErroneousCode('class X { @CONST constructor() { thax = 1; } }')
- .to.throw('assignments in const constructors must assign into this.');
// @CONST properties.
- expectTranslate('class Foo { @CONST() static foo = 1; }').to.equal(`class Foo {
- static const foo = 1;
+ expectTranslate('class Foo { @CONST() static foo = 1; }').to.equal(`@JS()
+class Foo {
+ // @Ignore
+ Foo.fakeConstructor$();
+ external static get foo;
+ external static set foo(v);
}`);
});
});
« no previous file with comments | « test/declaration_test.ts ('k') | test/e2e/helloworld.ts » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698