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

Unified Diff: pkg/compiler/lib/src/compiler.dart

Issue 1170673002: Begin to compute constant expressions in resolution. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix BinaryConstantExpression.getKnownType Created 5 years, 6 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 | « pkg/compiler/lib/src/compile_time_constants.dart ('k') | pkg/compiler/lib/src/constants/expressions.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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]);
}
}
« no previous file with comments | « pkg/compiler/lib/src/compile_time_constants.dart ('k') | pkg/compiler/lib/src/constants/expressions.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698