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 f8742591e2afffb75565fef0c5385445bb24d29f..307240b98966eaf09b7f6e80dda841c46b0976aa 100644 |
--- a/pkg/compiler/lib/src/resolution/members.dart |
+++ b/pkg/compiler/lib/src/resolution/members.dart |
@@ -257,8 +257,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// not already `ConstantState.CONSTANT_INITIALIZER`. |
ResolutionResult visitInConstantContext(Node node) { |
ResolutionResult result = inConstantContext(() => visit(node)); |
- assert(invariant(node, result != null, |
- message: "No resolution result for $node.")); |
+ assert(result != null, failedAt(node, "No resolution result for $node.")); |
return result; |
} |
@@ -284,8 +283,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// |
/// The [ErroneousElement] corresponding to the message is returned. |
ErroneousElement reportCannotResolve(Node node, String name) { |
- assert(invariant(node, !inInstanceContext, |
- message: "ResolverVisitor.reportCannotResolve must not be called in " |
+ assert( |
+ !inInstanceContext, |
+ failedAt( |
+ node, |
+ "ResolverVisitor.reportCannotResolve must not be called in " |
"instance context.")); |
// We report an error within initializers because `this` is implicitly |
@@ -786,8 +788,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return new StaticAccess.superField(target); |
} |
} else { |
- assert(invariant(node, target.isFunction, |
- message: "Unexpected super target '$target'.")); |
+ assert(target.isFunction, |
+ failedAt(node, "Unexpected super target '$target'.")); |
return new StaticAccess.superMethod(target); |
} |
} |
@@ -801,20 +803,22 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
if (setter.isMalformed) { |
return new StaticAccess.unresolvedSuper(getter); |
} else if (setter.isFunction) { |
- assert(invariant(node, setter.name == '[]=', |
- message: "Unexpected super setter '$setter'.")); |
+ assert(setter.name == '[]=', |
+ failedAt(node, "Unexpected super setter '$setter'.")); |
return new CompoundAccessSemantics( |
CompoundAccessKind.UNRESOLVED_SUPER_GETTER, getter, setter); |
} else { |
- assert(invariant(node, setter.isSetter, |
- message: "Unexpected super setter '$setter'.")); |
+ assert(setter.isSetter, |
+ failedAt(node, "Unexpected super setter '$setter'.")); |
return new CompoundAccessSemantics( |
CompoundAccessKind.UNRESOLVED_SUPER_GETTER, getter, setter); |
} |
} else if (getter.isField) { |
if (setter.isMalformed) { |
- assert(invariant(node, getter.isFinal, |
- message: "Unexpected super setter '$setter' for getter '$getter.")); |
+ assert( |
+ getter.isFinal, |
+ failedAt(node, |
+ "Unexpected super setter '$setter' for getter '$getter.")); |
return new StaticAccess.superFinalField(getter); |
} else if (setter.isField) { |
if (getter == setter) { |
@@ -827,8 +831,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// Either the field is accessible directly, or a setter shadows the |
// setter access. If there was another instance member it would shadow |
// the field. |
- assert(invariant(node, setter.isSetter, |
- message: "Unexpected super setter '$setter'.")); |
+ assert(setter.isSetter, |
+ failedAt(node, "Unexpected super setter '$setter'.")); |
return new CompoundAccessSemantics( |
CompoundAccessKind.SUPER_FIELD_SETTER, getter, setter); |
} |
@@ -840,14 +844,14 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return new CompoundAccessSemantics( |
CompoundAccessKind.SUPER_GETTER_FIELD, getter, setter); |
} else { |
- assert(invariant(node, setter.isSetter, |
- message: "Unexpected super setter '$setter'.")); |
+ assert(setter.isSetter, |
+ failedAt(node, "Unexpected super setter '$setter'.")); |
return new CompoundAccessSemantics( |
CompoundAccessKind.SUPER_GETTER_SETTER, getter, setter); |
} |
} else { |
- assert(invariant(node, getter.isFunction, |
- message: "Unexpected super getter '$getter'.")); |
+ assert(getter.isFunction, |
+ failedAt(node, "Unexpected super getter '$getter'.")); |
if (setter.isMalformed) { |
if (isIndex) { |
return new CompoundAccessSemantics( |
@@ -856,15 +860,15 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return new StaticAccess.superMethod(getter); |
} |
} else if (setter.isFunction) { |
- assert(invariant(node, setter.name == '[]=', |
- message: "Unexpected super setter '$setter'.")); |
- assert(invariant(node, getter.name == '[]', |
- message: "Unexpected super getter '$getter'.")); |
+ assert(setter.name == '[]=', |
+ failedAt(node, "Unexpected super setter '$setter'.")); |
+ assert(getter.name == '[]', |
+ failedAt(node, "Unexpected super getter '$getter'.")); |
return new CompoundAccessSemantics( |
CompoundAccessKind.SUPER_GETTER_SETTER, getter, setter); |
} else { |
- assert(invariant(node, setter.isSetter, |
- message: "Unexpected super setter '$setter'.")); |
+ assert(setter.isSetter, |
+ failedAt(node, "Unexpected super setter '$setter'.")); |
return new CompoundAccessSemantics( |
CompoundAccessKind.SUPER_METHOD_SETTER, getter, setter); |
} |
@@ -889,8 +893,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return new StaticAccess.localVariable(target); |
} |
} else { |
- assert(invariant(node, target.isFunction, |
- message: "Unexpected local target '$target'.")); |
+ assert(target.isFunction, |
+ failedAt(node, "Unexpected local target '$target'.")); |
return new StaticAccess.localFunction(target); |
} |
} |
@@ -916,13 +920,13 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return new StaticAccess.staticField(target); |
} |
} else { |
- assert(invariant(node, target.isFunction, |
- message: "Unexpected static target '$target'.")); |
+ assert(target.isFunction, |
+ failedAt(node, "Unexpected static target '$target'.")); |
return new StaticAccess.staticMethod(target); |
} |
} else { |
- assert(invariant(node, target.isTopLevel, |
- message: "Unexpected statically resolved target '$target'.")); |
+ assert(target.isTopLevel, |
+ failedAt(node, "Unexpected statically resolved target '$target'.")); |
if (target.isGetter) { |
return new StaticAccess.topLevelGetter(target); |
} else if (target.isSetter) { |
@@ -934,8 +938,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return new StaticAccess.topLevelField(target); |
} |
} else { |
- assert(invariant(node, target.isFunction, |
- message: "Unexpected top level target '$target'.")); |
+ assert(target.isFunction, |
+ failedAt(node, "Unexpected top level target '$target'.")); |
return new StaticAccess.topLevelMethod(target); |
} |
} |
@@ -1232,7 +1236,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle a not expression, like `!a`. |
ResolutionResult handleNot(Send node, UnaryOperator operator) { |
- assert(invariant(node, operator.kind == UnaryOperatorKind.NOT)); |
+ assert(operator.kind == UnaryOperatorKind.NOT, failedAt(node)); |
Node expression = node.receiver; |
ResolutionResult result = visitExpression(expression); |
@@ -1491,8 +1495,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Handle an invocation of an expression, like `(){}()` or `(foo)()`. |
ResolutionResult handleExpressionInvoke(Send node) { |
- assert( |
- invariant(node, node.isCall, message: "Unexpected expression: $node")); |
+ assert(node.isCall, failedAt(node, "Unexpected expression: $node")); |
Node expression = node.selector; |
visitExpression(expression); |
CallStructure callStructure = |
@@ -1662,8 +1665,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
return handleNot(node, operator); |
case UnaryOperatorKind.COMPLEMENT: |
case UnaryOperatorKind.NEGATE: |
- assert(invariant(node, operator.isUserDefinable, |
- message: "Unexpected unary operator '${operator}'.")); |
+ assert(operator.isUserDefinable, |
+ failedAt(node, "Unexpected unary operator '${operator}'.")); |
return handleUserDefinableUnary(node, operator); |
} |
} |
@@ -2146,11 +2149,11 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
/// Compute a [DeferredPrefixStructure] for [node]. |
ResolutionResult handleDeferredAccess( |
Send node, PrefixElement prefix, ResolutionResult result) { |
- assert(invariant(node, prefix.isDeferred, |
- message: "Prefix $prefix is not deferred.")); |
+ assert( |
+ prefix.isDeferred, failedAt(node, "Prefix $prefix is not deferred.")); |
SendStructure sendStructure = registry.getSendStructure(node); |
- assert(invariant(node, sendStructure != null, |
- message: "No SendStructure for $node.")); |
+ assert( |
+ sendStructure != null, failedAt(node, "No SendStructure for $node.")); |
registry.registerSendStructure( |
node, new DeferredPrefixStructure(prefix, sendStructure)); |
if (result.isConstant) { |
@@ -2297,7 +2300,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.registerDynamicUse(new DynamicUse(selector, null)); |
sendStructure = new InvokeStructure(semantics, selector); |
} else { |
- assert(invariant(node, node.isPropertyAccess)); |
+ assert(node.isPropertyAccess, failedAt(node)); |
selector = new Selector.getter(name); |
registry.registerDynamicUse(new DynamicUse(selector, null)); |
sendStructure = new GetStructure(semantics); |
@@ -2441,7 +2444,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
registry.registerDynamicUse(new DynamicUse(selector, null)); |
sendStructure = new InvokeStructure(semantics, selector); |
} else { |
- assert(invariant(node, node.isPropertyAccess)); |
+ assert(node.isPropertyAccess, failedAt(node)); |
selector = new Selector.getter(name); |
registry.registerDynamicUse(new DynamicUse(selector, null)); |
sendStructure = new GetStructure(semantics); |
@@ -2606,8 +2609,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
semantics = new StaticAccess.localVariable(element); |
} |
} else { |
- assert(invariant(node, element.isFunction, |
- message: "Unexpected local $element.")); |
+ assert(element.isFunction, failedAt(node, "Unexpected local $element.")); |
error = reportAndCreateErroneousElement( |
node.selector, name.text, MessageKind.ASSIGNING_METHOD, const {}); |
semantics = new StaticAccess.localFunction(element); |
@@ -2858,8 +2860,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
: new StaticAccess.staticMethod(method); |
} else { |
// `a = b`, `a++` or `a += b` where `a` is a field. |
- assert(invariant(node, member.isField, |
- message: "Unexpected element: $member.")); |
+ assert(member.isField, failedAt(node, "Unexpected element: $member.")); |
if (node.isComplex) { |
// `a++` or `a += b` where `a` is a field. |
registry.registerStaticUse(new StaticUse.staticGet(member)); |
@@ -2889,8 +2890,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
if (element.isMalformed) { |
// This handles elements with parser errors. |
- assert(invariant(node, element is! ErroneousElement, |
- message: "Unexpected erroneous element $element.")); |
+ assert(element is! ErroneousElement, |
+ failedAt(node, "Unexpected erroneous element $element.")); |
return handleErroneousAccess( |
node, name, new StaticAccess.unresolved(element)); |
} |
@@ -2929,8 +2930,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
if (element.isMalformed) { |
// This handles elements with parser errors.. |
- assert(invariant(node, element is! ErroneousElement, |
- message: "Unexpected erroneous element $element.")); |
+ assert(element is! ErroneousElement, |
+ failedAt(node, "Unexpected erroneous element $element.")); |
return handleUpdate(node, name, new StaticAccess.unresolved(element)); |
} |
if (element.isInstanceMember) { |
@@ -4059,7 +4060,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
.compileNode(node, registry.mapping, enforceConst: enforceConst); |
if (constant == null) { |
- assert(invariant(node, reporter.hasReportedError)); |
+ assert(reporter.hasReportedError, failedAt(node)); |
return; |
} |
@@ -4383,7 +4384,7 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
} |
} else { |
// The selector may only be null if we reported an error. |
- assert(invariant(declaration, reporter.hasReportedError)); |
+ assert(reporter.hasReportedError, failedAt(declaration)); |
} |
if (loopVariable != null) { |
// loopVariable may be null if it could not be resolved. |
@@ -4544,8 +4545,8 @@ class ResolverVisitor extends MappingVisitor<ResolutionResult> { |
// Analyze the constant. |
ConstantExpression constant = |
registry.getConstant(caseMatch.expression); |
- assert(invariant(node, constant != null, |
- message: 'No constant computed for $node')); |
+ assert( |
+ constant != null, failedAt(node, 'No constant computed for $node')); |
ConstantValue value = resolution.constants.getConstantValue(constant); |
ResolutionDartType caseType = |