Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1443)

Unified Diff: pkg/compiler/lib/src/ssa/builder.dart

Issue 1325843003: Add optional message to assert in Dart2js. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Address comments Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/ssa/builder.dart
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
index 4a2f3e0de7ed64455e5387e51c9ff41b48e6a96d..9753787f7110b16d77dc54d53d526b9ebcd3a39d 100644
--- a/pkg/compiler/lib/src/ssa/builder.dart
+++ b/pkg/compiler/lib/src/ssa/builder.dart
@@ -2589,6 +2589,31 @@ class SsaBuilder extends ast.Visitor
return pop();
}
+ visitAssert(ast.Assert node) {
+ if (!compiler.enableUserAssertions) return;
+
+ void buildCondition() {
+ visit(node.condition);
+ var arguments = [pop()];
+ pushInvokeStatic(node, backend.assertConditionHelperMethod, arguments);
+ }
+ void fail() {
+ var arguments = new List();
+ if (node.message != null) {
+ visit(node.message);
+ arguments.add(pop());
+ } else {
+ arguments.add(graph.addConstantNull(compiler));
+ }
+ pushInvokeStatic(node, backend.assertThrowMethod, arguments);
+ pop();
+ }
+ handleIf(node,
Siggi Cherem (dart-lang) 2015/09/03 16:13:24 What does the final output endup looking like? In
Lasse Reichstein Nielsen 2015/09/09 12:02:46 Ack, it's the latter, only uglier: if (....helper(
+ visitCondition: buildCondition,
+ visitThen: () {},
+ visitElse: fail);
+ }
+
visitBlock(ast.Block node) {
assert(!isAborted());
if (!isReachable) return; // This can only happen when inlining.
@@ -5162,18 +5187,6 @@ class SsaBuilder extends ast.Visitor
return false;
}
- @override
- visitAssert(ast.Send node, ast.Node expression, _) {
- if (!compiler.enableUserAssertions) {
- stack.add(graph.addConstantNull(compiler));
- return;
- }
- assert(invariant(node, node.arguments.tail.isEmpty,
- message: "Invalid assertion: $node"));
- generateStaticFunctionInvoke(
- node, backend.assertMethod, CallStructure.ONE_ARG);
- }
-
visitStaticSend(ast.Send node) {
internalError(node, "Unexpected visitStaticSend");
}
@@ -8231,14 +8244,6 @@ class SsaBuilder extends ast.Visitor
}
@override
- void errorInvalidAssert(
- ast.Send node,
- ast.NodeList arguments,
- _) {
- visitNode(node);
- }
-
- @override
void errorUndefinedBinaryExpression(
ast.Send node,
ast.Node left,

Powered by Google App Engine
This is Rietveld 408576698