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

Unified Diff: runtime/vm/ast_transformer.cc

Issue 893193004: Propagate the stack trace of the inner-most throw when using async/await. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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: runtime/vm/ast_transformer.cc
diff --git a/runtime/vm/ast_transformer.cc b/runtime/vm/ast_transformer.cc
index 68a84b4446f64a1cb829cd46bfe22659af421713..31d4a57016ce7da23f129e84c7e6c05b39bce383 100644
--- a/runtime/vm/ast_transformer.cc
+++ b/runtime/vm/ast_transformer.cc
@@ -131,6 +131,8 @@ void AwaitTransformer::VisitAwaitNode(AwaitNode* node) {
preamble_->scope(), Symbols::AsyncOperationParam());
LocalVariable* error_param = GetVariableInScope(
preamble_->scope(), Symbols::AsyncOperationErrorParam());
+ LocalVariable* stack_trace_param = GetVariableInScope(
+ preamble_->scope(), Symbols::AsyncOperationStackTraceParam());
AstNode* transformed_expr = Transform(node->expr());
preamble_->Add(new(Z) StoreLocalNode(
@@ -224,12 +226,14 @@ void AwaitTransformer::VisitAwaitNode(AwaitNode* node) {
LoadLocalNode* load_error_param = new (Z) LoadLocalNode(
Scanner::kNoSourcePos, error_param);
+ LoadLocalNode* load_stack_trace_param = new (Z) LoadLocalNode(
+ Scanner::kNoSourcePos, stack_trace_param);
SequenceNode* error_ne_null_branch = new (Z) SequenceNode(
Scanner::kNoSourcePos, ChainNewScope(preamble_->scope()));
error_ne_null_branch->Add(new (Z) ThrowNode(
Scanner::kNoSourcePos,
load_error_param,
- NULL));
+ load_stack_trace_param));
preamble_->Add(new (Z) IfNode(
Scanner::kNoSourcePos,
new (Z) ComparisonNode(

Powered by Google App Engine
This is Rietveld 408576698