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 46294f78446e0db19c911165f7576719ff74180d..4f7777d0ff0f391cff9fb4e5d9be12f78a5b6762 100644 |
--- a/pkg/compiler/lib/src/resolution/members.dart |
+++ b/pkg/compiler/lib/src/resolution/members.dart |
@@ -499,6 +499,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
} |
+ ResolutionResult visitAssert(Assert node) { |
+ registry.registerAssert(node.hasMessage); |
+ visit(node.condition); |
+ visit(node.message); |
+ return const NoneResult(); |
+ } |
+ |
ResolutionResult visitCascade(Cascade node) { |
visit(node.expression); |
return const NoneResult(); |
@@ -1526,34 +1533,6 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return const NoneResult(); |
} |
- /// Handle a, possibly invalid, assertion, like `assert(cond)` or `assert()`. |
- ResolutionResult handleAssert(Send node) { |
- assert(invariant(node, node.isCall, |
- message: "Unexpected assert: $node")); |
- // If this send is of the form "assert(expr);", then |
- // this is an assertion. |
- |
- CallStructure callStructure = |
- resolveArguments(node.argumentsNode).callStructure; |
- SendStructure sendStructure = const AssertStructure(); |
- if (callStructure.argumentCount != 1) { |
- compiler.reportError( |
- node.selector, |
- MessageKind.WRONG_NUMBER_OF_ARGUMENTS_FOR_ASSERT, |
- {'argumentCount': callStructure.argumentCount}); |
- sendStructure = const InvalidAssertStructure(); |
- } else if (callStructure.namedArgumentCount != 0) { |
- compiler.reportError( |
- node.selector, |
- MessageKind.ASSERT_IS_GIVEN_NAMED_ARGUMENTS, |
- {'argumentCount': callStructure.namedArgumentCount}); |
- sendStructure = const InvalidAssertStructure(); |
- } |
- registry.registerAssert(node); |
- registry.registerSendStructure(node, sendStructure); |
- return const AssertResult(); |
- } |
- |
/// Handle access of a property of [name] on `this`, like `this.name` and |
/// `this.name()`, or `name` and `name()` in instance context. |
ResolutionResult handleThisPropertyAccess(Send node, Name name) { |
@@ -3027,10 +3006,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return handleExpressionInvoke(node); |
} |
String text = selector.source; |
- if (text == 'assert') { |
- // `assert()`. |
- return handleAssert(node); |
- } else if (text == 'this') { |
+ if (text == 'this') { |
// `this()`. |
return handleThisAccess(node); |
} |