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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart2js; 5 part of dart2js;
6 6
7 /** 7 /**
8 * If true, print a warning for each method that was resolved, but not 8 * If true, print a warning for each method that was resolved, but not
9 * compiled. 9 * compiled.
10 */ 10 */
(...skipping 2402 matching lines...) Expand 10 before | Expand all | Expand 10 after
2413 @override 2413 @override
2414 InterfaceType get objectType => objectClass.computeType(compiler); 2414 InterfaceType get objectType => objectClass.computeType(compiler);
2415 2415
2416 @override 2416 @override
2417 InterfaceType get boolType => boolClass.computeType(compiler); 2417 InterfaceType get boolType => boolClass.computeType(compiler);
2418 2418
2419 @override 2419 @override
2420 InterfaceType get doubleType => doubleClass.computeType(compiler); 2420 InterfaceType get doubleType => doubleClass.computeType(compiler);
2421 2421
2422 @override 2422 @override
2423 InterfaceType get functionType => functionClass.computeType(compiler); 2423 InterfaceType get functionType => functionClass.computeType(compiler);
2424 2424
2425 @override 2425 @override
2426 InterfaceType get intType => intClass.computeType(compiler); 2426 InterfaceType get intType => intClass.computeType(compiler);
2427 2427
2428 @override 2428 @override
2429 InterfaceType listType([DartType elementType = const DynamicType()]) { 2429 InterfaceType listType([DartType elementType]) {
2430 return listClass.computeType(compiler).createInstantiation([elementType]); 2430 InterfaceType type = listClass.computeType(compiler);
2431 if (elementType == null) {
2432 return listClass.rawType;
2433 }
2434 return type.createInstantiation([elementType]);
2431 } 2435 }
2432 2436
2433 @override 2437 @override
2434 InterfaceType mapType([DartType keyType = const DynamicType(), 2438 InterfaceType mapType([DartType keyType,
2435 DartType valueType = const DynamicType()]) { 2439 DartType valueType]) {
2436 return mapClass.computeType(compiler) 2440 InterfaceType type = mapClass.computeType(compiler);
2437 .createInstantiation([keyType, valueType]); 2441 if (keyType == null && valueType == null) {
2442 return mapClass.rawType;
2443 } else if (keyType == null) {
2444 keyType = const DynamicType();
2445 } else if (valueType == null) {
2446 valueType = const DynamicType();
2447 }
2448 return type.createInstantiation([keyType, valueType]);
2438 } 2449 }
2439 2450
2440 @override 2451 @override
2441 InterfaceType get nullType => nullClass.computeType(compiler); 2452 InterfaceType get nullType => nullClass.computeType(compiler);
2442 2453
2443 @override 2454 @override
2444 InterfaceType get numType => numClass.computeType(compiler); 2455 InterfaceType get numType => numClass.computeType(compiler);
2445 2456
2446 @override 2457 @override
2447 InterfaceType get stringType => stringClass.computeType(compiler); 2458 InterfaceType get stringType => stringClass.computeType(compiler);
2448 2459
2449 @override 2460 @override
2461 InterfaceType get symbolType => symbolClass.computeType(compiler);
2462
2463 @override
2450 InterfaceType get typeType => typeClass.computeType(compiler); 2464 InterfaceType get typeType => typeClass.computeType(compiler);
2451 2465
2452 @override 2466 @override
2453 InterfaceType iterableType([DartType elementType = const DynamicType()]) { 2467 InterfaceType iterableType([DartType elementType]) {
2454 return iterableClass.computeType(compiler) 2468 InterfaceType type = iterableClass.computeType(compiler);
2455 .createInstantiation([elementType]); 2469 if (elementType == null) {
2470 return iterableClass.rawType;
2471 }
2472 return type.createInstantiation([elementType]);
2456 } 2473 }
2457 2474
2458 @override 2475 @override
2459 InterfaceType futureType([DartType elementType = const DynamicType()]) { 2476 InterfaceType futureType([DartType elementType]) {
2460 return futureClass.computeType(compiler).createInstantiation([elementType]); 2477 InterfaceType type = futureClass.computeType(compiler);
2478 if (elementType == null) {
2479 return futureClass.rawType;
2480 }
2481 return type.createInstantiation([elementType]);
2461 } 2482 }
2462 2483
2463 @override 2484 @override
2464 InterfaceType streamType([DartType elementType = const DynamicType()]) { 2485 InterfaceType streamType([DartType elementType]) {
2465 return streamClass.computeType(compiler).createInstantiation([elementType]); 2486 InterfaceType type = streamClass.computeType(compiler);
2487 if (elementType == null) {
2488 return streamClass.rawType;
2489 }
2490 return type.createInstantiation([elementType]);
2466 } 2491 }
2467 } 2492 }
2468 2493
2469 typedef void InternalErrorFunction(Spannable location, String message); 2494 typedef void InternalErrorFunction(Spannable location, String message);
OLDNEW
« 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