| Index: pkg/compiler/lib/src/compile_time_constants.dart | 
| diff --git a/pkg/compiler/lib/src/compile_time_constants.dart b/pkg/compiler/lib/src/compile_time_constants.dart | 
| index a1c37688a01b33dd4361e689ec7eab00fda1fd89..848ea68f32d6db5a23ea0694460aa9e615b1543a 100644 | 
| --- a/pkg/compiler/lib/src/compile_time_constants.dart | 
| +++ b/pkg/compiler/lib/src/compile_time_constants.dart | 
| @@ -248,6 +248,10 @@ abstract class ConstantCompilerBase implements ConstantCompiler { | 
| return expression; | 
| } | 
|  | 
| +  void cacheConstantValue(ConstantExpression expression, ConstantValue value) { | 
| +    constantValueMap[expression] = value; | 
| +  } | 
| + | 
| ConstantExpression compileNodeWithDefinitions(Node node, | 
| TreeElements definitions, | 
| {bool isConst: true}) { | 
| @@ -256,7 +260,7 @@ abstract class ConstantCompilerBase implements ConstantCompiler { | 
| this, definitions, compiler, isConst: isConst); | 
| AstConstant constant = evaluator.evaluate(node); | 
| if (constant != null) { | 
| -      constantValueMap[constant.expression] = constant.value; | 
| +      cacheConstantValue(constant.expression, constant.value); | 
| return constant.expression; | 
| } | 
| return null; | 
| @@ -302,7 +306,7 @@ class DartConstantCompiler extends ConstantCompilerBase { | 
| TreeElements definitions, | 
| {bool isConst: true}) { | 
| ConstantExpression constant = definitions.getConstant(node); | 
| -    if (constant != null) { | 
| +    if (constant != null && getConstantValue(constant) != null) { | 
| return constant; | 
| } | 
| constant = | 
|  |