Index: sdk/lib/_internal/compiler/implementation/typechecker.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/typechecker.dart b/sdk/lib/_internal/compiler/implementation/typechecker.dart |
index 5249a6e768f1605a59f42c4c22383764282bac2d..45c07ad10891be4fa93bba46c1470554493d53d3 100644 |
--- a/sdk/lib/_internal/compiler/implementation/typechecker.dart |
+++ b/sdk/lib/_internal/compiler/implementation/typechecker.dart |
@@ -340,7 +340,7 @@ class TypeCheckerVisitor extends Visitor<DartType> { |
DartType previous = expectedReturnType; |
expectedReturnType = returnType; |
StatementType bodyType = analyze(node.body); |
- if (returnType != types.voidType && returnType != types.dynamicType |
+ if (returnType != types.voidType && !returnType.treatAsDynamic |
&& bodyType != StatementType.RETURNING) { |
MessageKind kind; |
if (bodyType == StatementType.MAYBE_RETURNING) { |
@@ -394,7 +394,7 @@ class TypeCheckerVisitor extends Visitor<DartType> { |
ElementAccess lookupMember(Node node, DartType type, SourceString name, |
MemberKind memberKind) { |
- if (identical(type, types.dynamicType)) { |
+ if (type.treatAsDynamic) { |
return const DynamicAccess(); |
} |
Member member = type.lookupMember(name, |
@@ -552,9 +552,7 @@ class TypeCheckerVisitor extends Visitor<DartType> { |
} |
// e.foo() for some expression e. |
DartType receiverType = analyze(node.receiver); |
- if (receiverType.isDynamic || |
- receiverType.isMalformed || |
- receiverType.isVoid) { |
+ if (receiverType.treatAsDynamic || receiverType.isVoid) { |
return const DynamicAccess(); |
} |
TypeKind receiverKind = receiverType.kind; |