Index: pkg/dev_compiler/lib/js/es6/dart_sdk.js |
diff --git a/pkg/dev_compiler/lib/js/es6/dart_sdk.js b/pkg/dev_compiler/lib/js/es6/dart_sdk.js |
index c16638f3fe3ac6dc4a1aa1d7a168dedc8b9a6ba1..bb1cb3586a7eae2df9efad353a52702000849de5 100644 |
--- a/pkg/dev_compiler/lib/js/es6/dart_sdk.js |
+++ b/pkg/dev_compiler/lib/js/es6/dart_sdk.js |
@@ -795,43 +795,48 @@ dart.flattenFutures = function(builder) { |
} |
return flatten; |
}; |
-dart.generic = function(typeConstructor) { |
- let length = typeConstructor.length; |
- if (length < 1) { |
- dart.throwInternalError('must have at least one generic type argument'); |
- } |
- let resultMap = new Map(); |
- function makeGenericType(...args) { |
- if (args.length != length && args.length != 0) { |
- dart.throwInternalError('requires ' + length + ' or 0 type arguments'); |
- } |
- while (args.length < length) |
- args.push(dart.dynamic); |
- let value = resultMap; |
- for (let i = 0; i < length; i++) { |
- let arg = args[i]; |
- if (arg == null) { |
- dart.throwInternalError('type arguments should not be null: ' + typeConstructor); |
- } |
- let map = value; |
- value = map.get(arg); |
- if (value === void 0) { |
- if (i + 1 == length) { |
- value = typeConstructor.apply(null, args); |
- if (value) { |
- value[dart._typeArguments] = args; |
- value[dart._originalDeclaration] = makeGenericType; |
+dart.generic = function(typeConstructor, setBaseClass) { |
+ if (setBaseClass === void 0) setBaseClass = null; |
+ return (() => { |
+ let length = typeConstructor.length; |
+ if (length < 1) { |
+ dart.throwInternalError('must have at least one generic type argument'); |
+ } |
+ let resultMap = new Map(); |
+ function makeGenericType(...args) { |
+ if (args.length != length && args.length != 0) { |
+ dart.throwInternalError('requires ' + length + ' or 0 type arguments'); |
+ } |
+ while (args.length < length) |
+ args.push(dart.dynamic); |
+ let value = resultMap; |
+ for (let i = 0; i < length; i++) { |
+ let arg = args[i]; |
+ if (arg == null) { |
+ dart.throwInternalError('type arguments should not be null: ' + typeConstructor); |
+ } |
+ let map = value; |
+ value = map.get(arg); |
+ if (value === void 0) { |
+ if (i + 1 == length) { |
+ value = typeConstructor.apply(null, args); |
+ if (value) { |
+ value[dart._typeArguments] = args; |
+ value[dart._originalDeclaration] = makeGenericType; |
+ } |
+ map.set(arg, value); |
+ if (setBaseClass) setBaseClass(value); |
+ } else { |
+ value = new Map(); |
+ map.set(arg, value); |
} |
- } else { |
- value = new Map(); |
} |
- map.set(arg, value); |
} |
+ return value; |
} |
- return value; |
- } |
- makeGenericType[dart._genericTypeCtor] = typeConstructor; |
- return makeGenericType; |
+ makeGenericType[dart._genericTypeCtor] = typeConstructor; |
+ return makeGenericType; |
+ })(); |
}; |
dart.getGenericClass = function(type) { |
return dart.safeGetOwnProperty(type, dart._originalDeclaration); |
@@ -26758,7 +26763,6 @@ collection._UserDoubleLinkedQueueEntry$ = dart.generic(E => { |
return this[_nextLink]; |
} |
} |
- dart.setBaseClass(_UserDoubleLinkedQueueEntry, collection._DoubleLink$(_UserDoubleLinkedQueueEntry)); |
_UserDoubleLinkedQueueEntry[dart.implements] = () => [DoubleLinkedQueueEntryOfE()]; |
dart.setSignature(_UserDoubleLinkedQueueEntry, { |
constructors: () => ({new: dart.definiteFunctionType(collection._UserDoubleLinkedQueueEntry$(E), [E])}), |
@@ -26772,6 +26776,8 @@ collection._UserDoubleLinkedQueueEntry$ = dart.generic(E => { |
}) |
}); |
return _UserDoubleLinkedQueueEntry; |
+}, _UserDoubleLinkedQueueEntry => { |
+ dart.setBaseClass(_UserDoubleLinkedQueueEntry, collection._DoubleLink$(_UserDoubleLinkedQueueEntry)); |
}); |
collection._UserDoubleLinkedQueueEntry = _UserDoubleLinkedQueueEntry(); |
const _queue = Symbol('_queue'); |
@@ -26801,7 +26807,6 @@ collection._DoubleLinkedQueueEntry$ = dart.generic(E => { |
return this[_previousLink][_asNonSentinelEntry](); |
} |
} |
- dart.setBaseClass(_DoubleLinkedQueueEntry, collection._DoubleLink$(_DoubleLinkedQueueEntry)); |
dart.setSignature(_DoubleLinkedQueueEntry, { |
constructors: () => ({new: dart.definiteFunctionType(collection._DoubleLinkedQueueEntry$(E), [DoubleLinkedQueueOfE()])}), |
fields: () => ({[_queue]: DoubleLinkedQueueOfE()}), |
@@ -26813,6 +26818,8 @@ collection._DoubleLinkedQueueEntry$ = dart.generic(E => { |
}) |
}); |
return _DoubleLinkedQueueEntry; |
+}, _DoubleLinkedQueueEntry => { |
+ dart.setBaseClass(_DoubleLinkedQueueEntry, collection._DoubleLink$(_DoubleLinkedQueueEntry)); |
}); |
collection._DoubleLinkedQueueEntry = _DoubleLinkedQueueEntry(); |
const _elementCount = Symbol('_elementCount'); |