| Index: pkg/compiler/lib/src/resolution/members.dart | 
| diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart | 
| index 90600657b467c1ea883e6f6b9703e9e68f43a1d0..13bcdd9efe8687cf0b27d33cfa03095406a518ba 100644 | 
| --- a/pkg/compiler/lib/src/resolution/members.dart | 
| +++ b/pkg/compiler/lib/src/resolution/members.dart | 
| @@ -336,7 +336,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { | 
| if (Elements.isUnresolved(element) && name == 'dynamic') { | 
| // TODO(johnniwinther): Remove this hack when we can return more complex | 
| // objects than [Element] from this method. | 
| -        element = commonElements.typeClass; | 
| +        ClassElement typeClass = commonElements.typeClass; | 
| +        element = typeClass; | 
| // Set the type to be `dynamic` to mark that this is a type literal. | 
| registry.setType(node, const ResolutionDynamicType()); | 
| } | 
| @@ -2085,8 +2086,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { | 
| // directly on the constant expressions. | 
| node.isCall ? commonElements.typeType : type); | 
| AccessSemantics semantics = new ConstantAccess.dynamicTypeLiteral(constant); | 
| -    return handleConstantTypeLiteralAccess(node, const PublicName('dynamic'), | 
| -        commonElements.typeClass, type, semantics); | 
| +    ClassElement typeClass = commonElements.typeClass; | 
| +    return handleConstantTypeLiteralAccess( | 
| +        node, const PublicName('dynamic'), typeClass, type, semantics); | 
| } | 
|  | 
| /// Handle update to a type literal of the type 'dynamic'. Like `dynamic++` or | 
| @@ -2096,8 +2098,9 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { | 
| ConstantExpression constant = | 
| new TypeConstantExpression(const ResolutionDynamicType()); | 
| AccessSemantics semantics = new ConstantAccess.dynamicTypeLiteral(constant); | 
| -    return handleConstantTypeLiteralUpdate(node, const PublicName('dynamic'), | 
| -        commonElements.typeClass, type, semantics); | 
| +    ClassElement typeClass = commonElements.typeClass; | 
| +    return handleConstantTypeLiteralUpdate( | 
| +        node, const PublicName('dynamic'), typeClass, type, semantics); | 
| } | 
|  | 
| /// Handle access to a type literal of a class. Like `C` or | 
| @@ -3615,11 +3618,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { | 
| if (!currentAsyncMarker.isYielding) { | 
| reporter.reportErrorMessage(node, MessageKind.INVALID_YIELD); | 
| } | 
| +      ClassElement cls; | 
| if (currentAsyncMarker.isAsync) { | 
| -        commonElements.streamClass.ensureResolved(resolution); | 
| +        cls = commonElements.streamClass; | 
| } else { | 
| -        commonElements.iterableClass.ensureResolved(resolution); | 
| +        cls = commonElements.iterableClass; | 
| } | 
| +      cls.ensureResolved(resolution); | 
| } | 
| visit(node.expression); | 
| return const NoneResult(); | 
| @@ -3754,7 +3759,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { | 
| if (!currentAsyncMarker.isAsync) { | 
| reporter.reportErrorMessage(node, MessageKind.INVALID_AWAIT); | 
| } | 
| -      commonElements.futureClass.ensureResolved(resolution); | 
| +      ClassElement futureClass = commonElements.futureClass; | 
| +      futureClass.ensureResolved(resolution); | 
| } | 
| visit(node.expression); | 
| return const NoneResult(); | 
| @@ -4135,7 +4141,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { | 
| } | 
| } | 
| } | 
| -    ResolutionDartType listType; | 
| +    ResolutionInterfaceType listType; | 
| if (typeArgument != null) { | 
| if (node.isConst && typeArgument.containsTypeVariables) { | 
| reporter.reportErrorMessage( | 
| @@ -4438,7 +4444,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { | 
| } | 
| } | 
| } | 
| -    ResolutionDartType mapType; | 
| +    ResolutionInterfaceType mapType; | 
| if (valueTypeArgument != null) { | 
| mapType = commonElements.mapType(keyTypeArgument, valueTypeArgument); | 
| } else { | 
| @@ -4493,7 +4499,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { | 
| return visit(node.expression); | 
| } | 
|  | 
| -  ResolutionDartType typeOfConstant(ConstantValue constant) { | 
| +  ResolutionInterfaceType typeOfConstant(ConstantValue constant) { | 
| if (constant.isInt) return commonElements.intType; | 
| if (constant.isBool) return commonElements.boolType; | 
| if (constant.isDouble) return commonElements.doubleType; | 
|  |