| 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 c009b7a6fefa6a02c3bdcc38e246a253ccc9d55b..86465be722e11a3ce3460b1ccc53dc890a6471ac 100644
|
| --- a/pkg/compiler/lib/src/resolution/members.dart
|
| +++ b/pkg/compiler/lib/src/resolution/members.dart
|
| @@ -456,9 +456,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| resolver.constantCompiler.compileConstant(parameter);
|
| });
|
| });
|
| - registry.registerCheckedModeCheck(functionSignature.returnType);
|
| + if (!functionSignature.returnType.isDynamic) {
|
| + registry.registerTypeUse(
|
| + new TypeUse.checkedModeCheck(functionSignature.returnType));
|
| + }
|
| functionSignature.forEachParameter((ParameterElement element) {
|
| - registry.registerCheckedModeCheck(element.type);
|
| + if (!element.type.isDynamic) {
|
| + registry.registerTypeUse(new TypeUse.checkedModeCheck(element.type));
|
| + }
|
| });
|
| }
|
|
|
| @@ -2350,8 +2355,6 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (result.kind == ResultKind.PREFIX) {
|
| return handlePrefixSend(node, name, result);
|
| } else if (node.isConditional) {
|
| - registry.registerConstantLiteral(new NullConstantExpression());
|
| - registry.registerDynamicUse(new DynamicUse(Selectors.equals, null));
|
| return handleDynamicAccessSemantics(
|
| node, name, new DynamicAccess.ifNotNullProperty(name));
|
| } else {
|
| @@ -2385,8 +2388,6 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| if (result.kind == ResultKind.PREFIX) {
|
| return handlePrefixSendSet(node, name, result);
|
| } else if (node.isConditional) {
|
| - registry.registerConstantLiteral(new NullConstantExpression());
|
| - registry.registerDynamicUse(new DynamicUse(Selectors.equals, null));
|
| return handleDynamicUpdateSemantics(
|
| node, name, null, new DynamicAccess.ifNotNullProperty(name));
|
| } else {
|
| @@ -4079,8 +4080,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| DartType type = typeResolver.resolveTypeAnnotation(this, node,
|
| malformedIsError: malformedIsError,
|
| deferredIsMalformed: deferredIsMalformed);
|
| - if (registerCheckedModeCheck) {
|
| - registry.registerCheckedModeCheck(type);
|
| + if (registerCheckedModeCheck && !type.isDynamic) {
|
| + registry.registerTypeUse(new TypeUse.checkedModeCheck(type));
|
| }
|
| return type;
|
| }
|
| @@ -4606,11 +4607,10 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> {
|
| }
|
| if (cases.isNotEmpty && switchCase.statements.isNotEmpty) {
|
| Node last = switchCase.statements.last;
|
| - if (last.asReturn() == null &&
|
| - last.asBreakStatement() == null &&
|
| + if (last.asBreakStatement() == null &&
|
| last.asContinueStatement() == null &&
|
| - (last.asExpressionStatement() == null ||
|
| - last.asExpressionStatement().expression.asThrow() == null)) {
|
| + last.asThrow() == null &&
|
| + last.asReturn() == null) {
|
| registry.registerFeature(Feature.FALL_THROUGH_ERROR);
|
| }
|
| }
|
|
|