| Index: pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
|
| diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
|
| index 11c0c46e23cdd64e4dff9cb77cefad0cd35c2e24..7ec9c3d9b75bff0129bc1c2d1c927300562e4b4d 100644
|
| --- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
|
| +++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
|
| @@ -308,7 +308,8 @@ class FunctionType extends AbstractFunctionType {
|
| List args;
|
| List optionals;
|
| final named;
|
| - dynamic metadata;
|
| + // TODO(vsm): This is just parameter metadata for now.
|
| + List metadata = [];
|
| String _stringValue;
|
|
|
| /**
|
| @@ -356,13 +357,13 @@ class FunctionType extends AbstractFunctionType {
|
| return _memoizeArray(_fnTypeTypeMap, keys, create);
|
| }
|
|
|
| - List _process(List array, metadata) {
|
| + List _process(List array) {
|
| var result = [];
|
| for (var i = 0; JS('bool', '# < #.length', i, array); ++i) {
|
| var arg = JS('', '#[#]', array, i);
|
| if (JS('bool', '# instanceof Array', arg)) {
|
| - metadata.add(JS('', '#.slice(1)', arg));
|
| - result.add(JS('', '#[0]', arg));
|
| + JS('', '#.push(#.slice(1))', metadata, arg);
|
| + JS('', '#.push(#[0])', result, arg);
|
| } else {
|
| JS('', '#.push([])', metadata);
|
| JS('', '#.push(#)', result, arg);
|
| @@ -372,10 +373,8 @@ class FunctionType extends AbstractFunctionType {
|
| }
|
|
|
| FunctionType(this.returnType, this.args, this.optionals, this.named) {
|
| - // TODO(vsm): This is just parameter metadata for now.
|
| - metadata = [];
|
| - this.args = _process(this.args, metadata);
|
| - this.optionals = _process(this.optionals, metadata);
|
| + this.args = _process(this.args);
|
| + this.optionals = _process(this.optionals);
|
| // TODO(vsm): Add named arguments.
|
| }
|
|
|
| @@ -425,16 +424,18 @@ class FunctionType extends AbstractFunctionType {
|
|
|
| class Typedef extends AbstractFunctionType {
|
| dynamic _name;
|
| - dynamic _closure;
|
| + AbstractFunctionType Function() _closure;
|
| AbstractFunctionType _functionType;
|
|
|
| Typedef(this._name, this._closure) {}
|
|
|
| - toString() => JS('', '# + "(" + #.toString() + ")"', _name, functionType);
|
| + toString() =>
|
| + JS('String', '# + "(" + #.toString() + ")"', _name, functionType);
|
| get name => _name;
|
|
|
| AbstractFunctionType get functionType {
|
| - return _functionType ??= JS('', '#()', _closure);
|
| + var ft = _functionType;
|
| + return ft == null ? _functionType = _closure() : ft;
|
| }
|
| }
|
|
|
| @@ -601,7 +602,8 @@ class GenericFunctionType extends AbstractFunctionType {
|
| }
|
| }
|
|
|
| -typedef(name, closure) => new Typedef(name, closure);
|
| +typedef(name, AbstractFunctionType Function() closure) =>
|
| + new Typedef(name, closure);
|
|
|
| /// Create a definite function type.
|
| ///
|
|
|