Index: pkg/compiler/lib/src/compiler.dart |
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart |
index 2ba863e03eee8f1685d3169f2397b972b63a2ee5..ba6d703a1fe2ee4a7519cee9882c43e7cd7ddc0a 100644 |
--- a/pkg/compiler/lib/src/compiler.dart |
+++ b/pkg/compiler/lib/src/compiler.dart |
@@ -2420,21 +2420,32 @@ class _CompilerCoreTypes implements CoreTypes { |
InterfaceType get doubleType => doubleClass.computeType(compiler); |
@override |
- InterfaceType get functionType => functionClass.computeType(compiler); |
+ InterfaceType get functionType => functionClass.computeType(compiler); |
@override |
InterfaceType get intType => intClass.computeType(compiler); |
@override |
- InterfaceType listType([DartType elementType = const DynamicType()]) { |
- return listClass.computeType(compiler).createInstantiation([elementType]); |
+ InterfaceType listType([DartType elementType]) { |
+ InterfaceType type = listClass.computeType(compiler); |
+ if (elementType == null) { |
+ return listClass.rawType; |
+ } |
+ return type.createInstantiation([elementType]); |
} |
@override |
- InterfaceType mapType([DartType keyType = const DynamicType(), |
- DartType valueType = const DynamicType()]) { |
- return mapClass.computeType(compiler) |
- .createInstantiation([keyType, valueType]); |
+ InterfaceType mapType([DartType keyType, |
+ DartType valueType]) { |
+ InterfaceType type = mapClass.computeType(compiler); |
+ if (keyType == null && valueType == null) { |
+ return mapClass.rawType; |
+ } else if (keyType == null) { |
+ keyType = const DynamicType(); |
+ } else if (valueType == null) { |
+ valueType = const DynamicType(); |
+ } |
+ return type.createInstantiation([keyType, valueType]); |
} |
@override |
@@ -2447,22 +2458,36 @@ class _CompilerCoreTypes implements CoreTypes { |
InterfaceType get stringType => stringClass.computeType(compiler); |
@override |
+ InterfaceType get symbolType => symbolClass.computeType(compiler); |
+ |
+ @override |
InterfaceType get typeType => typeClass.computeType(compiler); |
@override |
- InterfaceType iterableType([DartType elementType = const DynamicType()]) { |
- return iterableClass.computeType(compiler) |
- .createInstantiation([elementType]); |
+ InterfaceType iterableType([DartType elementType]) { |
+ InterfaceType type = iterableClass.computeType(compiler); |
+ if (elementType == null) { |
+ return iterableClass.rawType; |
+ } |
+ return type.createInstantiation([elementType]); |
} |
@override |
- InterfaceType futureType([DartType elementType = const DynamicType()]) { |
- return futureClass.computeType(compiler).createInstantiation([elementType]); |
+ InterfaceType futureType([DartType elementType]) { |
+ InterfaceType type = futureClass.computeType(compiler); |
+ if (elementType == null) { |
+ return futureClass.rawType; |
+ } |
+ return type.createInstantiation([elementType]); |
} |
@override |
- InterfaceType streamType([DartType elementType = const DynamicType()]) { |
- return streamClass.computeType(compiler).createInstantiation([elementType]); |
+ InterfaceType streamType([DartType elementType]) { |
+ InterfaceType type = streamClass.computeType(compiler); |
+ if (elementType == null) { |
+ return streamClass.rawType; |
+ } |
+ return type.createInstantiation([elementType]); |
} |
} |