3886194414
The following part files were ported from the original .js (lib/runtime/dart/_foo.js -> input_sdk/private/foo.dart):
- input_sdk/private/rtti.dart
- input_sdk/private/types.dart
- input_sdk/private/classes.dart
- input_sdk/private/errors.dart
- input_sdk/private/generators.dart
- input_sdk/private/operations.dart
- input_sdk/private/runtime.dart
Notes:
- Introduced genericTypeConstructor intrinsic: `JS('', '#(type)', genericTypeConstructor(List))` generates `core.List$(type)`
- Used new JS quasiquotes everywhere
- Depends on new internal `@JSExportName` annotation to alias symbols like dart.{as, is, const, assert, export, implements, throw, async, dynamic, void} (see https://codereview.chromium.org/1580413002/)
BUG=
R=jmesserly@google.com
Review URL: https://codereview.chromium.org/1530563003 .
139 lines
3.5 KiB
JavaScript
139 lines
3.5 KiB
JavaScript
dart_library.library('fieldtest', null, /* Imports */[
|
|
'dart/_runtime',
|
|
'dart/core'
|
|
], /* Lazy imports */[
|
|
], function(exports, dart, core) {
|
|
'use strict';
|
|
let dartx = dart.dartx;
|
|
class A extends core.Object {
|
|
A() {
|
|
this.x = 42;
|
|
}
|
|
}
|
|
const B$ = dart.generic(function(T) {
|
|
class B extends core.Object {
|
|
B() {
|
|
this.x = null;
|
|
this.y = null;
|
|
this.z = null;
|
|
}
|
|
}
|
|
return B;
|
|
});
|
|
let B = B$();
|
|
function foo(a) {
|
|
core.print(a.x);
|
|
return a.x;
|
|
}
|
|
dart.fn(foo, core.int, [A]);
|
|
function bar(a) {
|
|
core.print(dart.dload(a, 'x'));
|
|
return dart.as(dart.dload(a, 'x'), core.int);
|
|
}
|
|
dart.fn(bar, core.int, [dart.dynamic]);
|
|
function baz(a) {
|
|
return a.x;
|
|
}
|
|
dart.fn(baz, dart.dynamic, [A]);
|
|
function compute() {
|
|
return 123;
|
|
}
|
|
dart.fn(compute, core.int, []);
|
|
dart.defineLazyProperties(exports, {
|
|
get y() {
|
|
return dart.notNull(compute()) + 444;
|
|
},
|
|
set y(_) {}
|
|
});
|
|
dart.copyProperties(exports, {
|
|
get q() {
|
|
return 'life, ' + 'the universe ' + 'and everything';
|
|
},
|
|
get z() {
|
|
return 42;
|
|
},
|
|
set z(value) {
|
|
exports.y = dart.as(value, core.int);
|
|
}
|
|
});
|
|
class BaseWithGetter extends core.Object {
|
|
get foo() {
|
|
return 1;
|
|
}
|
|
}
|
|
class Derived extends BaseWithGetter {
|
|
Derived() {
|
|
this.foo = 2;
|
|
this.bar = 3;
|
|
}
|
|
}
|
|
dart.virtualField(Derived, 'foo');
|
|
const Generic$ = dart.generic(function(T) {
|
|
class Generic extends core.Object {
|
|
foo(t) {
|
|
dart.as(t, T);
|
|
return core.print(dart.notNull(Generic$().bar) + dart.notNull(dart.as(t, core.String)));
|
|
}
|
|
}
|
|
dart.setSignature(Generic, {
|
|
methods: () => ({foo: [dart.dynamic, [T]]})
|
|
});
|
|
return Generic;
|
|
});
|
|
let Generic = Generic$();
|
|
Generic.bar = 'hello';
|
|
class StaticFieldOrder1 extends core.Object {}
|
|
StaticFieldOrder1.d = 4;
|
|
StaticFieldOrder1.c = dart.notNull(StaticFieldOrder1.d) + 2;
|
|
StaticFieldOrder1.b = dart.notNull(StaticFieldOrder1.c) + 3;
|
|
StaticFieldOrder1.a = dart.notNull(StaticFieldOrder1.b) + 1;
|
|
class StaticFieldOrder2 extends core.Object {}
|
|
StaticFieldOrder2.d = 4;
|
|
StaticFieldOrder2.c = dart.notNull(StaticFieldOrder2.d) + 2;
|
|
StaticFieldOrder2.b = dart.notNull(StaticFieldOrder2.c) + 3;
|
|
StaticFieldOrder2.a = dart.notNull(StaticFieldOrder2.b) + 1;
|
|
class MyEnum extends core.Object {
|
|
MyEnum(index) {
|
|
this.index = index;
|
|
}
|
|
toString() {
|
|
return {
|
|
0: "MyEnum.Val1",
|
|
1: "MyEnum.Val2",
|
|
2: "MyEnum.Val3",
|
|
3: "MyEnum.Val4"
|
|
}[this.index];
|
|
}
|
|
};
|
|
MyEnum.Val1 = dart.const(new MyEnum(0));
|
|
MyEnum.Val2 = dart.const(new MyEnum(1));
|
|
MyEnum.Val3 = dart.const(new MyEnum(2));
|
|
MyEnum.Val4 = dart.const(new MyEnum(3));
|
|
MyEnum.values = dart.const(dart.list([MyEnum.Val1, MyEnum.Val2, MyEnum.Val3, MyEnum.Val4], MyEnum));
|
|
function main() {
|
|
let a = new A();
|
|
foo(a);
|
|
bar(a);
|
|
core.print(baz(a));
|
|
core.print(new (Generic$(core.String))().foo(' world'));
|
|
core.print(MyEnum.values);
|
|
}
|
|
dart.fn(main, dart.void, []);
|
|
// Exports:
|
|
exports.A = A;
|
|
exports.B$ = B$;
|
|
exports.B = B;
|
|
exports.foo = foo;
|
|
exports.bar = bar;
|
|
exports.baz = baz;
|
|
exports.compute = compute;
|
|
exports.BaseWithGetter = BaseWithGetter;
|
|
exports.Derived = Derived;
|
|
exports.Generic$ = Generic$;
|
|
exports.Generic = Generic;
|
|
exports.StaticFieldOrder1 = StaticFieldOrder1;
|
|
exports.StaticFieldOrder2 = StaticFieldOrder2;
|
|
exports.MyEnum = MyEnum;
|
|
exports.main = main;
|
|
});
|