Index: runtime/vm/parser.cc |
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc |
index 7ffeeb86d1d65f727ad6b46a7c83cf438ae72a26..438dc5f3453596c0b42f6807c1c976aac2c9062b 100644 |
--- a/runtime/vm/parser.cc |
+++ b/runtime/vm/parser.cc |
@@ -3121,9 +3121,11 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) { |
// Parse redirecting factory constructor. |
Type& redirection_type = Type::Handle(); |
String& redirection_identifier = String::Handle(); |
+ bool is_redirecting = false; |
if (method->IsFactory() && (CurrentToken() == Token::kASSIGN)) { |
ConsumeToken(); |
const intptr_t type_pos = TokenPos(); |
+ is_redirecting = true; |
const AbstractType& type = AbstractType::Handle( |
ParseType(ClassFinalizer::kResolveTypeParameters)); |
if (!type.IsMalformed() && type.IsTypeParameter()) { |
@@ -3153,6 +3155,7 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) { |
((LookaheadToken(2) == Token::kLPAREN) || |
LookaheadToken(4) == Token::kLPAREN)) { |
// Redirected constructor: either this(...) or this.xxx(...). |
+ is_redirecting = true; |
if (method->params.has_field_initializer) { |
// Constructors that redirect to another constructor must not |
// initialize any fields using field initializer parameters. |
@@ -3287,6 +3290,7 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) { |
method->decl_begin_pos)); |
func.set_result_type(*method->type); |
func.set_end_token_pos(method_end_pos); |
+ func.set_is_redirecting(is_redirecting); |
if (method->metadata_pos > 0) { |
library_.AddFunctionMetadata(func, method->metadata_pos); |
} |