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

Unified Diff: runtime/vm/parser.cc

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month 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
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/parser_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/parser.cc
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index a68545224d8a4a9b9095233338d94cf0032bc425..92ba4ff121e46e1e81cdc34a06de11ae15e468f9 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -47,18 +47,29 @@ DEFINE_FLAG(bool, trace_parser, false, "Trace parser operations.");
DEFINE_FLAG(bool, warn_mixin_typedef, true, "Warning on legacy mixin typedef.");
// TODO(floitsch): remove the conditional-directive flag, once we publicly
// committed to the current version.
-DEFINE_FLAG(bool, conditional_directives, true,
- "Enable conditional directives");
+DEFINE_FLAG(bool,
+ conditional_directives,
+ true,
+ "Enable conditional directives");
DEFINE_FLAG(bool, generic_method_syntax, false, "Enable generic functions.");
-DEFINE_FLAG(bool, initializing_formal_access, false,
- "Make initializing formal parameters visible in initializer list.");
-DEFINE_FLAG(bool, warn_super, false,
- "Warning if super initializer not last in initializer list.");
+DEFINE_FLAG(bool,
+ initializing_formal_access,
+ false,
+ "Make initializing formal parameters visible in initializer list.");
+DEFINE_FLAG(bool,
+ warn_super,
+ false,
+ "Warning if super initializer not last in initializer list.");
DEFINE_FLAG(bool, warn_patch, false, "Warn on old-style patch syntax.");
-DEFINE_FLAG(bool, await_is_keyword, false,
+DEFINE_FLAG(
+ bool,
+ await_is_keyword,
+ false,
"await and yield are treated as proper keywords in synchronous code.");
-DEFINE_FLAG(bool, assert_initializer, false,
- "Allow asserts in initializer lists.");
+DEFINE_FLAG(bool,
+ assert_initializer,
+ false,
+ "Allow asserts in initializer lists.");
DECLARE_FLAG(bool, profile_vm);
DECLARE_FLAG(bool, trace_service);
@@ -86,8 +97,8 @@ class TraceParser : public ValueObject {
intptr_t line, column;
script.GetTokenLocation(token_pos, &line, &column);
PrintIndent();
- OS::Print("%s (line %" Pd ", col %" Pd ", token %" Pd ")\n",
- msg, line, column, token_pos.value());
+ OS::Print("%s (line %" Pd ", col %" Pd ", token %" Pd ")\n", msg, line,
+ column, token_pos.value());
}
(*indent_)++;
}
@@ -101,13 +112,15 @@ class TraceParser : public ValueObject {
private:
void PrintIndent() {
- for (intptr_t i = 0; i < *indent_; i++) { OS::Print(". "); }
+ for (intptr_t i = 0; i < *indent_; i++) {
+ OS::Print(". ");
+ }
}
intptr_t* indent_;
};
-#define TRACE_PARSER(s) \
+#define TRACE_PARSER(s) \
TraceParser __p__(this->TokenPos(), this->script_, &this->trace_indent_, s)
#else // not DEBUG
@@ -120,9 +133,7 @@ class BoolScope : public ValueObject {
BoolScope(bool* addr, bool new_value) : _addr(addr), _saved_value(*addr) {
*_addr = new_value;
}
- ~BoolScope() {
- *_addr = _saved_value;
- }
+ ~BoolScope() { *_addr = _saved_value; }
private:
bool* _addr;
@@ -133,14 +144,9 @@ class BoolScope : public ValueObject {
// Helper class to save and restore token position.
class Parser::TokenPosScope : public ValueObject {
public:
- explicit TokenPosScope(Parser *p) : p_(p) {
- saved_pos_ = p_->TokenPos();
- }
- TokenPosScope(Parser *p, TokenPosition pos) : p_(p), saved_pos_(pos) {
- }
- ~TokenPosScope() {
- p_->SetPosition(saved_pos_);
- }
+ explicit TokenPosScope(Parser* p) : p_(p) { saved_pos_ = p_->TokenPos(); }
+ TokenPosScope(Parser* p, TokenPosition pos) : p_(p), saved_pos_(pos) {}
+ ~TokenPosScope() { p_->SetPosition(saved_pos_); }
private:
Parser* p_;
@@ -161,9 +167,7 @@ class RecursionChecker : public ValueObject {
parser_->CheckStack();
}
}
- ~RecursionChecker() {
- parser_->recursion_counter_--;
- }
+ ~RecursionChecker() { parser_->recursion_counter_--; }
private:
Parser* parser_;
@@ -197,7 +201,8 @@ void ParsedFunction::AddToGuardedFields(const Field* field) const {
// the resulting code anyway.
if (Compiler::IsBackgroundCompilation()) {
if (!other->IsConsistentWith(*field)) {
- Compiler::AbortBackgroundCompilation(Thread::kNoDeoptId,
+ Compiler::AbortBackgroundCompilation(
+ Thread::kNoDeoptId,
"Field's guarded state changed during compilation");
}
}
@@ -215,14 +220,10 @@ void ParsedFunction::AddToGuardedFields(const Field* field) const {
void ParsedFunction::Bailout(const char* origin, const char* reason) const {
- Report::MessageF(Report::kBailout,
- Script::Handle(function_.script()),
- function_.token_pos(),
- Report::AtLocation,
- "%s Bailout in %s: %s",
- origin,
- String::Handle(function_.name()).ToCString(),
- reason);
+ Report::MessageF(Report::kBailout, Script::Handle(function_.script()),
+ function_.token_pos(), Report::AtLocation,
+ "%s Bailout in %s: %s", origin,
+ String::Handle(function_.name()).ToCString(), reason);
UNREACHABLE();
}
@@ -243,10 +244,8 @@ kernel::ScopeBuildingResult* ParsedFunction::EnsureKernelScopes() {
LocalVariable* ParsedFunction::EnsureExpressionTemp() {
if (!has_expression_temp_var()) {
LocalVariable* temp =
- new (Z) LocalVariable(function_.token_pos(),
- function_.token_pos(),
- Symbols::ExprTemp(),
- Object::dynamic_type());
+ new (Z) LocalVariable(function_.token_pos(), function_.token_pos(),
+ Symbols::ExprTemp(), Object::dynamic_type());
ASSERT(temp != NULL);
set_expression_temp_var(temp);
}
@@ -257,11 +256,9 @@ LocalVariable* ParsedFunction::EnsureExpressionTemp() {
void ParsedFunction::EnsureFinallyReturnTemp(bool is_async) {
if (!has_finally_return_temp_var()) {
- LocalVariable* temp = new(Z) LocalVariable(
- function_.token_pos(),
- function_.token_pos(),
- Symbols::FinallyRetVal(),
- Object::dynamic_type());
+ LocalVariable* temp =
+ new (Z) LocalVariable(function_.token_pos(), function_.token_pos(),
+ Symbols::FinallyRetVal(), Object::dynamic_type());
ASSERT(temp != NULL);
temp->set_is_final();
if (is_async) {
@@ -328,12 +325,9 @@ void ParsedFunction::AllocateVariables() {
// Allocate parameters and local variables, either in the local frame or
// in the context(s).
bool found_captured_variables = false;
- int next_free_frame_index =
- scope->AllocateVariables(first_parameter_index_,
- num_params,
- first_stack_local_index_,
- NULL,
- &found_captured_variables);
+ int next_free_frame_index = scope->AllocateVariables(
+ first_parameter_index_, num_params, first_stack_local_index_, NULL,
+ &found_captured_variables);
// Frame indices are relative to the frame pointer and are decreasing.
ASSERT(next_free_frame_index <= first_stack_local_index_);
@@ -346,7 +340,7 @@ struct CatchParamDesc {
: token_pos(TokenPosition::kNoSource),
type(NULL),
name(NULL),
- var(NULL) { }
+ var(NULL) {}
TokenPosition token_pos;
const AbstractType* type;
const String* name;
@@ -374,7 +368,7 @@ void ParsedFunction::AllocateIrregexpVariables(intptr_t num_stack_locals) {
struct Parser::Block : public ZoneAllocated {
Block(Block* outer_block, LocalScope* local_scope, SequenceNode* seq)
- : parent(outer_block), scope(local_scope), statements(seq) {
+ : parent(outer_block), scope(local_scope), statements(seq) {
ASSERT(scope != NULL);
ASSERT(statements != NULL);
}
@@ -395,7 +389,7 @@ class Parser::TryStack : public ZoneAllocated {
outer_try_(outer_try),
try_index_(try_index),
inside_catch_(false),
- inside_finally_(false) { }
+ inside_finally_(false) {}
TryStack* outer_try() const { return outer_try_; }
Block* try_block() const { return try_block_; }
@@ -407,7 +401,7 @@ class Parser::TryStack : public ZoneAllocated {
void exit_finally() { inside_finally_ = false; }
void AddNodeForFinallyInlining(AstNode* node);
- void RemoveJumpToLabel(SourceLabel *label);
+ void RemoveJumpToLabel(SourceLabel* label);
AstNode* GetNodeToInlineFinally(int index) {
if (0 <= index && index < inlined_finally_nodes_.length()) {
return inlined_finally_nodes_[index];
@@ -420,7 +414,7 @@ class Parser::TryStack : public ZoneAllocated {
GrowableArray<AstNode*> inlined_finally_nodes_;
TryStack* outer_try_;
const intptr_t try_index_;
- bool inside_catch_; // True when parsing a catch clause of this try.
+ bool inside_catch_; // True when parsing a catch clause of this try.
bool inside_finally_; // True when parsing a finally clause of an inner try
// of this try.
@@ -433,7 +427,7 @@ void Parser::TryStack::AddNodeForFinallyInlining(AstNode* node) {
}
-void Parser::TryStack::RemoveJumpToLabel(SourceLabel *label) {
+void Parser::TryStack::RemoveJumpToLabel(SourceLabel* label) {
int i = 0;
while (i < inlined_finally_nodes_.length()) {
if (inlined_finally_nodes_[i]->IsJumpNode()) {
@@ -501,14 +495,15 @@ Parser::Parser(const Script& script,
current_member_(NULL),
allow_function_literals_(true),
parsed_function_(parsed_function),
- innermost_function_(Function::Handle(zone(),
- parsed_function->function().raw())),
+ innermost_function_(
+ Function::Handle(zone(), parsed_function->function().raw())),
literal_token_(LiteralToken::Handle(zone())),
- current_class_(Class::Handle(zone(),
- parsed_function->function().Owner())),
- library_(Library::Handle(zone(), Class::Handle(
+ current_class_(
+ Class::Handle(zone(), parsed_function->function().Owner())),
+ library_(Library::Handle(
zone(),
- parsed_function->function().origin()).library())),
+ Class::Handle(zone(), parsed_function->function().origin())
+ .library())),
try_stack_(NULL),
last_used_try_index_(0),
unregister_pending_function_(false),
@@ -528,7 +523,7 @@ Parser::~Parser() {
ASSERT(!pending_functions.IsNull());
ASSERT(pending_functions.Length() > 0);
ASSERT(pending_functions.At(pending_functions.Length() - 1) ==
- current_function().raw());
+ current_function().raw());
pending_functions.RemoveLast();
}
}
@@ -546,8 +541,8 @@ int16_t Parser::AllocateTryIndex() {
void Parser::SetScript(const Script& script, TokenPosition token_pos) {
script_ = script.raw();
- tokens_iterator_.SetStream(
- TokenStream::Handle(Z, script.tokens()), token_pos);
+ tokens_iterator_.SetStream(TokenStream::Handle(Z, script.tokens()),
+ token_pos);
token_kind_ = Token::kILLEGAL;
}
@@ -616,8 +611,7 @@ void Parser::ParseCompilationUnit(const Library& library,
CSTAT_TIMER_SCOPE(thread, parser_timer);
#ifndef PRODUCT
VMTagScope tagScope(thread, VMTag::kCompileTopLevelTagId);
- TimelineDurationScope tds(thread,
- Timeline::GetCompilerStream(),
+ TimelineDurationScope tds(thread, Timeline::GetCompilerStream(),
"CompileTopLevel");
if (tds.enabled()) {
tds.SetNumArguments(1);
@@ -646,8 +640,7 @@ Token::Kind Parser::LookaheadToken(int num_tokens) {
String* Parser::CurrentLiteral() const {
- String& result =
- String::ZoneHandle(Z, tokens_iterator_.CurrentLiteral());
+ String& result = String::ZoneHandle(Z, tokens_iterator_.CurrentLiteral());
return &result;
}
@@ -677,13 +670,13 @@ struct ParamDesc {
var(NULL),
is_final(false),
is_field_initializer(false),
- has_explicit_type(false) { }
+ has_explicit_type(false) {}
const AbstractType* type;
TokenPosition name_pos;
const String* name;
const Instance* default_value; // NULL if not an optional parameter.
const Object* metadata; // NULL if no metadata or metadata not evaluated.
- LocalVariable* var; // Scope variable allocated for this parameter.
+ LocalVariable* var; // Scope variable allocated for this parameter.
bool is_final;
bool is_field_initializer;
bool has_explicit_type;
@@ -691,9 +684,7 @@ struct ParamDesc {
struct ParamList {
- ParamList() {
- Clear();
- }
+ ParamList() { Clear(); }
void Clear() {
num_fixed_parameters = 0;
@@ -719,8 +710,7 @@ struct ParamList {
this->parameters->Add(param);
}
- void AddReceiver(const AbstractType* receiver_type,
- TokenPosition token_pos) {
+ void AddReceiver(const AbstractType* receiver_type, TokenPosition token_pos) {
ASSERT(this->parameters->is_empty());
AddFinalParameter(token_pos, &Symbols::This(), receiver_type);
}
@@ -756,9 +746,7 @@ struct ParamList {
}
}
- void SetImplicitlyFinal() {
- implicitly_final = true;
- }
+ void SetImplicitlyFinal() { implicitly_final = true; }
int num_fixed_parameters;
int num_optional_parameters;
@@ -773,9 +761,7 @@ struct ParamList {
struct MemberDesc {
- MemberDesc() {
- Clear();
- }
+ MemberDesc() { Clear(); }
void Clear() {
has_abstract = false;
@@ -808,12 +794,8 @@ struct MemberDesc {
bool IsFactoryOrConstructor() const {
return (kind == RawFunction::kConstructor);
}
- bool IsGetter() const {
- return kind == RawFunction::kGetterFunction;
- }
- bool IsSetter() const {
- return kind == RawFunction::kSetterFunction;
- }
+ bool IsGetter() const { return kind == RawFunction::kGetterFunction; }
+ bool IsSetter() const { return kind == RawFunction::kSetterFunction; }
const char* ToCString() const {
if (field_ != NULL) {
return "field";
@@ -828,9 +810,7 @@ struct MemberDesc {
}
return "method";
}
- String* DictName() const {
- return (dict_name != NULL) ? dict_name : name;
- }
+ String* DictName() const { return (dict_name != NULL) ? dict_name : name; }
bool has_abstract;
bool has_external;
bool has_final;
@@ -873,32 +853,23 @@ class ClassDesc : public ValueObject {
class_name_(cls_name),
token_pos_(token_pos),
functions_(zone, 4),
- fields_(zone, 4) {
- }
+ fields_(zone, 4) {}
void AddFunction(const Function& function) {
functions_.Add(&Function::ZoneHandle(zone_, function.raw()));
}
- const GrowableArray<const Function*>& functions() const {
- return functions_;
- }
+ const GrowableArray<const Function*>& functions() const { return functions_; }
void AddField(const Field& field) {
fields_.Add(&Field::ZoneHandle(zone_, field.raw()));
}
- const GrowableArray<const Field*>& fields() const {
- return fields_;
- }
+ const GrowableArray<const Field*>& fields() const { return fields_; }
- const Class& clazz() const {
- return clazz_;
- }
+ const Class& clazz() const { return clazz_; }
- const String& class_name() const {
- return class_name_;
- }
+ const String& class_name() const { return class_name_; }
bool has_constructor() const {
for (int i = 0; i < functions_.length(); i++) {
@@ -910,17 +881,11 @@ class ClassDesc : public ValueObject {
return false;
}
- TokenPosition token_pos() const {
- return token_pos_;
- }
+ TokenPosition token_pos() const { return token_pos_; }
- void AddMember(const MemberDesc& member) {
- members_.Add(member);
- }
+ void AddMember(const MemberDesc& member) { members_.Add(member); }
- const GrowableArray<MemberDesc>& members() const {
- return members_;
- }
+ const GrowableArray<MemberDesc>& members() const { return members_; }
MemberDesc* LookupMember(const String& name) const {
for (int i = 0; i < members_.length(); i++) {
@@ -944,7 +909,7 @@ class ClassDesc : public ValueObject {
Zone* zone_;
const Class& clazz_;
const String& class_name_;
- TokenPosition token_pos_; // Token index of "class" keyword.
+ TokenPosition token_pos_; // Token index of "class" keyword.
GrowableArray<const Function*> functions_;
GrowableArray<const Field*> fields_;
GrowableArray<MemberDesc> members_;
@@ -953,10 +918,8 @@ class ClassDesc : public ValueObject {
class TopLevel : public ValueObject {
public:
- explicit TopLevel(Zone* zone) :
- zone_(zone),
- fields_(zone, 4),
- functions_(zone, 4) { }
+ explicit TopLevel(Zone* zone)
+ : zone_(zone), fields_(zone, 4), functions_(zone, 4) {}
void AddField(const Field& field) {
fields_.Add(&Field::ZoneHandle(zone_, field.raw()));
@@ -966,13 +929,9 @@ class TopLevel : public ValueObject {
functions_.Add(&Function::ZoneHandle(zone_, function.raw()));
}
- const GrowableArray<const Field*>& fields() const {
- return fields_;
- }
+ const GrowableArray<const Field*>& fields() const { return fields_; }
- const GrowableArray<const Function*>& functions() const {
- return functions_;
- }
+ const GrowableArray<const Function*>& functions() const { return functions_; }
private:
Zone* zone_;
@@ -986,8 +945,7 @@ void Parser::ParseClass(const Class& cls) {
Zone* zone = thread->zone();
const int64_t num_tokes_before = STAT_VALUE(thread, num_tokens_consumed);
#ifndef PRODUCT
- TimelineDurationScope tds(thread,
- Timeline::GetCompilerStream(),
+ TimelineDurationScope tds(thread, Timeline::GetCompilerStream(),
"ParseClass");
if (tds.enabled()) {
tds.SetNumArguments(1);
@@ -1024,30 +982,32 @@ RawObject* Parser::ParseFunctionParameters(const Function& func) {
const Script& script = Script::Handle(zone, func.script());
const Class& owner = Class::Handle(zone, func.Owner());
ASSERT(!owner.IsNull());
- ParsedFunction* parsed_function = new ParsedFunction(
- thread, Function::ZoneHandle(zone, func.raw()));
+ ParsedFunction* parsed_function =
+ new ParsedFunction(thread, Function::ZoneHandle(zone, func.raw()));
Parser parser(script, parsed_function, func.token_pos());
parser.SkipFunctionPreamble();
ParamList params;
parser.ParseFormalParameterList(true, true, &params);
ParamDesc* param = params.parameters->data();
- const int param_cnt = params.num_fixed_parameters +
- params.num_optional_parameters;
+ const int param_cnt =
+ params.num_fixed_parameters + params.num_optional_parameters;
const Array& param_descriptor =
Array::Handle(Array::New(param_cnt * kParameterEntrySize, Heap::kOld));
for (int i = 0, j = 0; i < param_cnt; i++, j += kParameterEntrySize) {
param_descriptor.SetAt(j + kParameterIsFinalOffset,
param[i].is_final ? Bool::True() : Bool::False());
param_descriptor.SetAt(j + kParameterDefaultValueOffset,
- (param[i].default_value == NULL) ? Object::null_instance() :
- *(param[i].default_value));
+ (param[i].default_value == NULL)
+ ? Object::null_instance()
+ : *(param[i].default_value));
const Object* metadata = param[i].metadata;
if ((metadata != NULL) && (*metadata).IsError()) {
return metadata->raw(); // Error evaluating the metadata.
}
param_descriptor.SetAt(j + kParameterMetadataOffset,
- (param[i].metadata == NULL) ? Object::null_instance() :
- *(param[i].metadata));
+ (param[i].metadata == NULL)
+ ? Object::null_instance()
+ : *(param[i].metadata));
}
return param_descriptor.raw();
} else {
@@ -1103,8 +1063,7 @@ void Parser::ParseFunction(ParsedFunction* parsed_function) {
#ifndef PRODUCT
VMTagScope tagScope(thread, VMTag::kCompileParseFunctionTagId,
FLAG_profile_vm);
- TimelineDurationScope tds(thread,
- Timeline::GetCompilerStream(),
+ TimelineDurationScope tds(thread, Timeline::GetCompilerStream(),
"ParseFunction");
#endif // !PRODUCT
ASSERT(thread->long_jump_base()->IsSafeToJump());
@@ -1129,7 +1088,7 @@ void Parser::ParseFunction(ParsedFunction* parsed_function) {
node_sequence = parser.ParseConstructorClosure(func);
break;
}
- // Fall-through: Handle non-implicit closures.
+ // Fall-through: Handle non-implicit closures.
case RawFunction::kRegularFunction:
case RawFunction::kGetterFunction:
case RawFunction::kSetterFunction:
@@ -1158,12 +1117,10 @@ void Parser::ParseFunction(ParsedFunction* parsed_function) {
INC_STAT(thread, num_method_extractors, 1);
break;
case RawFunction::kNoSuchMethodDispatcher:
- node_sequence =
- parser.ParseNoSuchMethodDispatcher(func);
+ node_sequence = parser.ParseNoSuchMethodDispatcher(func);
break;
case RawFunction::kInvokeFieldDispatcher:
- node_sequence =
- parser.ParseInvokeFieldDispatcher(func);
+ node_sequence = parser.ParseInvokeFieldDispatcher(func);
break;
case RawFunction::kIrregexpFunction:
UNREACHABLE(); // Irregexp functions have their own parser.
@@ -1174,8 +1131,7 @@ void Parser::ParseFunction(ParsedFunction* parsed_function) {
if (parsed_function->has_expression_temp_var()) {
node_sequence->scope()->AddVariable(parsed_function->expression_temp_var());
}
- node_sequence->scope()->AddVariable(
- parsed_function->current_context_var());
+ node_sequence->scope()->AddVariable(parsed_function->current_context_var());
if (parsed_function->has_finally_return_temp_var()) {
node_sequence->scope()->AddVariable(
parsed_function->finally_return_temp_var());
@@ -1216,19 +1172,17 @@ RawObject* Parser::ParseMetadata(const Field& meta_data) {
// normally used for expressions and assume current_function is non-null,
// so we create a fake function to use as the current_function rather than
// scattering special cases throughout the parser.
- const Function& fake_function = Function::ZoneHandle(zone, Function::New(
- Symbols::At(),
- RawFunction::kRegularFunction,
- true, // is_static
- false, // is_const
- false, // is_abstract
- false, // is_external
- false, // is_native
- Object::Handle(zone, meta_data.RawOwner()),
- token_pos));
+ const Function& fake_function = Function::ZoneHandle(
+ zone,
+ Function::New(Symbols::At(), RawFunction::kRegularFunction,
+ true, // is_static
+ false, // is_const
+ false, // is_abstract
+ false, // is_external
+ false, // is_native
+ Object::Handle(zone, meta_data.RawOwner()), token_pos));
fake_function.set_is_debuggable(false);
- ParsedFunction* parsed_function =
- new ParsedFunction(thread, fake_function);
+ ParsedFunction* parsed_function = new ParsedFunction(thread, fake_function);
Parser parser(script, parsed_function, token_pos);
parser.set_current_class(owner_class);
parser.OpenFunctionBlock(fake_function);
@@ -1270,10 +1224,10 @@ RawArray* Parser::EvaluateMetadata() {
AstNode* expr = NULL;
if ((LookaheadToken(1) == Token::kLPAREN) ||
((LookaheadToken(1) == Token::kPERIOD) &&
- (LookaheadToken(3) == Token::kLPAREN)) ||
+ (LookaheadToken(3) == Token::kLPAREN)) ||
((LookaheadToken(1) == Token::kPERIOD) &&
- (LookaheadToken(3) == Token::kPERIOD) &&
- (LookaheadToken(5) == Token::kLPAREN))) {
+ (LookaheadToken(3) == Token::kPERIOD) &&
+ (LookaheadToken(5) == Token::kLPAREN))) {
expr = ParseNewOperator(Token::kCONST);
} else {
// Can be x, C.x, or L.C.x.
@@ -1303,16 +1257,12 @@ RawArray* Parser::EvaluateMetadata() {
String* ident = ExpectIdentifier("identifier expected");
const Field& field = Field::Handle(Z, cls.LookupStaticField(*ident));
if (field.IsNull()) {
- ReportError(ident_pos,
- "Class '%s' has no field '%s'",
- cls.ToCString(),
- ident->ToCString());
+ ReportError(ident_pos, "Class '%s' has no field '%s'",
+ cls.ToCString(), ident->ToCString());
}
if (!field.is_const()) {
- ReportError(ident_pos,
- "Field '%s' of class '%s' is not const",
- ident->ToCString(),
- cls.ToCString());
+ ReportError(ident_pos, "Field '%s' of class '%s' is not const",
+ ident->ToCString(), cls.ToCString());
}
expr = GenerateStaticFieldLookup(field, ident_pos);
}
@@ -1334,7 +1284,7 @@ SequenceNode* Parser::ParseStaticInitializer() {
OpenFunctionBlock(parsed_function()->function());
TokenPosition expr_pos = TokenPos();
AstNode* expr = ParseExpr(kAllowConst, kConsumeCascades);
- ReturnNode* ret = new(Z) ReturnNode(expr_pos, expr);
+ ReturnNode* ret = new (Z) ReturnNode(expr_pos, expr);
current_block_->statements->Add(ret);
return CloseBlock();
}
@@ -1353,24 +1303,21 @@ ParsedFunction* Parser::ParseStaticFieldInitializer(const Field& field) {
#endif // !PRODUCT
const String& field_name = String::Handle(zone, field.name());
- String& init_name = String::Handle(zone,
- Symbols::FromConcat(thread, Symbols::InitPrefix(), field_name));
+ String& init_name = String::Handle(
+ zone, Symbols::FromConcat(thread, Symbols::InitPrefix(), field_name));
const Script& script = Script::Handle(zone, field.Script());
Object& initializer_owner = Object::Handle(field.Owner());
- initializer_owner =
- PatchClass::New(Class::Handle(field.Owner()), script);
-
- const Function& initializer = Function::ZoneHandle(zone,
- Function::New(init_name,
- RawFunction::kImplicitStaticFinalGetter,
- true, // static
- false, // !const
- false, // !abstract
- false, // !external
- false, // !native
- initializer_owner,
- field.token_pos()));
+ initializer_owner = PatchClass::New(Class::Handle(field.Owner()), script);
+
+ const Function& initializer = Function::ZoneHandle(
+ zone, Function::New(init_name, RawFunction::kImplicitStaticFinalGetter,
+ true, // static
+ false, // !const
+ false, // !abstract
+ false, // !external
+ false, // !native
+ initializer_owner, field.token_pos()));
initializer.set_result_type(AbstractType::Handle(zone, field.type()));
// Static initializer functions are hidden from the user.
// Since they are only executed once, we avoid inlining them.
@@ -1440,11 +1387,10 @@ SequenceNode* Parser::ParseStaticFinalGetter(const Function& func) {
// Call runtime support to parse and evaluate the initializer expression.
// The runtime function will detect circular dependencies in expressions
// and handle errors while evaluating the expression.
- current_block_->statements->Add(
- new (Z) InitStaticFieldNode(ident_pos, field));
+ current_block_->statements->Add(new (Z)
+ InitStaticFieldNode(ident_pos, field));
ReturnNode* return_node =
- new ReturnNode(ident_pos,
- new LoadStaticFieldNode(ident_pos, field));
+ new ReturnNode(ident_pos, new LoadStaticFieldNode(ident_pos, field));
current_block_->statements->Add(return_node);
}
return CloseBlock();
@@ -1508,9 +1454,7 @@ SequenceNode* Parser::ParseInstanceSetter(const Function& func) {
ParamList params;
ASSERT(current_class().raw() == func.Owner());
params.AddReceiver(ReceiverType(current_class()), ident_pos);
- params.AddFinalParameter(ident_pos,
- &Symbols::Value(),
- &field_type);
+ params.AddFinalParameter(ident_pos, &Symbols::Value(), &field_type);
ASSERT(func.num_fixed_parameters() == 2); // receiver, value.
ASSERT(!func.HasOptionalParameters());
ASSERT(AbstractType::Handle(Z, func.result_type()).IsVoidType());
@@ -1546,8 +1490,7 @@ SequenceNode* Parser::ParseConstructorClosure(const Function& func) {
ParamList params;
// The first parameter of the closure function is the
// implicit closure argument.
- params.AddFinalParameter(token_pos,
- &Symbols::ClosureParameter(),
+ params.AddFinalParameter(token_pos, &Symbols::ClosureParameter(),
&Object::dynamic_type());
bool params_ok = ParseFormalParameters(constructor, &params);
USE(params_ok);
@@ -1595,17 +1538,14 @@ SequenceNode* Parser::ParseImplicitClosure(const Function& func) {
OpenFunctionBlock(func);
ParamList params;
- params.AddFinalParameter(
- token_pos,
- &Symbols::ClosureParameter(),
- &Object::dynamic_type());
+ params.AddFinalParameter(token_pos, &Symbols::ClosureParameter(),
+ &Object::dynamic_type());
const Function& parent = Function::Handle(func.parent_function());
if (parent.IsImplicitSetterFunction()) {
const TokenPosition ident_pos = func.token_pos();
ASSERT(IsIdentifier());
- params.AddFinalParameter(ident_pos,
- &Symbols::Value(),
+ params.AddFinalParameter(ident_pos, &Symbols::Value(),
&Object::dynamic_type());
ASSERT(func.num_fixed_parameters() == 2); // closure, value.
} else if (!parent.IsGetterFunction() && !parent.IsImplicitGetterFunction()) {
@@ -1648,8 +1588,7 @@ SequenceNode* Parser::ParseImplicitClosure(const Function& func) {
Function& target = Function::ZoneHandle(owner.LookupFunction(func_name));
if (target.raw() != parent.raw()) {
ASSERT(Isolate::Current()->HasAttemptedReload());
- if (target.IsNull() ||
- (target.is_static() != parent.is_static()) ||
+ if (target.IsNull() || (target.is_static() != parent.is_static()) ||
(target.kind() != parent.kind())) {
target = Function::null();
}
@@ -1675,16 +1614,14 @@ SequenceNode* Parser::ParseImplicitClosure(const Function& func) {
const intptr_t kNumArguments = 2; // Receiver, InvocationMirror.
ArgumentsDescriptor args_desc(
Array::Handle(Z, ArgumentsDescriptor::New(kNumArguments)));
- Function& no_such_method = Function::ZoneHandle(Z,
- Resolver::ResolveDynamicForReceiverClass(owner,
- Symbols::NoSuchMethod(),
- args_desc));
+ Function& no_such_method =
+ Function::ZoneHandle(Z, Resolver::ResolveDynamicForReceiverClass(
+ owner, Symbols::NoSuchMethod(), args_desc));
if (no_such_method.IsNull()) {
// If noSuchMethod(i) is not found, call Object:noSuchMethod.
no_such_method ^= Resolver::ResolveDynamicForReceiverClass(
Class::Handle(Z, I->object_store()->object_class()),
- Symbols::NoSuchMethod(),
- args_desc);
+ Symbols::NoSuchMethod(), args_desc);
}
call = new StaticCallNode(token_pos, no_such_method, arguments);
} else {
@@ -1702,12 +1639,8 @@ SequenceNode* Parser::ParseImplicitClosure(const Function& func) {
} else {
im_type = InvocationMirror::kMethod;
}
- call = ThrowNoSuchMethodError(TokenPos(),
- owner,
- func_name,
- func_args,
- InvocationMirror::kStatic,
- im_type,
+ call = ThrowNoSuchMethodError(TokenPos(), owner, func_name, func_args,
+ InvocationMirror::kStatic, im_type,
NULL); // No existing function.
}
@@ -1739,10 +1672,8 @@ SequenceNode* Parser::ParseMethodExtractor(const Function& func) {
LoadLocalNode* load_receiver = new LoadLocalNode(ident_pos, receiver);
ClosureNode* closure = new ClosureNode(
- ident_pos,
- Function::ZoneHandle(Z, func.extracted_method_closure()),
- load_receiver,
- NULL);
+ ident_pos, Function::ZoneHandle(Z, func.extracted_method_closure()),
+ load_receiver, NULL);
ReturnNode* return_node = new ReturnNode(ident_pos, closure);
current_block_->statements->Add(return_node);
@@ -1821,21 +1752,20 @@ SequenceNode* Parser::ParseNoSuchMethodDispatcher(const Function& func) {
}
const String& func_name = String::ZoneHandle(Z, func.name());
- ArgumentListNode* arguments = BuildNoSuchMethodArguments(
- token_pos, func_name, *func_args, NULL, false);
+ ArgumentListNode* arguments =
+ BuildNoSuchMethodArguments(token_pos, func_name, *func_args, NULL, false);
const intptr_t kNumArguments = 2; // Receiver, InvocationMirror.
ArgumentsDescriptor args_desc(
Array::Handle(Z, ArgumentsDescriptor::New(kNumArguments)));
- Function& no_such_method = Function::ZoneHandle(Z,
- Resolver::ResolveDynamicForReceiverClass(Class::Handle(Z, func.Owner()),
- Symbols::NoSuchMethod(),
- args_desc));
+ Function& no_such_method = Function::ZoneHandle(
+ Z,
+ Resolver::ResolveDynamicForReceiverClass(
+ Class::Handle(Z, func.Owner()), Symbols::NoSuchMethod(), args_desc));
if (no_such_method.IsNull()) {
// If noSuchMethod(i) is not found, call Object:noSuchMethod.
no_such_method ^= Resolver::ResolveDynamicForReceiverClass(
Class::Handle(Z, I->object_store()->object_class()),
- Symbols::NoSuchMethod(),
- args_desc);
+ Symbols::NoSuchMethod(), args_desc);
}
StaticCallNode* call =
new StaticCallNode(token_pos, no_such_method, arguments);
@@ -1865,8 +1795,8 @@ SequenceNode* Parser::ParseInvokeFieldDispatcher(const Function& func) {
ArgumentListNode* no_args = new ArgumentListNode(token_pos);
LoadLocalNode* receiver = new LoadLocalNode(token_pos, scope->VariableAt(0));
- const Class& closure_cls = Class::Handle(
- Isolate::Current()->object_store()->closure_class());
+ const Class& closure_cls =
+ Class::Handle(Isolate::Current()->object_store()->closure_class());
const Class& owner = Class::Handle(Z, func.Owner());
ASSERT(!owner.IsNull());
@@ -1875,16 +1805,16 @@ SequenceNode* Parser::ParseInvokeFieldDispatcher(const Function& func) {
if (owner.raw() == closure_cls.raw() && name.Equals(Symbols::Call())) {
function_object = receiver;
} else {
- const String& getter_name = String::ZoneHandle(Z,
- Field::GetterSymbol(name));
- function_object = new(Z) InstanceCallNode(
- token_pos, receiver, getter_name, no_args);
+ const String& getter_name =
+ String::ZoneHandle(Z, Field::GetterSymbol(name));
+ function_object =
+ new (Z) InstanceCallNode(token_pos, receiver, getter_name, no_args);
}
// Pass arguments 1..n to the closure call.
- ArgumentListNode* args = new(Z) ArgumentListNode(token_pos);
- const Array& names = Array::Handle(
- Z, Array::New(desc.NamedCount(), Heap::kOld));
+ ArgumentListNode* args = new (Z) ArgumentListNode(token_pos);
+ const Array& names =
+ Array::Handle(Z, Array::New(desc.NamedCount(), Heap::kOld));
// Positional parameters.
intptr_t i = 1;
for (; i < desc.PositionalCount(); ++i) {
@@ -1892,7 +1822,7 @@ SequenceNode* Parser::ParseInvokeFieldDispatcher(const Function& func) {
}
// Named parameters.
for (; i < desc.Count(); i++) {
- args->Add(new(Z) LoadLocalNode(token_pos, scope->VariableAt(i)));
+ args->Add(new (Z) LoadLocalNode(token_pos, scope->VariableAt(i)));
intptr_t index = i - desc.PositionalCount();
names.SetAt(index, String::Handle(Z, desc.NameAt(index)));
}
@@ -1914,10 +1844,7 @@ SequenceNode* Parser::ParseInvokeFieldDispatcher(const Function& func) {
AstNode* Parser::BuildClosureCall(TokenPosition token_pos,
AstNode* closure,
ArgumentListNode* arguments) {
- return new InstanceCallNode(token_pos,
- closure,
- Symbols::Call(),
- arguments);
+ return new InstanceCallNode(token_pos, closure, Symbols::Call(), arguments);
}
@@ -1930,7 +1857,7 @@ void Parser::SkipToMatching() {
// Adding the first opening brace here, because it will be consumed
// in the loop right away.
token_stack.Add(opening_token);
- const TokenPosition start_pos = TokenPos();
+ const TokenPosition start_pos = TokenPos();
TokenPosition opening_pos = start_pos;
token_pos_stack.Add(start_pos);
bool is_match = true;
@@ -1974,20 +1901,18 @@ void Parser::SkipToMatching() {
}
} while (!token_stack.is_empty() && is_match && !unexpected_token_found);
if (!is_match) {
- const Error& error = Error::Handle(
- LanguageError::NewFormatted(Error::Handle(),
- script_, opening_pos, Report::AtLocation,
- Report::kWarning, Heap::kNew,
- "unbalanced '%s' opens here", Token::Str(opening_token)));
- ReportErrors(error, script_, token_pos,
- "unbalanced '%s'", Token::Str(token));
+ const Error& error = Error::Handle(LanguageError::NewFormatted(
+ Error::Handle(), script_, opening_pos, Report::AtLocation,
+ Report::kWarning, Heap::kNew, "unbalanced '%s' opens here",
+ Token::Str(opening_token)));
+ ReportErrors(error, script_, token_pos, "unbalanced '%s'",
+ Token::Str(token));
} else if (unexpected_token_found) {
ReportError(start_pos, "unterminated '%s'", Token::Str(opening_token));
}
}
-
void Parser::SkipBlock() {
ASSERT(CurrentToken() == Token::kLBRACE);
SkipToMatching();
@@ -2071,8 +1996,8 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
parameter.has_explicit_type = true;
// It is too early to resolve the type here, since it can be a result type
// referring to a not yet declared function type parameter.
- parameter.type = &AbstractType::ZoneHandle(Z,
- ParseType(ClassFinalizer::kDoNotResolve));
+ parameter.type = &AbstractType::ZoneHandle(
+ Z, ParseType(ClassFinalizer::kDoNotResolve));
} else {
// If this is an initializing formal, its type will be set to the type of
// the respective field when the constructor is fully parsed.
@@ -2130,9 +2055,9 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
// signature functions (except typedef signature functions), therefore
// we do not need to keep the correct script via a patch class. Use the
// actual current class as owner of the signature function.
- const Function& signature_function = Function::Handle(Z,
- Function::NewSignatureFunction(current_class(),
- TokenPosition::kNoSource));
+ const Function& signature_function =
+ Function::Handle(Z, Function::NewSignatureFunction(
+ current_class(), TokenPosition::kNoSource));
signature_function.set_parent_function(innermost_function());
innermost_function_ = signature_function.raw();
@@ -2151,10 +2076,8 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
ParamList func_params;
// Add implicit closure object parameter.
- func_params.AddFinalParameter(
- TokenPos(),
- &Symbols::ClosureParameter(),
- &Object::dynamic_type());
+ func_params.AddFinalParameter(TokenPos(), &Symbols::ClosureParameter(),
+ &Object::dynamic_type());
const bool no_explicit_default_values = false;
ParseFormalParameterList(no_explicit_default_values, false, &func_params);
@@ -2187,8 +2110,7 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
ResolveType(ClassFinalizer::kResolveTypeParameters, &type);
if (!is_top_level_) {
type = ClassFinalizer::FinalizeType(
- Class::Handle(Z, innermost_function().origin()),
- type,
+ Class::Handle(Z, innermost_function().origin()), type,
ClassFinalizer::kCanonicalize);
}
parameter.type = &type;
@@ -2261,16 +2183,16 @@ void Parser::ParseFormalParameters(bool allow_explicit_default_values,
params->has_optional_named_parameters = true;
return;
}
- Token::Kind terminator =
- params->has_optional_positional_parameters ? Token::kRBRACK :
- params->has_optional_named_parameters ? Token::kRBRACE :
- Token :: kRPAREN;
+ Token::Kind terminator = params->has_optional_positional_parameters
+ ? Token::kRBRACK
+ : params->has_optional_named_parameters
+ ? Token::kRBRACE
+ : Token::kRPAREN;
if (has_seen_parameter && CurrentToken() == terminator) {
// Allow a trailing comma.
break;
}
- ParseFormalParameter(allow_explicit_default_values,
- evaluate_metadata,
+ ParseFormalParameter(allow_explicit_default_values, evaluate_metadata,
params);
has_seen_parameter = true;
} while (CurrentToken() == Token::kCOMMA);
@@ -2285,14 +2207,12 @@ void Parser::ParseFormalParameterList(bool allow_explicit_default_values,
if (LookaheadToken(1) != Token::kRPAREN) {
// Parse fixed parameters.
- ParseFormalParameters(allow_explicit_default_values,
- evaluate_metadata,
+ ParseFormalParameters(allow_explicit_default_values, evaluate_metadata,
params);
if (params->has_optional_positional_parameters ||
params->has_optional_named_parameters) {
// Parse optional parameters.
- ParseFormalParameters(allow_explicit_default_values,
- evaluate_metadata,
+ ParseFormalParameters(allow_explicit_default_values, evaluate_metadata,
params);
if (params->has_optional_positional_parameters) {
CheckToken(Token::kRBRACK, "',' or ']' expected");
@@ -2338,11 +2258,10 @@ RawFunction* Parser::GetSuperFunction(TokenPosition token_pos,
ReportError(token_pos, "class '%s' does not have a superclass",
String::Handle(Z, current_class().Name()).ToCString());
}
- Function& super_func = Function::Handle(Z,
- Resolver::ResolveDynamicAnyArgs(Z, super_class, name));
+ Function& super_func = Function::Handle(
+ Z, Resolver::ResolveDynamicAnyArgs(Z, super_class, name));
if (!super_func.IsNull() &&
- !super_func.AreValidArguments(arguments->length(),
- arguments->names(),
+ !super_func.AreValidArguments(arguments->length(), arguments->names(),
NULL)) {
super_func = Function::null();
} else if (super_func.IsNull() && resolve_getter) {
@@ -2352,8 +2271,8 @@ RawFunction* Parser::GetSuperFunction(TokenPosition token_pos,
(super_func.kind() != RawFunction::kImplicitStaticFinalGetter));
}
if (super_func.IsNull()) {
- super_func = Resolver::ResolveDynamicAnyArgs(Z,
- super_class, Symbols::NoSuchMethod());
+ super_func = Resolver::ResolveDynamicAnyArgs(Z, super_class,
+ Symbols::NoSuchMethod());
ASSERT(!super_func.IsNull());
*is_no_such_method = true;
} else {
@@ -2376,9 +2295,8 @@ StaticCallNode* Parser::BuildInvocationMirrorAllocation(
// The first argument is the original function name.
arguments->Add(new LiteralNode(args_pos, function_name));
// The second argument is the arguments descriptor of the original function.
- const Array& args_descriptor =
- Array::ZoneHandle(ArgumentsDescriptor::New(function_args.length(),
- function_args.names()));
+ const Array& args_descriptor = Array::ZoneHandle(
+ ArgumentsDescriptor::New(function_args.length(), function_args.names()));
arguments->Add(new LiteralNode(args_pos, args_descriptor));
// The third argument is an array containing the original function arguments,
// including the receiver.
@@ -2388,11 +2306,10 @@ StaticCallNode* Parser::BuildInvocationMirrorAllocation(
AstNode* arg = function_args.NodeAt(i);
if ((temp_for_last_arg != NULL) && (i == function_args.length() - 1)) {
LetNode* store_arg = new LetNode(arg->token_pos());
- store_arg->AddNode(new StoreLocalNode(arg->token_pos(),
- temp_for_last_arg,
- arg));
- store_arg->AddNode(new LoadLocalNode(arg->token_pos(),
- temp_for_last_arg));
+ store_arg->AddNode(
+ new StoreLocalNode(arg->token_pos(), temp_for_last_arg, arg));
+ store_arg->AddNode(
+ new LoadLocalNode(arg->token_pos(), temp_for_last_arg));
args_array->AddElement(store_arg);
} else {
args_array->AddElement(arg);
@@ -2404,8 +2321,8 @@ StaticCallNode* Parser::BuildInvocationMirrorAllocation(
const Class& mirror_class =
Class::Handle(Library::LookupCoreClass(Symbols::InvocationMirror()));
ASSERT(!mirror_class.IsNull());
- const Function& allocation_function = Function::ZoneHandle(
- mirror_class.LookupStaticFunction(
+ const Function& allocation_function =
+ Function::ZoneHandle(mirror_class.LookupStaticFunction(
Library::PrivateCoreLibName(Symbols::AllocateInvocationMirror())));
ASSERT(!allocation_function.IsNull());
return new StaticCallNode(call_pos, allocation_function, arguments);
@@ -2423,11 +2340,9 @@ ArgumentListNode* Parser::BuildNoSuchMethodArguments(
ArgumentListNode* arguments = new ArgumentListNode(args_pos);
arguments->Add(function_args.NodeAt(0));
// The second argument is the invocation mirror.
- arguments->Add(BuildInvocationMirrorAllocation(call_pos,
- function_name,
- function_args,
- temp_for_last_arg,
- is_super_invocation));
+ arguments->Add(
+ BuildInvocationMirrorAllocation(call_pos, function_name, function_args,
+ temp_for_last_arg, is_super_invocation));
return arguments;
}
@@ -2445,20 +2360,15 @@ AstNode* Parser::ParseSuperCall(const String& function_name) {
const bool kResolveGetter = true;
bool is_no_such_method = false;
- const Function& super_function = Function::ZoneHandle(Z,
- GetSuperFunction(supercall_pos,
- function_name,
- arguments,
- kResolveGetter,
- &is_no_such_method));
+ const Function& super_function = Function::ZoneHandle(
+ Z, GetSuperFunction(supercall_pos, function_name, arguments,
+ kResolveGetter, &is_no_such_method));
if (super_function.IsGetterFunction() ||
super_function.IsImplicitGetterFunction()) {
const Class& super_class =
Class::ZoneHandle(Z, current_class().SuperClass());
- AstNode* closure = new StaticGetterNode(supercall_pos,
- LoadReceiver(supercall_pos),
- super_class,
- function_name);
+ AstNode* closure = new StaticGetterNode(
+ supercall_pos, LoadReceiver(supercall_pos), super_class, function_name);
// 'this' is not passed as parameter to the closure.
ArgumentListNode* closure_arguments = new ArgumentListNode(supercall_pos);
for (int i = 1; i < arguments->length(); i++) {
@@ -2467,8 +2377,8 @@ AstNode* Parser::ParseSuperCall(const String& function_name) {
return BuildClosureCall(supercall_pos, closure, closure_arguments);
}
if (is_no_such_method) {
- arguments = BuildNoSuchMethodArguments(
- supercall_pos, function_name, *arguments, NULL, true);
+ arguments = BuildNoSuchMethodArguments(supercall_pos, function_name,
+ *arguments, NULL, true);
}
return new StaticCallNode(supercall_pos, super_function, arguments);
}
@@ -2484,8 +2394,7 @@ AstNode* Parser::BuildUnarySuperOperator(Token::Kind op, PrimaryNode* super) {
ASSERT(super->IsSuper());
AstNode* super_op = NULL;
const TokenPosition super_pos = super->token_pos();
- if ((op == Token::kNEGATE) ||
- (op == Token::kBIT_NOT)) {
+ if ((op == Token::kNEGATE) || (op == Token::kBIT_NOT)) {
// Resolve the operator function in the superclass.
const String& operator_function_name = Symbols::Token(op);
ArgumentListNode* op_arguments = new ArgumentListNode(super_pos);
@@ -2493,12 +2402,9 @@ AstNode* Parser::BuildUnarySuperOperator(Token::Kind op, PrimaryNode* super) {
op_arguments->Add(receiver);
const bool kResolveGetter = false;
bool is_no_such_method = false;
- const Function& super_operator = Function::ZoneHandle(Z,
- GetSuperFunction(super_pos,
- operator_function_name,
- op_arguments,
- kResolveGetter,
- &is_no_such_method));
+ const Function& super_operator = Function::ZoneHandle(
+ Z, GetSuperFunction(super_pos, operator_function_name, op_arguments,
+ kResolveGetter, &is_no_such_method));
if (is_no_such_method) {
op_arguments = BuildNoSuchMethodArguments(
super_pos, operator_function_name, *op_arguments, NULL, true);
@@ -2550,12 +2456,9 @@ AstNode* Parser::ParseSuperOperator() {
const String& operator_function_name = Symbols::Token(op);
const bool kResolveGetter = false;
bool is_no_such_method = false;
- const Function& super_operator = Function::ZoneHandle(Z,
- GetSuperFunction(operator_pos,
- operator_function_name,
- op_arguments,
- kResolveGetter,
- &is_no_such_method));
+ const Function& super_operator = Function::ZoneHandle(
+ Z, GetSuperFunction(operator_pos, operator_function_name, op_arguments,
+ kResolveGetter, &is_no_such_method));
if (is_no_such_method) {
op_arguments = BuildNoSuchMethodArguments(
operator_pos, operator_function_name, *op_arguments, NULL, true);
@@ -2599,37 +2502,36 @@ AstNode* Parser::ParseSuperFieldAccess(const String& field_name,
String::ZoneHandle(Z, Field::LookupSetterSymbol(field_name));
Function& super_setter = Function::ZoneHandle(Z);
if (!setter_name.IsNull()) {
- super_setter = Resolver::ResolveDynamicAnyArgs(Z,
- super_class, setter_name);
+ super_setter =
+ Resolver::ResolveDynamicAnyArgs(Z, super_class, setter_name);
}
if (super_setter.IsNull()) {
// Check if this is an access to an implicit closure using 'super'.
// If a function exists of the specified field_name then try
// accessing it as a getter, at runtime we will handle this by
// creating an implicit closure of the function and returning it.
- const Function& super_function = Function::ZoneHandle(Z,
- Resolver::ResolveDynamicAnyArgs(Z, super_class, field_name));
+ const Function& super_function = Function::ZoneHandle(
+ Z, Resolver::ResolveDynamicAnyArgs(Z, super_class, field_name));
if (!super_function.IsNull()) {
// In case CreateAssignmentNode is called later on this
// CreateImplicitClosureNode, it will be replaced by a StaticSetterNode.
- return CreateImplicitClosureNode(super_function,
- field_pos,
+ return CreateImplicitClosureNode(super_function, field_pos,
implicit_argument);
}
// No function or field exists of the specified field_name.
// Emit a StaticGetterNode anyway, so that noSuchMethod gets called.
}
}
- return new(Z) StaticGetterNode(
- field_pos, implicit_argument, super_class, field_name);
+ return new (Z)
+ StaticGetterNode(field_pos, implicit_argument, super_class, field_name);
}
StaticCallNode* Parser::GenerateSuperConstructorCall(
- const Class& cls,
- TokenPosition supercall_pos,
- LocalVariable* receiver,
- ArgumentListNode* forwarding_args) {
+ const Class& cls,
+ TokenPosition supercall_pos,
+ LocalVariable* receiver,
+ ArgumentListNode* forwarding_args) {
const Class& super_class = Class::Handle(Z, cls.SuperClass());
// Omit the implicit super() if there is no super class (i.e.
// we're not compiling class Object), or if the super class is an
@@ -2659,27 +2561,26 @@ StaticCallNode* Parser::GenerateSuperConstructorCall(
if (ctor_name.Length() > class_name.Length() + 1) {
// Generating a forwarding call to a named constructor 'C.n'.
// Add the constructor name 'n' to the super constructor.
- const intptr_t kLen = class_name.Length() + 1;
+ const intptr_t kLen = class_name.Length() + 1;
ctor_name = Symbols::New(T, ctor_name, kLen, ctor_name.Length() - kLen);
super_ctor_name = Symbols::FromConcat(T, super_ctor_name, ctor_name);
}
}
// Resolve super constructor function and check arguments.
- const Function& super_ctor = Function::ZoneHandle(Z,
- super_class.LookupConstructor(super_ctor_name));
+ const Function& super_ctor =
+ Function::ZoneHandle(Z, super_class.LookupConstructor(super_ctor_name));
if (super_ctor.IsNull()) {
- ReportError(supercall_pos,
- "unresolved implicit call to super constructor '%s()'",
- String::Handle(Z, super_class.Name()).ToCString());
+ ReportError(supercall_pos,
+ "unresolved implicit call to super constructor '%s()'",
+ String::Handle(Z, super_class.Name()).ToCString());
}
if (current_function().is_const() && !super_ctor.is_const()) {
ReportError(supercall_pos, "implicit call to non-const super constructor");
}
String& error_message = String::Handle(Z);
- if (!super_ctor.AreValidArguments(arguments->length(),
- arguments->names(),
+ if (!super_ctor.AreValidArguments(arguments->length(), arguments->names(),
&error_message)) {
ReportError(supercall_pos,
"invalid arguments passed to super constructor '%s()': %s",
@@ -2699,11 +2600,11 @@ StaticCallNode* Parser::ParseSuperInitializer(const Class& cls,
const Class& super_class = Class::Handle(Z, cls.SuperClass());
ASSERT(!super_class.IsNull());
String& ctor_name = String::Handle(Z, super_class.Name());
- ctor_name = Symbols::FromConcat(T, ctor_name, Symbols::Dot());
+ ctor_name = Symbols::FromConcat(T, ctor_name, Symbols::Dot());
if (CurrentToken() == Token::kPERIOD) {
ConsumeToken();
- ctor_name = Symbols::FromConcat(T,
- ctor_name, *ExpectIdentifier("constructor name expected"));
+ ctor_name = Symbols::FromConcat(
+ T, ctor_name, *ExpectIdentifier("constructor name expected"));
}
CheckToken(Token::kLPAREN, "parameter list expected");
@@ -2718,24 +2619,21 @@ StaticCallNode* Parser::ParseSuperInitializer(const Class& cls,
receiver->set_invisible(false);
// Resolve the constructor.
- const Function& super_ctor = Function::ZoneHandle(Z,
- super_class.LookupConstructor(ctor_name));
+ const Function& super_ctor =
+ Function::ZoneHandle(Z, super_class.LookupConstructor(ctor_name));
if (super_ctor.IsNull()) {
- ReportError(supercall_pos,
- "super class constructor '%s' not found",
+ ReportError(supercall_pos, "super class constructor '%s' not found",
ctor_name.ToCString());
}
if (current_function().is_const() && !super_ctor.is_const()) {
ReportError(supercall_pos, "super constructor must be const");
}
String& error_message = String::Handle(Z);
- if (!super_ctor.AreValidArguments(arguments->length(),
- arguments->names(),
+ if (!super_ctor.AreValidArguments(arguments->length(), arguments->names(),
&error_message)) {
ReportError(supercall_pos,
"invalid arguments passed to super class constructor '%s': %s",
- ctor_name.ToCString(),
- error_message.ToCString());
+ ctor_name.ToCString(), error_message.ToCString());
}
return new StaticCallNode(supercall_pos, super_ctor, arguments);
}
@@ -2783,13 +2681,13 @@ AstNode* Parser::ParseInitializer(const Class& cls,
field_name.ToCString());
}
EnsureExpressionTemp();
- AstNode* instance = new(Z) LoadLocalNode(field_pos, receiver);
- AstNode* initializer = CheckDuplicateFieldInit(field_pos,
- initialized_fields, instance, &field, init_expr);
+ AstNode* instance = new (Z) LoadLocalNode(field_pos, receiver);
+ AstNode* initializer = CheckDuplicateFieldInit(field_pos, initialized_fields,
+ instance, &field, init_expr);
if (initializer == NULL) {
initializer =
- new(Z) StoreInstanceFieldNode(field_pos, instance, field, init_expr,
- /* is_initializer = */ true);
+ new (Z) StoreInstanceFieldNode(field_pos, instance, field, init_expr,
+ /* is_initializer = */ true);
}
return initializer;
}
@@ -2860,9 +2758,10 @@ AstNode* Parser::ParseExternalInitializedField(const Field& field) {
}
-void Parser::ParseInitializedInstanceFields(const Class& cls,
- LocalVariable* receiver,
- GrowableArray<Field*>* initialized_fields) {
+void Parser::ParseInitializedInstanceFields(
+ const Class& cls,
+ LocalVariable* receiver,
+ GrowableArray<Field*>* initialized_fields) {
TRACE_PARSER("ParseInitializedInstanceFields");
const Array& fields = Array::Handle(Z, cls.fields());
Field& f = Field::Handle(Z);
@@ -2901,12 +2800,9 @@ void Parser::ParseInitializedInstanceFields(const Class& cls,
ASSERT(init_expr != NULL);
AstNode* instance = new LoadLocalNode(field.token_pos(), receiver);
EnsureExpressionTemp();
- AstNode* field_init =
- new StoreInstanceFieldNode(field.token_pos(),
- instance,
- field,
- init_expr,
- /* is_initializer = */ true);
+ AstNode* field_init = new StoreInstanceFieldNode(
+ field.token_pos(), instance, field, init_expr,
+ /* is_initializer = */ true);
current_block_->statements->Add(field_init);
}
}
@@ -2951,46 +2847,42 @@ AstNode* Parser::CheckDuplicateFieldInit(
// List argumentNames,
// List existingArgumentNames);
- ArgumentListNode* nsm_args = new(Z) ArgumentListNode(init_pos);
+ ArgumentListNode* nsm_args = new (Z) ArgumentListNode(init_pos);
// Object receiver.
nsm_args->Add(instance);
// String memberName.
String& setter_name = String::ZoneHandle(field->name());
setter_name = Field::SetterSymbol(setter_name);
- nsm_args->Add(new(Z) LiteralNode(init_pos, setter_name));
+ nsm_args->Add(new (Z) LiteralNode(init_pos, setter_name));
// Smi invocation_type.
- const int invocation_type =
- InvocationMirror::EncodeType(InvocationMirror::kDynamic,
- InvocationMirror::kSetter);
- nsm_args->Add(new(Z) LiteralNode(
+ const int invocation_type = InvocationMirror::EncodeType(
+ InvocationMirror::kDynamic, InvocationMirror::kSetter);
+ nsm_args->Add(new (Z) LiteralNode(
init_pos, Smi::ZoneHandle(Z, Smi::New(invocation_type))));
// List arguments.
GrowableArray<AstNode*> setter_args;
setter_args.Add(init_value);
- ArrayNode* setter_args_array = new(Z) ArrayNode(
- init_pos,
- Type::ZoneHandle(Z, Type::ArrayType()),
- setter_args);
+ ArrayNode* setter_args_array = new (Z) ArrayNode(
+ init_pos, Type::ZoneHandle(Z, Type::ArrayType()), setter_args);
nsm_args->Add(setter_args_array);
// List argumentNames.
// The missing implicit setter of the field has no argument names.
- nsm_args->Add(new(Z) LiteralNode(init_pos, Object::null_array()));
+ nsm_args->Add(new (Z) LiteralNode(init_pos, Object::null_array()));
// List existingArgumentNames.
// There is no setter for the final field, thus there are
// no existing names.
- nsm_args->Add(new(Z) LiteralNode(init_pos, Object::null_array()));
+ nsm_args->Add(new (Z) LiteralNode(init_pos, Object::null_array()));
AstNode* nsm_call = MakeStaticCall(
Symbols::NoSuchMethodError(),
- Library::PrivateCoreLibName(Symbols::ThrowNew()),
- nsm_args);
+ Library::PrivateCoreLibName(Symbols::ThrowNew()), nsm_args);
- LetNode* let = new(Z) LetNode(init_pos);
+ LetNode* let = new (Z) LetNode(init_pos);
let->AddNode(init_value);
let->AddNode(nsm_call);
result = let;
@@ -3004,8 +2896,7 @@ AstNode* Parser::CheckDuplicateFieldInit(
Field* initialized_field = (*initialized_fields)[initializer_idx];
initializer_idx++;
if (initialized_field->raw() == field->raw()) {
- ReportError(init_pos,
- "duplicate initializer for field %s",
+ ReportError(init_pos, "duplicate initializer for field %s",
String::Handle(Z, field->name()).ToCString());
}
}
@@ -3068,16 +2959,16 @@ void Parser::ParseInitializers(const Class& cls,
}
ASSERT(super_init_index >= 0);
ArgumentListNode* ctor_args = super_init_call->arguments();
- LetNode* saved_args = new(Z) LetNode(super_init_call->token_pos());
+ LetNode* saved_args = new (Z) LetNode(super_init_call->token_pos());
// The super initializer call has at least 1 arguments: the
// implicit receiver.
ASSERT(ctor_args->length() >= 1);
for (int i = 1; i < ctor_args->length(); i++) {
AstNode* arg = ctor_args->NodeAt(i);
LocalVariable* temp = CreateTempConstVariable(arg->token_pos(), "sca");
- AstNode* save_temp = new(Z) StoreLocalNode(arg->token_pos(), temp, arg);
+ AstNode* save_temp = new (Z) StoreLocalNode(arg->token_pos(), temp, arg);
saved_args->AddNode(save_temp);
- ctor_args->SetNodeAt(i, new(Z) LoadLocalNode(arg->token_pos(), temp));
+ ctor_args->SetNodeAt(i, new (Z) LoadLocalNode(arg->token_pos(), temp));
}
current_block_->statements->ReplaceNodeAt(super_init_index, saved_args);
current_block_->statements->Add(super_init_call);
@@ -3113,23 +3004,20 @@ void Parser::ParseConstructorRedirection(const Class& cls,
ParseActualParameters(arguments, kAllowConst);
receiver->set_invisible(false);
// Resolve the constructor.
- const Function& redirect_ctor = Function::ZoneHandle(Z,
- cls.LookupConstructor(ctor_name));
+ const Function& redirect_ctor =
+ Function::ZoneHandle(Z, cls.LookupConstructor(ctor_name));
if (redirect_ctor.IsNull()) {
ReportError(call_pos, "constructor '%s' not found",
- String::Handle(Z, redirect_ctor.UserVisibleName()).ToCString());
+ String::Handle(Z, redirect_ctor.UserVisibleName()).ToCString());
}
if (current_function().is_const() && !redirect_ctor.is_const()) {
- ReportError(call_pos,
- "redirection constructor '%s' must be const",
- String::Handle(Z, redirect_ctor.UserVisibleName()).ToCString());
+ ReportError(call_pos, "redirection constructor '%s' must be const",
+ String::Handle(Z, redirect_ctor.UserVisibleName()).ToCString());
}
String& error_message = String::Handle(Z);
- if (!redirect_ctor.AreValidArguments(arguments->length(),
- arguments->names(),
+ if (!redirect_ctor.AreValidArguments(arguments->length(), arguments->names(),
&error_message)) {
- ReportError(call_pos,
- "invalid arguments passed to constructor '%s': %s",
+ ReportError(call_pos, "invalid arguments passed to constructor '%s': %s",
String::Handle(Z, redirect_ctor.UserVisibleName()).ToCString(),
error_message.ToCString());
}
@@ -3144,11 +3032,9 @@ SequenceNode* Parser::MakeImplicitConstructor(const Function& func) {
const TokenPosition ctor_pos = TokenPos();
OpenFunctionBlock(func);
- LocalVariable* receiver = new LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::This(),
- *ReceiverType(current_class()));
+ LocalVariable* receiver =
+ new LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::This(), *ReceiverType(current_class()));
current_block_->scope->InsertParameterAt(0, receiver);
// Parse expressions of instance fields that have an explicit
@@ -3156,8 +3042,8 @@ SequenceNode* Parser::MakeImplicitConstructor(const Function& func) {
// The receiver must not be visible to field initializer expressions.
receiver->set_invisible(true);
GrowableArray<Field*> initialized_fields;
- ParseInitializedInstanceFields(
- current_class(), receiver, &initialized_fields);
+ ParseInitializedInstanceFields(current_class(), receiver,
+ &initialized_fields);
receiver->set_invisible(false);
// If the class of this implicit constructor is a mixin application alias,
@@ -3193,21 +3079,17 @@ SequenceNode* Parser::MakeImplicitConstructor(const Function& func) {
// The first user-defined argument is at position 1.
forwarding_args = new ArgumentListNode(ST(ctor_pos));
for (int i = 1; i < func.NumParameters(); i++) {
- LocalVariable* param = new LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- String::ZoneHandle(Z, func.ParameterNameAt(i)),
- Object::dynamic_type());
+ LocalVariable* param =
+ new LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ String::ZoneHandle(Z, func.ParameterNameAt(i)),
+ Object::dynamic_type());
current_block_->scope->InsertParameterAt(i, param);
forwarding_args->Add(new LoadLocalNode(ST(ctor_pos), param));
}
}
- AstNode* super_call = GenerateSuperConstructorCall(
- current_class(),
- ctor_pos,
- receiver,
- forwarding_args);
+ AstNode* super_call = GenerateSuperConstructorCall(current_class(), ctor_pos,
+ receiver, forwarding_args);
if (super_call != NULL) {
current_block_->statements->Add(super_call);
}
@@ -3249,8 +3131,7 @@ void Parser::CheckRecursiveInvocation() {
DumpPendingFunctions(Z, pending_functions);
ASSERT(pending_function_dump != NULL);
ReportError("circular dependency for function %s\n%s",
- fname.ToCString(),
- pending_function_dump);
+ fname.ToCString(), pending_function_dump);
} else {
ReportError("circular dependency for function %s", fname.ToCString());
}
@@ -3309,10 +3190,10 @@ SequenceNode* Parser::ParseConstructor(const Function& func) {
const bool is_redirecting_constructor =
(CurrentToken() == Token::kCOLON) &&
- ((LookaheadToken(1) == Token::kTHIS) &&
- ((LookaheadToken(2) == Token::kLPAREN) ||
- ((LookaheadToken(2) == Token::kPERIOD) &&
- (LookaheadToken(4) == Token::kLPAREN))));
+ ((LookaheadToken(1) == Token::kTHIS) &&
+ ((LookaheadToken(2) == Token::kLPAREN) ||
+ ((LookaheadToken(2) == Token::kPERIOD) &&
+ (LookaheadToken(4) == Token::kLPAREN))));
GrowableArray<Field*> initialized_fields;
LocalVariable* receiver = (*params.parameters)[0].var;
@@ -3370,16 +3251,12 @@ SequenceNode* Parser::ParseConstructor(const Function& func) {
ASSERT(p != NULL);
AstNode* value = new LoadLocalNode(param.name_pos, p);
EnsureExpressionTemp();
- AstNode* initializer =
- CheckDuplicateFieldInit(param.name_pos,
- &initialized_fields,
- instance,
- &field,
- value);
+ AstNode* initializer = CheckDuplicateFieldInit(
+ param.name_pos, &initialized_fields, instance, &field, value);
if (initializer == NULL) {
- initializer = new(Z) StoreInstanceFieldNode(
- param.name_pos, instance, field, value,
- /* is_initializer = */ true);
+ initializer = new (Z)
+ StoreInstanceFieldNode(param.name_pos, instance, field, value,
+ /* is_initializer = */ true);
}
current_block_->statements->Add(initializer);
}
@@ -3417,14 +3294,11 @@ SequenceNode* Parser::ParseConstructor(const Function& func) {
if (func.is_external()) {
// Body of an external method contains a single throw.
const String& function_name = String::ZoneHandle(func.name());
- current_block_->statements->Add(
- ThrowNoSuchMethodError(TokenPos(),
- cls,
- function_name,
- NULL, // No arguments.
- InvocationMirror::kStatic,
- InvocationMirror::kMethod,
- NULL)); // No existing function.
+ current_block_->statements->Add(ThrowNoSuchMethodError(
+ TokenPos(), cls, function_name,
+ NULL, // No arguments.
+ InvocationMirror::kStatic, InvocationMirror::kMethod,
+ NULL)); // No existing function.
}
} else {
UnexpectedToken();
@@ -3470,10 +3344,8 @@ SequenceNode* Parser::ParseFunc(const Function& func, bool check_semicolon) {
if (func.IsClosureFunction()) {
// The first parameter of a closure function is the closure object.
ASSERT(!func.is_const()); // Closure functions cannot be const.
- params.AddFinalParameter(
- TokenPos(),
- &Symbols::ClosureParameter(),
- &Object::dynamic_type());
+ params.AddFinalParameter(TokenPos(), &Symbols::ClosureParameter(),
+ &Object::dynamic_type());
} else if (!func.is_static()) {
// Static functions do not have a receiver.
ASSERT(current_class().raw() == func.Owner());
@@ -3481,17 +3353,14 @@ SequenceNode* Parser::ParseFunc(const Function& func, bool check_semicolon) {
} else if (func.IsFactory()) {
// The first parameter of a factory is the TypeArguments vector of
// the type of the instance to be allocated.
- params.AddFinalParameter(
- TokenPos(),
- &Symbols::TypeArgumentsParameter(),
- &Object::dynamic_type());
+ params.AddFinalParameter(TokenPos(), &Symbols::TypeArgumentsParameter(),
+ &Object::dynamic_type());
}
// Expect the parameter list unless this is a getter function, or the
// body closure of an async or generator getter function.
- ASSERT((CurrentToken() == Token::kLPAREN) ||
- func.IsGetterFunction() ||
+ ASSERT((CurrentToken() == Token::kLPAREN) || func.IsGetterFunction() ||
(func.is_generated_body() &&
- Function::Handle(func.parent_function()).IsGetterFunction()));
+ Function::Handle(func.parent_function()).IsGetterFunction()));
const bool allow_explicit_default_values = true;
if (func.IsGetterFunction()) {
// Populate function scope with the formal parameters. Since in this case
@@ -3549,8 +3418,7 @@ SequenceNode* Parser::ParseFunc(const Function& func, bool check_semicolon) {
// Populate function scope with the formal parameters.
AddFormalParamsToScope(&params, current_block_->scope);
- if (I->type_checks() &&
- (FunctionLevel() > 0)) {
+ if (I->type_checks() && (FunctionLevel() > 0)) {
// We are parsing, but not compiling, a local function.
// The instantiator may be required at run time for generic type checks.
if (IsInstantiatorRequired()) {
@@ -3620,8 +3488,7 @@ SequenceNode* Parser::ParseFunc(const Function& func, bool check_semicolon) {
"=> style function may not be sync* or async* generator");
}
ConsumeToken();
- if (String::Handle(Z, func.name()).Equals(
- Symbols::EqualOperator())) {
+ if (String::Handle(Z, func.name()).Equals(Symbols::EqualOperator())) {
const Class& owner = Class::Handle(Z, func.Owner());
if (!owner.IsObjectClass()) {
AddEqualityNullCheck();
@@ -3636,8 +3503,7 @@ SequenceNode* Parser::ParseFunc(const Function& func, bool check_semicolon) {
ExpectSemicolon();
}
} else if (IsSymbol(Symbols::Native())) {
- if (String::Handle(Z, func.name()).Equals(
- Symbols::EqualOperator())) {
+ if (String::Handle(Z, func.name()).Equals(Symbols::EqualOperator())) {
const Class& owner = Class::Handle(Z, func.Owner());
if (!owner.IsObjectClass()) {
AddEqualityNullCheck();
@@ -3649,16 +3515,13 @@ SequenceNode* Parser::ParseFunc(const Function& func, bool check_semicolon) {
} else if (func.is_external()) {
// Body of an external method contains a single throw.
const String& function_name = String::ZoneHandle(Z, func.name());
- current_block_->statements->Add(
- ThrowNoSuchMethodError(TokenPos(),
- Class::Handle(func.Owner()),
- function_name,
- NULL, // Ignore arguments.
- func.is_static() ?
- InvocationMirror::kStatic :
- InvocationMirror::kDynamic,
- InvocationMirror::kMethod,
- &func)); // Unpatched external function.
+ current_block_->statements->Add(ThrowNoSuchMethodError(
+ TokenPos(), Class::Handle(func.Owner()), function_name,
+ NULL, // Ignore arguments.
+ func.is_static() ? InvocationMirror::kStatic
+ : InvocationMirror::kDynamic,
+ InvocationMirror::kMethod,
+ &func)); // Unpatched external function.
end_token_pos = TokenPos();
} else {
UnexpectedToken();
@@ -3693,28 +3556,20 @@ SequenceNode* Parser::ParseFunc(const Function& func, bool check_semicolon) {
void Parser::AddEqualityNullCheck() {
- AstNode* argument =
- new LoadLocalNode(TokenPosition::kNoSource,
- current_block_->scope->parent()->VariableAt(1));
+ AstNode* argument = new LoadLocalNode(
+ TokenPosition::kNoSource, current_block_->scope->parent()->VariableAt(1));
LiteralNode* null_operand =
new LiteralNode(TokenPosition::kNoSource, Instance::ZoneHandle(Z));
- ComparisonNode* check_arg =
- new ComparisonNode(TokenPosition::kNoSource,
- Token::kEQ_STRICT,
- argument,
- null_operand);
+ ComparisonNode* check_arg = new ComparisonNode(
+ TokenPosition::kNoSource, Token::kEQ_STRICT, argument, null_operand);
ComparisonNode* result =
- new ComparisonNode(TokenPosition::kNoSource,
- Token::kEQ_STRICT,
- LoadReceiver(TokenPosition::kNoSource),
- null_operand);
- SequenceNode* arg_is_null = new SequenceNode(TokenPosition::kNoSource,
- current_block_->scope);
+ new ComparisonNode(TokenPosition::kNoSource, Token::kEQ_STRICT,
+ LoadReceiver(TokenPosition::kNoSource), null_operand);
+ SequenceNode* arg_is_null =
+ new SequenceNode(TokenPosition::kNoSource, current_block_->scope);
arg_is_null->Add(new ReturnNode(TokenPosition::kNoSource, result));
- IfNode* if_arg_null = new IfNode(TokenPosition::kNoSource,
- check_arg,
- arg_is_null,
- NULL);
+ IfNode* if_arg_null =
+ new IfNode(TokenPosition::kNoSource, check_arg, arg_is_null, NULL);
current_block_->statements->Add(if_arg_null);
}
@@ -3807,8 +3662,7 @@ RawLibraryPrefix* Parser::ParsePrefix() {
void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
TRACE_PARSER("ParseMethodOrConstructor");
// We are at the beginning of the formal parameters list.
- ASSERT(CurrentToken() == Token::kLPAREN ||
- CurrentToken() == Token::kLT ||
+ ASSERT(CurrentToken() == Token::kLPAREN || CurrentToken() == Token::kLT ||
method->IsGetter());
ASSERT(method->type != NULL); // May still be unresolved.
ASSERT(current_member_ == method);
@@ -3820,10 +3674,9 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
ReportError(method->name_pos, "'final' not allowed for methods");
}
if (method->has_abstract && method->has_static) {
- ReportError(method->name_pos,
- "static method '%s' cannot be abstract",
+ ReportError(method->name_pos, "static method '%s' cannot be abstract",
method->name->ToCString());
- }
+ }
if (method->has_const && !method->IsFactoryOrConstructor()) {
ReportError(method->name_pos, "'const' not allowed for methods");
}
@@ -3834,16 +3687,14 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
current_class().set_is_const();
}
- Function& func = Function::Handle(Z,
+ Function& func = Function::Handle(
+ Z,
Function::New(*method->name, // May change.
- method->kind,
- method->has_static,
- method->has_const,
+ method->kind, method->has_static, method->has_const,
method->has_abstract, // May change.
method->has_external,
method->has_native, // May change.
- current_class(),
- method->decl_begin_pos));
+ current_class(), method->decl_begin_pos));
ASSERT(innermost_function().IsNull());
innermost_function_ = func.raw();
@@ -3858,7 +3709,7 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
}
if (method->IsGetter() || method->IsSetter()) {
ReportError(type_param_pos, "%s cannot be generic",
- method->IsGetter() ? "getter" : "setter");
+ method->IsGetter() ? "getter" : "setter");
}
ParseTypeParameters(false); // Not parameterizing class, but function.
}
@@ -3881,17 +3732,15 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
if (!method->has_static || method->IsConstructor()) {
method->params.AddReceiver(ReceiverType(current_class()), formal_param_pos);
} else if (method->IsFactory()) {
- method->params.AddFinalParameter(
- formal_param_pos,
- &Symbols::TypeArgumentsParameter(),
- &Object::dynamic_type());
+ method->params.AddFinalParameter(formal_param_pos,
+ &Symbols::TypeArgumentsParameter(),
+ &Object::dynamic_type());
}
if (are_implicitly_final) {
method->params.SetImplicitlyFinal();
}
if (!method->IsGetter()) {
- ParseFormalParameterList(allow_explicit_default_values,
- false,
+ ParseFormalParameterList(allow_explicit_default_values, false,
&method->params);
}
@@ -3899,7 +3748,7 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
// unary and binary operator -.
if (method->has_operator) {
if ((method->operator_token == Token::kSUB) &&
- (method->params.num_fixed_parameters == 1)) {
+ (method->params.num_fixed_parameters == 1)) {
// Patch up name for unary operator - so it does not clash with the
// name for binary operator -.
method->operator_token = Token::kNEGATE;
@@ -3919,8 +3768,8 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
} else {
ASSERT(method->IsSetter());
expected_num_parameters = (method->has_static) ? 1 : 2;
- method->dict_name = &String::ZoneHandle(Z,
- Symbols::FromConcat(T, *method->name, Symbols::Equals()));
+ method->dict_name = &String::ZoneHandle(
+ Z, Symbols::FromConcat(T, *method->name, Symbols::Equals()));
method->name = &String::ZoneHandle(Z, Field::SetterSymbol(*method->name));
}
if ((method->params.num_fixed_parameters != expected_num_parameters) ||
@@ -3937,9 +3786,10 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
if (method->IsFactory() && (CurrentToken() == Token::kASSIGN)) {
// Default parameter values are disallowed in redirecting factories.
if (method->params.has_explicit_default_values) {
- ReportError("redirecting factory '%s' may not specify default values "
- "for optional parameters",
- method->name->ToCString());
+ ReportError(
+ "redirecting factory '%s' may not specify default values "
+ "for optional parameters",
+ method->name->ToCString());
}
if (method->has_external) {
ReportError(TokenPos(),
@@ -3952,16 +3802,14 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
const bool consume_unresolved_prefix =
(LookaheadToken(3) == Token::kLT) ||
(LookaheadToken(3) == Token::kPERIOD);
- const AbstractType& type = AbstractType::Handle(Z,
- ParseType(ClassFinalizer::kResolveTypeParameters,
- true,
- consume_unresolved_prefix));
+ const AbstractType& type = AbstractType::Handle(
+ Z, ParseType(ClassFinalizer::kResolveTypeParameters, true,
+ consume_unresolved_prefix));
if (!type.IsMalformed() && type.IsTypeParameter()) {
// Replace the type with a malformed type and compile a throw when called.
redirection_type = ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- type_pos,
+ script_, type_pos,
"factory '%s' may not redirect to type parameter '%s'",
method->name->ToCString(),
String::Handle(Z, type.UserVisibleName()).ToCString());
@@ -3992,7 +3840,8 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
if (method->params.has_field_initializer) {
// Constructors that redirect to another constructor must not
// initialize any fields using field initializer parameters.
- ReportError(formal_param_pos, "Redirecting constructor "
+ ReportError(formal_param_pos,
+ "Redirecting constructor "
"may not use field initializer parameters");
}
ConsumeToken(); // Colon.
@@ -4018,8 +3867,7 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
// Only constructors can redirect to another method.
ASSERT((method->redirect_name == NULL) || method->IsConstructor());
- if (method->IsConstructor() &&
- method->has_external &&
+ if (method->IsConstructor() && method->has_external &&
method->params.has_field_initializer) {
ReportError(method->name_pos,
"external constructor '%s' may not have field initializers",
@@ -4030,23 +3878,20 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
RawFunction::AsyncModifier async_modifier = ParseFunctionModifier();
if ((method->IsFactoryOrConstructor() || method->IsSetter()) &&
(async_modifier != RawFunction::kNoModifier)) {
- ReportError(modifier_pos,
- "%s '%s' may not be async, async* or sync*",
+ ReportError(modifier_pos, "%s '%s' may not be async, async* or sync*",
(method->IsSetter()) ? "setter" : "constructor",
method->name->ToCString());
}
TokenPosition method_end_pos = TokenPos();
String* native_name = NULL;
- if ((CurrentToken() == Token::kLBRACE) ||
- (CurrentToken() == Token::kARROW)) {
+ if ((CurrentToken() == Token::kLBRACE) || (CurrentToken() == Token::kARROW)) {
if (method->has_abstract) {
ReportError(TokenPos(),
"abstract method '%s' may not have a function body",
method->name->ToCString());
} else if (method->has_external) {
- ReportError(TokenPos(),
- "external %s '%s' may not have a function body",
+ ReportError(TokenPos(), "external %s '%s' may not have a function body",
method->IsFactoryOrConstructor() ? "constructor" : "method",
method->name->ToCString());
} else if (method->IsConstructor() && method->has_const) {
@@ -4054,8 +3899,7 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
"const constructor '%s' may not have a function body",
method->name->ToCString());
} else if (method->IsFactory() && method->has_const) {
- ReportError(TokenPos(),
- "const factory '%s' may not have a function body",
+ ReportError(TokenPos(), "const factory '%s' may not have a function body",
method->name->ToCString());
}
if (method->redirect_name != NULL) {
@@ -4085,8 +3929,7 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
"abstract method '%s' may not have a function body",
method->name->ToCString());
} else if (method->IsConstructor() && method->has_const) {
- ReportError(method->name_pos,
- "const constructor '%s' may not be native",
+ ReportError(method->name_pos, "const constructor '%s' may not be native",
method->name->ToCString());
}
if (method->redirect_name != NULL) {
@@ -4099,23 +3942,19 @@ void Parser::ParseMethodOrConstructor(ClassDesc* members, MemberDesc* method) {
method->has_native = true;
} else {
// We haven't found a method body. Issue error if one is required.
- const bool must_have_body =
- method->has_static &&
- !method->has_external &&
- redirection_type.IsNull();
+ const bool must_have_body = method->has_static && !method->has_external &&
+ redirection_type.IsNull();
if (must_have_body) {
- ReportError(method->name_pos,
- "function body expected for method '%s'",
+ ReportError(method->name_pos, "function body expected for method '%s'",
method->name->ToCString());
}
if (CurrentToken() == Token::kSEMICOLON) {
ConsumeToken();
- if (!method->has_static &&
- !method->has_external &&
+ if (!method->has_static && !method->has_external &&
!method->IsConstructor()) {
- // Methods, getters and setters without a body are
- // implicitly abstract.
+ // Methods, getters and setters without a body are
+ // implicitly abstract.
method->has_abstract = true;
}
} else {
@@ -4188,8 +4027,7 @@ void Parser::ParseFieldDefinition(ClassDesc* members, MemberDesc* field) {
// The parser has read the first field name and is now at the token
// after the field name.
ASSERT(CurrentToken() == Token::kSEMICOLON ||
- CurrentToken() == Token::kCOMMA ||
- CurrentToken() == Token::kASSIGN);
+ CurrentToken() == Token::kCOMMA || CurrentToken() == Token::kASSIGN);
ASSERT(field->type != NULL);
ASSERT(field->name_pos.IsReal());
ASSERT(current_member_ == field);
@@ -4249,14 +4087,9 @@ void Parser::ParseFieldDefinition(ClassDesc* members, MemberDesc* field) {
// Create the field object.
const bool is_reflectable =
!(library_.is_dart_scheme() && library_.IsPrivate(*field->name));
- class_field = Field::New(*field->name,
- field->has_static,
- field->has_final,
- field->has_const,
- is_reflectable,
- current_class(),
- *field->type,
- field->name_pos);
+ class_field = Field::New(*field->name, field->has_static, field->has_final,
+ field->has_const, is_reflectable, current_class(),
+ *field->type, field->name_pos);
class_field.set_has_initializer(has_initializer);
members->AddField(class_field);
field->field_ = &class_field;
@@ -4286,15 +4119,12 @@ void Parser::ParseFieldDefinition(ClassDesc* members, MemberDesc* field) {
if (!has_simple_literal) {
String& getter_name =
String::Handle(Z, Field::GetterSymbol(*field->name));
- getter = Function::New(getter_name,
- RawFunction::kImplicitStaticFinalGetter,
- field->has_static,
- field->has_const,
- /* is_abstract = */ false,
- /* is_external = */ false,
- /* is_native = */ false,
- current_class(),
- field->name_pos);
+ getter = Function::New(
+ getter_name, RawFunction::kImplicitStaticFinalGetter,
+ field->has_static, field->has_const,
+ /* is_abstract = */ false,
+ /* is_external = */ false,
+ /* is_native = */ false, current_class(), field->name_pos);
getter.set_result_type(*field->type);
getter.set_is_debuggable(false);
if (library_.is_dart_scheme() && library_.IsPrivate(*field->name)) {
@@ -4309,12 +4139,10 @@ void Parser::ParseFieldDefinition(ClassDesc* members, MemberDesc* field) {
String& getter_name =
String::Handle(Z, Field::GetterSymbol(*field->name));
getter = Function::New(getter_name, RawFunction::kImplicitGetter,
- field->has_static,
- field->has_final,
+ field->has_static, field->has_final,
/* is_abstract = */ false,
/* is_external = */ false,
- /* is_native = */ false,
- current_class(),
+ /* is_native = */ false, current_class(),
field->name_pos);
ParamList params;
ASSERT(current_class().raw() == getter.Owner());
@@ -4328,19 +4156,15 @@ void Parser::ParseFieldDefinition(ClassDesc* members, MemberDesc* field) {
String& setter_name =
String::Handle(Z, Field::SetterSymbol(*field->name));
setter = Function::New(setter_name, RawFunction::kImplicitSetter,
- field->has_static,
- field->has_final,
+ field->has_static, field->has_final,
/* is_abstract = */ false,
/* is_external = */ false,
- /* is_native = */ false,
- current_class(),
+ /* is_native = */ false, current_class(),
field->name_pos);
ParamList params;
ASSERT(current_class().raw() == setter.Owner());
params.AddReceiver(ReceiverType(current_class()), field->name_pos);
- params.AddFinalParameter(TokenPos(),
- &Symbols::Value(),
- field->type);
+ params.AddFinalParameter(TokenPos(), &Symbols::Value(), field->type);
setter.set_result_type(Object::void_type());
setter.set_is_debuggable(false);
if (library_.is_dart_scheme() && library_.IsPrivate(*field->name)) {
@@ -4383,29 +4207,22 @@ void Parser::CheckOperatorArity(const MemberDesc& member) {
}
-void Parser::CheckMemberNameConflict(ClassDesc* members,
- MemberDesc* member) {
+void Parser::CheckMemberNameConflict(ClassDesc* members, MemberDesc* member) {
const String& name = *member->DictName();
if (name.Equals(members->class_name())) {
- ReportError(member->name_pos,
- "%s '%s' conflicts with class name",
- member->ToCString(),
- name.ToCString());
+ ReportError(member->name_pos, "%s '%s' conflicts with class name",
+ member->ToCString(), name.ToCString());
}
if (members->clazz().LookupTypeParameter(name) != TypeParameter::null()) {
- ReportError(member->name_pos,
- "%s '%s' conflicts with type parameter",
- member->ToCString(),
- name.ToCString());
+ ReportError(member->name_pos, "%s '%s' conflicts with type parameter",
+ member->ToCString(), name.ToCString());
}
for (int i = 0; i < members->members().length(); i++) {
MemberDesc* existing_member = &members->members()[i];
if (name.Equals(*existing_member->DictName())) {
- ReportError(member->name_pos,
- "%s '%s' conflicts with previously declared %s",
- member->ToCString(),
- name.ToCString(),
- existing_member->ToCString());
+ ReportError(
+ member->name_pos, "%s '%s' conflicts with previously declared %s",
+ member->ToCString(), name.ToCString(), existing_member->ToCString());
}
}
}
@@ -4447,7 +4264,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
// The member type is the 'dynamic' type.
member.type = &Object::dynamic_type();
} else if ((CurrentToken() == Token::kFACTORY) &&
- (LookaheadToken(1) != Token::kLPAREN)) {
+ (LookaheadToken(1) != Token::kLPAREN)) {
ConsumeToken();
if (member.has_static) {
ReportError("factory method cannot be explicitly marked static");
@@ -4471,10 +4288,9 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
// Lookahead to determine whether the next tokens are a return type.
TokenPosScope saved_pos(this);
if (TryParseReturnType()) {
- if (IsIdentifier() ||
- (CurrentToken() == Token::kGET) ||
- (CurrentToken() == Token::kSET) ||
- (CurrentToken() == Token::kOPERATOR)) {
+ if (IsIdentifier() || (CurrentToken() == Token::kGET) ||
+ (CurrentToken() == Token::kSET) ||
+ (CurrentToken() == Token::kOPERATOR)) {
found_type = true;
}
}
@@ -4482,8 +4298,8 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
if (found_type) {
// It is too early to resolve the type here, since it can be a result type
// referring to a not yet declared function type parameter.
- member.type = &AbstractType::ZoneHandle(Z,
- ParseType(ClassFinalizer::kDoNotResolve));
+ member.type = &AbstractType::ZoneHandle(
+ Z, ParseType(ClassFinalizer::kDoNotResolve));
}
}
@@ -4508,17 +4324,17 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
}
// Do not bypass class resolution by using current_class() directly, since
// it may be a patch class.
- const Object& result_type_class = Object::Handle(Z,
- UnresolvedClass::New(LibraryPrefix::Handle(Z),
- *member.name,
- member.name_pos));
+ const Object& result_type_class =
+ Object::Handle(Z, UnresolvedClass::New(LibraryPrefix::Handle(Z),
+ *member.name, member.name_pos));
// The type arguments of the result type are the type parameters of the
// current class. Note that in the case of a patch class, they are copied
// from the class being patched.
- member.type = &Type::ZoneHandle(Z, Type::New(
- result_type_class,
- TypeArguments::Handle(Z, current_class().type_parameters()),
- member.name_pos));
+ member.type = &Type::ZoneHandle(
+ Z,
+ Type::New(result_type_class,
+ TypeArguments::Handle(Z, current_class().type_parameters()),
+ member.name_pos));
// We must be dealing with a constructor or named constructor.
member.kind = RawFunction::kConstructor;
@@ -4537,7 +4353,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
(LookaheadToken(1) != Token::kLPAREN) &&
(LookaheadToken(1) != Token::kLT) &&
(LookaheadToken(1) != Token::kASSIGN) &&
- (LookaheadToken(1) != Token::kCOMMA) &&
+ (LookaheadToken(1) != Token::kCOMMA) &&
(LookaheadToken(1) != Token::kSEMICOLON)) {
ConsumeToken();
member.kind = RawFunction::kGetterFunction;
@@ -4548,8 +4364,8 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
(LookaheadToken(1) != Token::kLPAREN) &&
(LookaheadToken(1) != Token::kLT) &&
(LookaheadToken(1) != Token::kASSIGN) &&
- (LookaheadToken(1) != Token::kCOMMA) &&
- (LookaheadToken(1) != Token::kSEMICOLON)) {
+ (LookaheadToken(1) != Token::kCOMMA) &&
+ (LookaheadToken(1) != Token::kSEMICOLON)) {
ConsumeToken();
member.kind = RawFunction::kSetterFunction;
member.name_pos = this->TokenPos();
@@ -4563,7 +4379,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
} else if ((CurrentToken() == Token::kOPERATOR) && !member.has_var &&
(LookaheadToken(1) != Token::kLPAREN) &&
(LookaheadToken(1) != Token::kASSIGN) &&
- (LookaheadToken(1) != Token::kCOMMA) &&
+ (LookaheadToken(1) != Token::kCOMMA) &&
(LookaheadToken(1) != Token::kSEMICOLON)) {
// TODO(hausner): handle the case of a generic function named 'operator':
// eg: T operator<T>(a, b) => ...
@@ -4578,8 +4394,8 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
member.has_operator = true;
member.kind = RawFunction::kRegularFunction;
member.name_pos = this->TokenPos();
- member.name = &String::ZoneHandle(Z,
- Symbols::Token(member.operator_token).raw());
+ member.name =
+ &String::ZoneHandle(Z, Symbols::Token(member.operator_token).raw());
ConsumeToken();
} else if (IsIdentifier()) {
member.name = CurrentLiteral();
@@ -4598,7 +4414,7 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
ASSERT(member.IsFactory() == member.has_factory);
// Note that member.type may still be unresolved.
ParseMethodOrConstructor(members, &member);
- } else if (CurrentToken() == Token::kSEMICOLON ||
+ } else if (CurrentToken() == Token::kSEMICOLON ||
CurrentToken() == Token::kCOMMA ||
CurrentToken() == Token::kASSIGN) {
// Field definition.
@@ -4610,8 +4426,9 @@ void Parser::ParseClassMemberDefinition(ClassDesc* members,
if (member.has_final) {
member.type = &Object::dynamic_type();
} else {
- ReportError("missing 'var', 'final', 'const' or type"
- " in field declaration");
+ ReportError(
+ "missing 'var', 'final', 'const' or type"
+ " in field declaration");
}
} else if (member.type->IsVoidType()) {
ReportError(member.name_pos, "field may not be 'void'");
@@ -4687,7 +4504,7 @@ void Parser::ParseClassDeclaration(const GrowableObjectArray& pending_classes,
bool is_patch = false;
bool is_abstract = false;
TokenPosition declaration_pos =
- metadata_pos.IsReal() ? metadata_pos : TokenPos();
+ metadata_pos.IsReal() ? metadata_pos : TokenPos();
if (is_patch_source() && IsPatchAnnotation(metadata_pos)) {
is_patch = true;
metadata_pos = TokenPosition::kNoSource;
@@ -4769,8 +4586,7 @@ void Parser::ParseClassDeclaration(const GrowableObjectArray& pending_classes,
ReportError(new_type_param.token_pos(),
"type parameter '%s' of patch class '%s' does not match "
"original type parameter '%s'",
- new_name.ToCString(),
- class_name.ToCString(),
+ new_name.ToCString(), class_name.ToCString(),
orig_name.ToCString());
}
new_bound = new_type_param.bound();
@@ -4780,8 +4596,7 @@ void Parser::ParseClassDeclaration(const GrowableObjectArray& pending_classes,
"bound '%s' of type parameter '%s' of patch class '%s' "
"does not match original type parameter bound '%s'",
String::Handle(new_bound.UserVisibleName()).ToCString(),
- new_name.ToCString(),
- class_name.ToCString(),
+ new_name.ToCString(), class_name.ToCString(),
String::Handle(orig_bound.UserVisibleName()).ToCString());
}
}
@@ -4813,16 +4628,13 @@ void Parser::ParseClassDeclaration(const GrowableObjectArray& pending_classes,
}
if (super_type.IsDynamicType()) {
// Unlikely here, since super type is not resolved yet.
- ReportError(type_pos,
- "class '%s' may not extend 'dynamic'",
+ ReportError(type_pos, "class '%s' may not extend 'dynamic'",
class_name.ToCString());
}
if (super_type.IsTypeParameter()) {
- ReportError(type_pos,
- "class '%s' may not extend type parameter '%s'",
+ ReportError(type_pos, "class '%s' may not extend type parameter '%s'",
class_name.ToCString(),
- String::Handle(Z,
- super_type.UserVisibleName()).ToCString());
+ String::Handle(Z, super_type.UserVisibleName()).ToCString());
}
// The class finalizer will check whether the super type is malbounded.
if (is_mixin_declaration) {
@@ -4895,8 +4707,7 @@ void Parser::ParseClassDefinition(const Class& cls) {
ExpectToken(Token::kRBRACE);
if (cls.LookupTypeParameter(class_name) != TypeParameter::null()) {
- ReportError(class_pos,
- "class name conflicts with type parameter '%s'",
+ ReportError(class_pos, "class name conflicts with type parameter '%s'",
class_name.ToCString());
}
CheckConstructors(&members);
@@ -4962,24 +4773,19 @@ void Parser::ParseEnumDefinition(const Class& cls) {
true, // Field is final.
false, // Not const.
true, // Is reflectable.
- cls,
- int_type,
- cls.token_pos());
+ cls, int_type, cls.token_pos());
enum_members.AddField(index_field);
// Add implicit getter for index field.
const String& getter_name =
String::Handle(Z, Field::GetterSymbol(Symbols::Index()));
Function& getter = Function::Handle(Z);
- getter = Function::New(getter_name,
- RawFunction::kImplicitGetter,
+ getter = Function::New(getter_name, RawFunction::kImplicitGetter,
/* is_static = */ false,
/* is_const = */ true,
/* is_abstract = */ false,
/* is_external = */ false,
- /* is_native = */ false,
- cls,
- cls.token_pos());
+ /* is_native = */ false, cls, cls.token_pos());
getter.set_result_type(int_type);
getter.set_is_debuggable(false);
ParamList params;
@@ -5002,22 +4808,24 @@ void Parser::ParseEnumDefinition(const Class& cls) {
// Check for name conflicts.
if (enum_ident->raw() == cls.Name()) {
ReportError("enum identifier '%s' cannot be equal to enum type name",
- CurrentLiteral()->ToCString());
+ CurrentLiteral()->ToCString());
} else if (enum_ident->raw() == Symbols::Index().raw()) {
- ReportError("enum identifier conflicts with "
- "implicit instance field 'index'");
+ ReportError(
+ "enum identifier conflicts with "
+ "implicit instance field 'index'");
} else if (enum_ident->raw() == Symbols::Values().raw()) {
- ReportError("enum identifier conflicts with "
- "implicit static field 'values'");
+ ReportError(
+ "enum identifier conflicts with "
+ "implicit static field 'values'");
} else if (enum_ident->raw() == Symbols::toString().raw()) {
- ReportError("enum identifier conflicts with "
- "implicit instance method 'toString()'");
+ ReportError(
+ "enum identifier conflicts with "
+ "implicit instance method 'toString()'");
}
for (intptr_t n = 0; n < declared_names.length(); n++) {
if (enum_ident->Equals(*declared_names[n])) {
ReportError("Duplicate name '%s' in enum definition '%s'",
- enum_ident->ToCString(),
- enum_name.ToCString());
+ enum_ident->ToCString(), enum_name.ToCString());
}
}
declared_names.Add(enum_ident);
@@ -5027,10 +4835,8 @@ void Parser::ParseEnumDefinition(const Class& cls) {
/* is_static = */ true,
/* is_final = */ true,
/* is_const = */ true,
- /* is_reflectable = */ true,
- cls,
- Object::dynamic_type(),
- cls.token_pos());
+ /* is_reflectable = */ true, cls,
+ Object::dynamic_type(), cls.token_pos());
enum_value.set_has_initializer(false);
enum_members.AddField(enum_value);
// Initialize the field with the ordinal value. It will be patched
@@ -5049,14 +4855,13 @@ void Parser::ParseEnumDefinition(const Class& cls) {
// Add static field 'const List values'.
Field& values_field = Field::ZoneHandle(Z);
- values_field = Field::New(Symbols::Values(),
- /* is_static = */ true,
- /* is_final = */ true,
- /* is_const = */ true,
- /* is_reflectable = */ true,
- cls,
- Type::Handle(Z, Type::ArrayType()),
- cls.token_pos());
+ values_field =
+ Field::New(Symbols::Values(),
+ /* is_static = */ true,
+ /* is_final = */ true,
+ /* is_const = */ true,
+ /* is_reflectable = */ true, cls,
+ Type::Handle(Z, Type::ArrayType()), cls.token_pos());
enum_members.AddField(values_field);
// Allocate the immutable array containing the enumeration values.
@@ -5066,8 +4871,8 @@ void Parser::ParseEnumDefinition(const Class& cls) {
values_field.RecordStore(values_array);
// Clone the _name field from the helper class.
- Field& _name_field = Field::Handle(Z,
- helper_class.LookupInstanceFieldAllowPrivate(Symbols::_name()));
+ Field& _name_field = Field::Handle(
+ Z, helper_class.LookupInstanceFieldAllowPrivate(Symbols::_name()));
ASSERT(!_name_field.IsNull());
_name_field = _name_field.Clone(cls);
enum_members.AddField(_name_field);
@@ -5076,18 +4881,15 @@ void Parser::ParseEnumDefinition(const Class& cls) {
// name directly here so that the private key matches those of the other
// cloned helper functions and fields.
const Type& string_type = Type::Handle(Z, Type::StringType());
- const String& name_getter_name = String::Handle(Z,
- Field::GetterSymbol(String::Handle(_name_field.name())));
+ const String& name_getter_name = String::Handle(
+ Z, Field::GetterSymbol(String::Handle(_name_field.name())));
Function& name_getter = Function::Handle(Z);
- name_getter = Function::New(name_getter_name,
- RawFunction::kImplicitGetter,
+ name_getter = Function::New(name_getter_name, RawFunction::kImplicitGetter,
/* is_static = */ false,
/* is_const = */ true,
/* is_abstract = */ false,
/* is_external = */ false,
- /* is_native = */ false,
- cls,
- cls.token_pos());
+ /* is_native = */ false, cls, cls.token_pos());
name_getter.set_result_type(string_type);
name_getter.set_is_debuggable(false);
ParamList name_params;
@@ -5096,15 +4898,15 @@ void Parser::ParseEnumDefinition(const Class& cls) {
enum_members.AddFunction(name_getter);
// Clone the toString() function from the helper class.
- Function& to_string_func = Function::Handle(Z,
- helper_class.LookupDynamicFunctionAllowPrivate(Symbols::toString()));
+ Function& to_string_func = Function::Handle(
+ Z, helper_class.LookupDynamicFunctionAllowPrivate(Symbols::toString()));
ASSERT(!to_string_func.IsNull());
to_string_func = to_string_func.Clone(cls);
enum_members.AddFunction(to_string_func);
// Clone the hashCode getter function from the helper class.
- Function& hash_code_func = Function::Handle(Z,
- helper_class.LookupDynamicFunctionAllowPrivate(Symbols::hashCode()));
+ Function& hash_code_func = Function::Handle(
+ Z, helper_class.LookupDynamicFunctionAllowPrivate(Symbols::hashCode()));
ASSERT(!hash_code_func.IsNull());
hash_code_func = hash_code_func.Clone(cls);
enum_members.AddFunction(hash_code_func);
@@ -5123,16 +4925,13 @@ void Parser::AddImplicitConstructor(const Class& cls) {
// To indicate that this is an implicit constructor, we set the
// token position and end token position of the function
// to the token position of the class.
- Function& ctor = Function::Handle(Z,
- Function::New(ctor_name,
- RawFunction::kConstructor,
- /* is_static = */ false,
- /* is_const = */ false,
- /* is_abstract = */ false,
- /* is_external = */ false,
- /* is_native = */ false,
- cls,
- cls.token_pos()));
+ Function& ctor = Function::Handle(
+ Z, Function::New(ctor_name, RawFunction::kConstructor,
+ /* is_static = */ false,
+ /* is_const = */ false,
+ /* is_abstract = */ false,
+ /* is_external = */ false,
+ /* is_native = */ false, cls, cls.token_pos()));
ctor.set_end_token_pos(ctor.token_pos());
ctor.set_is_debuggable(false);
if (library_.is_dart_scheme() && library_.IsPrivate(ctor_name)) {
@@ -5183,10 +4982,9 @@ void Parser::CheckConstructors(ClassDesc* class_desc) {
}
-void Parser::ParseMixinAppAlias(
- const GrowableObjectArray& pending_classes,
- const Object& tl_owner,
- TokenPosition metadata_pos) {
+void Parser::ParseMixinAppAlias(const GrowableObjectArray& pending_classes,
+ const Object& tl_owner,
+ TokenPosition metadata_pos) {
TRACE_PARSER("ParseMixinAppAlias");
const TokenPosition classname_pos = TokenPos();
String& class_name = *ExpectUserDefinedTypeIdentifier("class name expected");
@@ -5199,9 +4997,8 @@ void Parser::ParseMixinAppAlias(
ReportError(classname_pos, "'%s' is already defined",
class_name.ToCString());
}
- const Class& mixin_application =
- Class::Handle(Z, Class::New(library_, class_name,
- script_, classname_pos));
+ const Class& mixin_application = Class::Handle(
+ Z, Class::New(library_, class_name, script_, classname_pos));
mixin_application.set_is_mixin_app_alias();
library_.AddClass(mixin_application);
set_current_class(mixin_application);
@@ -5215,12 +5012,10 @@ void Parser::ParseMixinAppAlias(
}
const TokenPosition type_pos = TokenPos();
- AbstractType& type =
- AbstractType::Handle(Z,
- ParseType(ClassFinalizer::kResolveTypeParameters));
+ AbstractType& type = AbstractType::Handle(
+ Z, ParseType(ClassFinalizer::kResolveTypeParameters));
if (type.IsTypeParameter()) {
- ReportError(type_pos,
- "class '%s' may not extend type parameter '%s'",
+ ReportError(type_pos, "class '%s' may not extend type parameter '%s'",
class_name.ToCString(),
String::Handle(Z, type.UserVisibleName()).ToCString());
}
@@ -5317,17 +5112,16 @@ void Parser::ParseTypedef(const GrowableObjectArray& pending_classes,
const Object& obj =
Object::Handle(Z, library_.LookupLocalObject(*alias_name));
if (!obj.IsNull()) {
- ReportError(alias_name_pos,
- "'%s' is already defined", alias_name->ToCString());
+ ReportError(alias_name_pos, "'%s' is already defined",
+ alias_name->ToCString());
}
// Create the function type alias scope class. It will be linked to its
// signature function after it has been parsed. The type parameters, in order
// to be properly finalized, need to be associated to this scope class as
// they are parsed.
- const Class& function_type_alias =
- Class::Handle(Z, Class::New(
- library_, *alias_name, script_, declaration_pos));
+ const Class& function_type_alias = Class::Handle(
+ Z, Class::New(library_, *alias_name, script_, declaration_pos));
function_type_alias.set_is_synthesized_class();
function_type_alias.set_is_abstract();
function_type_alias.set_is_prefinalized();
@@ -5345,18 +5139,15 @@ void Parser::ParseTypedef(const GrowableObjectArray& pending_classes,
ParamList func_params;
// Add implicit closure object parameter.
- func_params.AddFinalParameter(
- TokenPos(),
- &Symbols::ClosureParameter(),
- &Object::dynamic_type());
+ func_params.AddFinalParameter(TokenPos(), &Symbols::ClosureParameter(),
+ &Object::dynamic_type());
// Mark the current class as a typedef class (by setting its signature
// function field to a non-null function) before parsing its formal parameters
// so that parsed function types are aware that their owner class is a
// typedef class.
- Function& signature_function =
- Function::Handle(Z, Function::NewSignatureFunction(function_type_alias,
- alias_name_pos));
+ Function& signature_function = Function::Handle(
+ Z, Function::NewSignatureFunction(function_type_alias, alias_name_pos));
ASSERT(innermost_function().IsNull());
innermost_function_ = signature_function.raw();
// Set the signature function in the function type alias class.
@@ -5380,9 +5171,7 @@ void Parser::ParseTypedef(const GrowableObjectArray& pending_classes,
ASSERT(!function_type_alias.is_finalized());
pending_classes.Add(function_type_alias, Heap::kOld);
if (FLAG_enable_mirrors && metadata_pos.IsReal()) {
- library_.AddClassMetadata(function_type_alias,
- tl_owner,
- metadata_pos);
+ library_.AddClassMetadata(function_type_alias, tl_owner, metadata_pos);
}
}
@@ -5517,10 +5306,7 @@ void Parser::ParseTypeParameters(bool parameterizing_class) {
type_parameter = TypeParameter::New(
parameterizing_class ? current_class() : Class::Handle(Z),
parameterizing_class ? Function::Handle(Z) : innermost_function(),
- index,
- type_parameter_name,
- type_parameter_bound,
- declaration_pos);
+ index, type_parameter_name, type_parameter_bound, declaration_pos);
if (!parameterizing_class) {
// TODO(regis): Resolve and finalize function type parameter in
// class finalizer. For now, already mark as finalized.
@@ -5641,7 +5427,7 @@ RawAbstractType* Parser::ParseMixins(const AbstractType& super_type) {
mixin_types.Add(mixin_type);
} while (CurrentToken() == Token::kCOMMA);
return MixinAppType::New(super_type,
- Array::Handle(Z, Array::MakeArray(mixin_types)));
+ Array::Handle(Z, Array::MakeArray(mixin_types)));
}
@@ -5653,8 +5439,8 @@ void Parser::ParseTopLevelVariable(TopLevel* top_level,
// Const fields are implicitly final.
const bool is_final = is_const || (CurrentToken() == Token::kFINAL);
const bool is_static = true;
- const AbstractType& type = AbstractType::ZoneHandle(Z,
- ParseConstFinalVarOrType(ClassFinalizer::kResolveTypeParameters));
+ const AbstractType& type = AbstractType::ZoneHandle(
+ Z, ParseConstFinalVarOrType(ClassFinalizer::kResolveTypeParameters));
Field& field = Field::Handle(Z);
Function& getter = Function::Handle(Z);
while (true) {
@@ -5706,15 +5492,12 @@ void Parser::ParseTopLevelVariable(TopLevel* top_level,
if (!has_simple_literal) {
// Create a static final getter.
String& getter_name = String::Handle(Z, Field::GetterSymbol(var_name));
- getter = Function::New(getter_name,
- RawFunction::kImplicitStaticFinalGetter,
- is_static,
- is_const,
- /* is_abstract = */ false,
- /* is_external = */ false,
- /* is_native = */ false,
- owner,
- name_pos);
+ getter =
+ Function::New(getter_name, RawFunction::kImplicitStaticFinalGetter,
+ is_static, is_const,
+ /* is_abstract = */ false,
+ /* is_external = */ false,
+ /* is_native = */ false, owner, name_pos);
getter.set_result_type(type);
getter.set_is_debuggable(false);
getter.set_is_reflectable(is_reflectable);
@@ -5749,8 +5532,7 @@ RawFunction::AsyncModifier Parser::ParseFunctionModifier() {
} else {
return RawFunction::kAsync;
}
- } else if (IsSymbol(Symbols::Sync()) &&
- (LookaheadToken(1) == Token::kMUL)) {
+ } else if (IsSymbol(Symbols::Sync()) && (LookaheadToken(1) == Token::kMUL)) {
const bool enableSyncStar = true;
if (!enableSyncStar) {
ReportError("sync* generator functions are not yet supported");
@@ -5807,16 +5589,13 @@ void Parser::ParseTopLevelFunction(TopLevel* top_level,
// A setter named x= may co-exist with a function named x, thus we do
// not need to check setters.
- Function& func = Function::Handle(Z,
- Function::New(func_name,
- RawFunction::kRegularFunction,
- /* is_static = */ true,
- /* is_const = */ false,
- /* is_abstract = */ false,
- is_external,
- /* is_native = */ false, // May change.
- owner,
- decl_begin_pos));
+ Function& func = Function::Handle(
+ Z, Function::New(func_name, RawFunction::kRegularFunction,
+ /* is_static = */ true,
+ /* is_const = */ false,
+ /* is_abstract = */ false, is_external,
+ /* is_native = */ false, // May change.
+ owner, decl_begin_pos));
ASSERT(innermost_function().IsNull());
innermost_function_ = func.raw();
@@ -5919,8 +5698,7 @@ void Parser::ParseTopLevelAccessor(TopLevel* top_level,
is_external = true;
}
bool is_getter = (CurrentToken() == Token::kGET);
- if (CurrentToken() == Token::kGET ||
- CurrentToken() == Token::kSET) {
+ if (CurrentToken() == Token::kGET || CurrentToken() == Token::kSET) {
ConsumeToken();
result_type = Type::DynamicType();
} else {
@@ -5979,12 +5757,10 @@ void Parser::ParseTopLevelAccessor(TopLevel* top_level,
bool found = library_.LookupLocalObject(accessor_name) != Object::null();
if (found && !is_patch) {
ReportError(name_pos, "%s for '%s' is already defined",
- is_getter ? "getter" : "setter",
- field_name->ToCString());
+ is_getter ? "getter" : "setter", field_name->ToCString());
} else if (!found && is_patch) {
ReportError(name_pos, "missing %s for '%s' cannot be patched",
- is_getter ? "getter" : "setter",
- field_name->ToCString());
+ is_getter ? "getter" : "setter", field_name->ToCString());
}
const TokenPosition modifier_pos = TokenPos();
@@ -6023,17 +5799,13 @@ void Parser::ParseTopLevelAccessor(TopLevel* top_level,
} else {
ReportError("function block expected");
}
- Function& func = Function::Handle(Z,
- Function::New(accessor_name,
- is_getter ? RawFunction::kGetterFunction :
- RawFunction::kSetterFunction,
- is_static,
- /* is_const = */ false,
- /* is_abstract = */ false,
- is_external,
- is_native,
- owner,
- decl_begin_pos));
+ Function& func = Function::Handle(
+ Z, Function::New(accessor_name, is_getter ? RawFunction::kGetterFunction
+ : RawFunction::kSetterFunction,
+ is_static,
+ /* is_const = */ false,
+ /* is_abstract = */ false, is_external, is_native, owner,
+ decl_begin_pos));
func.set_result_type(result_type);
func.set_end_token_pos(accessor_end_pos);
func.set_modifier(func_modifier);
@@ -6050,9 +5822,9 @@ void Parser::ParseTopLevelAccessor(TopLevel* top_level,
library_.AddObject(func, accessor_name);
} else {
// Need to remove the previously added accessor that is being patched.
- const Class& toplevel_cls = Class::Handle(Z,
- owner.IsClass() ? Class::Cast(owner).raw()
- : PatchClass::Cast(owner).patched_class());
+ const Class& toplevel_cls = Class::Handle(
+ Z, owner.IsClass() ? Class::Cast(owner).raw()
+ : PatchClass::Cast(owner).patched_class());
const Function& replaced_func =
Function::Handle(Z, toplevel_cls.LookupFunction(accessor_name));
ASSERT(!replaced_func.IsNull());
@@ -6085,8 +5857,7 @@ RawObject* Parser::CallLibraryTagHandler(Dart_LibraryTag tag,
{
TransitionVMToNative transition(T);
Api::Scope api_scope(T);
- Dart_Handle retval = handler(tag,
- Api::NewHandle(T, library_.raw()),
+ Dart_Handle retval = handler(tag, Api::NewHandle(T, library_.raw()),
Api::NewHandle(T, url.raw()));
result = Api::UnwrapHandle(retval);
}
@@ -6185,9 +5956,10 @@ void Parser::ParseLibraryImportExport(const Object& tl_owner,
// Check if this conditional line overrides the default import.
const String& key = String::Handle(
String::ConcatAll(Array::Handle(Array::MakeArray(pieces))));
- const String& value = (valueNode == NULL)
- ? Symbols::True()
- : String::Cast(valueNode->AsLiteralNode()->literal());
+ const String& value =
+ (valueNode == NULL)
+ ? Symbols::True()
+ : String::Cast(valueNode->AsLiteralNode()->literal());
// Call the embedder to supply us with the environment.
const String& env_value =
String::Handle(Api::GetEnvironmentValue(T, key));
@@ -6219,8 +5991,7 @@ void Parser::ParseLibraryImportExport(const Object& tl_owner,
Array& show_names = Array::Handle(Z);
Array& hide_names = Array::Handle(Z);
- if (is_deferred_import ||
- IsSymbol(Symbols::Show()) ||
+ if (is_deferred_import || IsSymbol(Symbols::Show()) ||
IsSymbol(Symbols::Hide())) {
GrowableObjectArray& show_list =
GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
@@ -6271,8 +6042,8 @@ void Parser::ParseLibraryImportExport(const Object& tl_owner,
CallLibraryTagHandler(Dart_kImportTag, import_pos, canon_url);
}
- Namespace& ns = Namespace::Handle(Z,
- Namespace::New(library, show_names, hide_names));
+ Namespace& ns =
+ Namespace::Handle(Z, Namespace::New(library, show_names, hide_names));
if (FLAG_enable_mirrors && metadata_pos.IsReal()) {
ns.AddMetadata(tl_owner, metadata_pos);
}
@@ -6369,7 +6140,7 @@ void Parser::ParseLibraryDefinition(const Object& tl_owner) {
metadata_pos = SkipMetadata();
}
while ((CurrentToken() == Token::kIMPORT) ||
- (CurrentToken() == Token::kEXPORT)) {
+ (CurrentToken() == Token::kEXPORT)) {
ParseLibraryImportExport(tl_owner, metadata_pos);
rewind_pos = TokenPos();
metadata_pos = SkipMetadata();
@@ -6379,7 +6150,8 @@ void Parser::ParseLibraryDefinition(const Object& tl_owner) {
if (!library_.ImportsCorelib()) {
Library& core_lib = Library::Handle(Z, Library::CoreLibrary());
ASSERT(!core_lib.IsNull());
- const Namespace& core_ns = Namespace::Handle(Z,
+ const Namespace& core_ns = Namespace::Handle(
+ Z,
Namespace::New(core_lib, Object::null_array(), Object::null_array()));
library_.AddImport(core_ns);
}
@@ -6455,7 +6227,7 @@ void Parser::ParseTopLevel() {
set_current_class(toplevel_class);
ParseTypedef(pending_classes, tl_owner, metadata_pos);
} else if ((CurrentToken() == Token::kABSTRACT) &&
- (LookaheadToken(1) == Token::kCLASS)) {
+ (LookaheadToken(1) == Token::kCLASS)) {
ParseClassDeclaration(pending_classes, tl_owner, metadata_pos);
} else {
set_current_class(toplevel_class);
@@ -6499,10 +6271,8 @@ void Parser::CheckStack() {
void Parser::ChainNewBlock(LocalScope* outer_scope) {
- Block* block = new(Z) Block(
- current_block_,
- outer_scope,
- new(Z) SequenceNode(TokenPos(), outer_scope));
+ Block* block = new (Z) Block(current_block_, outer_scope,
+ new (Z) SequenceNode(TokenPos(), outer_scope));
current_block_ = block;
}
@@ -6510,18 +6280,16 @@ void Parser::ChainNewBlock(LocalScope* outer_scope) {
void Parser::OpenBlock() {
ASSERT(current_block_ != NULL);
LocalScope* outer_scope = current_block_->scope;
- ChainNewBlock(new(Z) LocalScope(
- outer_scope, outer_scope->function_level(), outer_scope->loop_level()));
+ ChainNewBlock(new (Z) LocalScope(outer_scope, outer_scope->function_level(),
+ outer_scope->loop_level()));
}
void Parser::OpenLoopBlock() {
ASSERT(current_block_ != NULL);
LocalScope* outer_scope = current_block_->scope;
- ChainNewBlock(new(Z) LocalScope(
- outer_scope,
- outer_scope->function_level(),
- outer_scope->loop_level() + 1));
+ ChainNewBlock(new (Z) LocalScope(outer_scope, outer_scope->function_level(),
+ outer_scope->loop_level() + 1));
}
@@ -6530,22 +6298,20 @@ void Parser::OpenFunctionBlock(const Function& func) {
if (current_block_ == NULL) {
if (!func.IsLocalFunction()) {
// We are compiling a non-nested function.
- outer_scope = new(Z) LocalScope(NULL, 0, 0);
+ outer_scope = new (Z) LocalScope(NULL, 0, 0);
} else {
// We are compiling the function of an invoked closure.
// Restore the outer scope containing all captured variables.
const ContextScope& context_scope =
ContextScope::Handle(Z, func.context_scope());
ASSERT(!context_scope.IsNull());
- outer_scope = new(Z) LocalScope(
- LocalScope::RestoreOuterScope(context_scope), 0, 0);
+ outer_scope = new (Z)
+ LocalScope(LocalScope::RestoreOuterScope(context_scope), 0, 0);
}
} else {
// We are parsing a nested function while compiling the enclosing function.
- outer_scope =
- new(Z) LocalScope(current_block_->scope,
- current_block_->scope->function_level() + 1,
- 0);
+ outer_scope = new (Z) LocalScope(
+ current_block_->scope, current_block_->scope->function_level() + 1, 0);
}
ChainNewBlock(outer_scope);
}
@@ -6558,7 +6324,7 @@ void Parser::OpenAsyncClosure() {
}
-SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
+SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode* body) {
TRACE_PARSER("CloseAsyncGeneratorTryBlock");
// The generated try-catch-finally that wraps the async generator function
// body is the outermost try statement.
@@ -6586,25 +6352,24 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
stack_trace_param.type = &Object::dynamic_type();
stack_trace_param.name = &Symbols::StackTraceParameter();
- AddCatchParamsToScope(
- &exception_param, &stack_trace_param, current_block_->scope);
+ AddCatchParamsToScope(&exception_param, &stack_trace_param,
+ current_block_->scope);
// Generate code to save the exception object and stack trace
// in local variables.
- LocalVariable* context_var = try_scope->LocalLookupVariable(
- Symbols::SavedTryContextVar());
+ LocalVariable* context_var =
+ try_scope->LocalLookupVariable(Symbols::SavedTryContextVar());
ASSERT(context_var != NULL);
- LocalVariable* exception_var = try_scope->LocalLookupVariable(
- Symbols::ExceptionVar());
+ LocalVariable* exception_var =
+ try_scope->LocalLookupVariable(Symbols::ExceptionVar());
ASSERT(exception_var != NULL);
if (exception_param.var != NULL) {
// Generate code to load the exception object (:exception_var) into
// the exception variable specified in this block.
- current_block_->statements->Add(new(Z) StoreLocalNode(
- TokenPosition::kNoSource,
- exception_param.var,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, exception_var)));
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, exception_param.var,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, exception_var)));
}
LocalVariable* stack_trace_var =
@@ -6614,19 +6379,16 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
// A stack trace variable is specified in this block, so generate code
// to load the stack trace object (:stack_trace_var) into the stack
// trace variable specified in this block.
- current_block_->statements->Add(new(Z) StoreLocalNode(
- TokenPosition::kNoSource,
- stack_trace_param.var,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, stack_trace_var)));
- }
- LocalVariable* saved_exception_var = try_scope->LocalLookupVariable(
- Symbols::SavedExceptionVar());
- LocalVariable* saved_stack_trace_var = try_scope->LocalLookupVariable(
- Symbols::SavedStackTraceVar());
- SaveExceptionAndStacktrace(current_block_->statements,
- exception_var,
- stack_trace_var,
- saved_exception_var,
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, stack_trace_param.var,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, stack_trace_var)));
+ }
+ LocalVariable* saved_exception_var =
+ try_scope->LocalLookupVariable(Symbols::SavedExceptionVar());
+ LocalVariable* saved_stack_trace_var =
+ try_scope->LocalLookupVariable(Symbols::SavedStackTraceVar());
+ SaveExceptionAndStacktrace(current_block_->statements, exception_var,
+ stack_trace_var, saved_exception_var,
saved_stack_trace_var);
// Catch block: add the error to the stream.
@@ -6635,18 +6397,15 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
LocalVariable* controller =
current_block_->scope->LookupVariable(Symbols::Controller(), false);
ASSERT(controller != NULL);
- ArgumentListNode* args =
- new(Z) ArgumentListNode(TokenPosition::kNoSource);
- args->Add(new(Z) LoadLocalNode(
- TokenPosition::kNoSource, exception_param.var));
- args->Add(new(Z) LoadLocalNode(
- TokenPosition::kNoSource, stack_trace_param.var));
- current_block_->statements->Add(
- new(Z) InstanceCallNode(try_end_pos,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, controller),
- Symbols::AddError(),
- args));
- ReturnNode* return_node = new(Z) ReturnNode(TokenPosition::kNoSource);
+ ArgumentListNode* args = new (Z) ArgumentListNode(TokenPosition::kNoSource);
+ args->Add(new (Z)
+ LoadLocalNode(TokenPosition::kNoSource, exception_param.var));
+ args->Add(new (Z)
+ LoadLocalNode(TokenPosition::kNoSource, stack_trace_param.var));
+ current_block_->statements->Add(new (Z) InstanceCallNode(
+ try_end_pos, new (Z) LoadLocalNode(TokenPosition::kNoSource, controller),
+ Symbols::AddError(), args));
+ ReturnNode* return_node = new (Z) ReturnNode(TokenPosition::kNoSource);
AddNodeForFinallyInlining(return_node);
current_block_->statements->Add(return_node);
AstNode* catch_block = CloseBlock();
@@ -6671,20 +6430,17 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
do {
OpenBlock();
ArgumentListNode* no_args =
- new(Z) ArgumentListNode(TokenPosition::kNoSource);
- current_block_->statements->Add(
- new(Z) InstanceCallNode(try_end_pos,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, controller),
- Symbols::Close(),
- no_args));
+ new (Z) ArgumentListNode(TokenPosition::kNoSource);
+ current_block_->statements->Add(new (Z) InstanceCallNode(
+ try_end_pos,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, controller),
+ Symbols::Close(), no_args));
// Suspend after the close.
- AwaitMarkerNode* await_marker =
- new(Z) AwaitMarkerNode(async_temp_scope_,
- current_block_->scope,
- TokenPosition::kNoSource);
+ AwaitMarkerNode* await_marker = new (Z) AwaitMarkerNode(
+ async_temp_scope_, current_block_->scope, TokenPosition::kNoSource);
current_block_->statements->Add(await_marker);
- ReturnNode* continuation_ret = new(Z) ReturnNode(try_end_pos);
+ ReturnNode* continuation_ret = new (Z) ReturnNode(try_end_pos);
continuation_ret->set_return_type(ReturnNode::kContinuationTarget);
current_block_->statements->Add(continuation_ret);
@@ -6692,11 +6448,9 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
AstNode* node_to_inline = try_statement->GetNodeToInlineFinally(node_index);
if (node_to_inline != NULL) {
InlinedFinallyNode* node =
- new(Z) InlinedFinallyNode(try_end_pos,
- finally_clause,
- context_var,
- // No outer try statement
- CatchClauseNode::kInvalidTryIndex);
+ new (Z) InlinedFinallyNode(try_end_pos, finally_clause, context_var,
+ // No outer try statement
+ CatchClauseNode::kInvalidTryIndex);
finally_clause = NULL;
AddFinallyClauseToNode(true, node_to_inline, node);
node_index++;
@@ -6712,28 +6466,17 @@ SequenceNode* Parser::CloseAsyncGeneratorTryBlock(SequenceNode *body) {
// Catch block handles all exceptions.
handler_types.Add(Object::dynamic_type());
- CatchClauseNode* catch_clause = new(Z) CatchClauseNode(
- TokenPosition::kNoSource,
- catch_handler_list,
- Array::ZoneHandle(Z, Array::MakeArray(handler_types)),
- context_var,
- exception_var,
- stack_trace_var,
- saved_exception_var,
- saved_stack_trace_var,
- AllocateTryIndex(),
- true);
+ CatchClauseNode* catch_clause = new (Z) CatchClauseNode(
+ TokenPosition::kNoSource, catch_handler_list,
+ Array::ZoneHandle(Z, Array::MakeArray(handler_types)), context_var,
+ exception_var, stack_trace_var, saved_exception_var,
+ saved_stack_trace_var, AllocateTryIndex(), true);
const intptr_t try_index = try_statement->try_index();
- AstNode* try_catch_node =
- new(Z) TryCatchNode(TokenPosition::kNoSource,
- body,
- context_var,
- catch_clause,
- finally_clause,
- try_index,
- finally_clause);
+ AstNode* try_catch_node = new (Z)
+ TryCatchNode(TokenPosition::kNoSource, body, context_var, catch_clause,
+ finally_clause, try_index, finally_clause);
current_block_->statements->Add(try_catch_node);
return CloseBlock();
}
@@ -6759,23 +6502,22 @@ SequenceNode* Parser::CloseAsyncTryBlock(SequenceNode* try_block) {
stack_trace_param.type = &Object::dynamic_type();
stack_trace_param.name = &Symbols::StackTraceParameter();
- AddCatchParamsToScope(
- &exception_param, &stack_trace_param, current_block_->scope);
+ AddCatchParamsToScope(&exception_param, &stack_trace_param,
+ current_block_->scope);
- LocalVariable* context_var = try_scope->LocalLookupVariable(
- Symbols::SavedTryContextVar());
+ LocalVariable* context_var =
+ try_scope->LocalLookupVariable(Symbols::SavedTryContextVar());
ASSERT(context_var != NULL);
- LocalVariable* exception_var = try_scope->LocalLookupVariable(
- Symbols::ExceptionVar());
+ LocalVariable* exception_var =
+ try_scope->LocalLookupVariable(Symbols::ExceptionVar());
if (exception_param.var != NULL) {
// Generate code to load the exception object (:exception_var) into
// the exception variable specified in this block.
ASSERT(exception_var != NULL);
- current_block_->statements->Add(new(Z) StoreLocalNode(
- TokenPosition::kNoSource,
- exception_param.var,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, exception_var)));
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, exception_param.var,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, exception_var)));
}
LocalVariable* stack_trace_var =
@@ -6785,38 +6527,33 @@ SequenceNode* Parser::CloseAsyncTryBlock(SequenceNode* try_block) {
// to load the stack trace object (:stack_trace_var) into the stack
// trace variable specified in this block.
ASSERT(stack_trace_var != NULL);
- current_block_->statements->Add(new(Z) StoreLocalNode(
- TokenPosition::kNoSource,
- stack_trace_param.var,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, stack_trace_var)));
- }
- LocalVariable* saved_exception_var = try_scope->LocalLookupVariable(
- Symbols::SavedExceptionVar());
- LocalVariable* saved_stack_trace_var = try_scope->LocalLookupVariable(
- Symbols::SavedStackTraceVar());
- SaveExceptionAndStacktrace(current_block_->statements,
- exception_var,
- stack_trace_var,
- saved_exception_var,
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, stack_trace_param.var,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, stack_trace_var)));
+ }
+ LocalVariable* saved_exception_var =
+ try_scope->LocalLookupVariable(Symbols::SavedExceptionVar());
+ LocalVariable* saved_stack_trace_var =
+ try_scope->LocalLookupVariable(Symbols::SavedStackTraceVar());
+ SaveExceptionAndStacktrace(current_block_->statements, exception_var,
+ stack_trace_var, saved_exception_var,
saved_stack_trace_var);
// Complete the async future with an error. This catch block executes
// unconditionally, there is no need to generate a type check for.
- LocalVariable* async_completer = current_block_->scope->LookupVariable(
- Symbols::AsyncCompleter(), false);
+ LocalVariable* async_completer =
+ current_block_->scope->LookupVariable(Symbols::AsyncCompleter(), false);
ASSERT(async_completer != NULL);
ArgumentListNode* completer_args =
new (Z) ArgumentListNode(TokenPosition::kNoSource);
completer_args->Add(
new (Z) LoadLocalNode(TokenPosition::kNoSource, exception_param.var));
completer_args->Add(
- new (Z) LoadLocalNode(TokenPosition::kNoSource,
- stack_trace_param.var));
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, stack_trace_param.var));
current_block_->statements->Add(new (Z) InstanceCallNode(
TokenPos(),
new (Z) LoadLocalNode(TokenPosition::kNoSource, async_completer),
- Symbols::CompleterCompleteError(),
- completer_args));
+ Symbols::CompleterCompleteError(), completer_args));
ReturnNode* return_node = new (Z) ReturnNode(TokenPosition::kNoSource);
// Behavior like a continuation return, i.e,. don't call a completer.
return_node->set_return_type(ReturnNode::kContinuation);
@@ -6834,21 +6571,12 @@ SequenceNode* Parser::CloseAsyncTryBlock(SequenceNode* try_block) {
const intptr_t try_index = try_statement->try_index();
CatchClauseNode* catch_clause = new (Z) CatchClauseNode(
- TokenPosition::kNoSource,
- catch_handler_list,
- Array::ZoneHandle(Z, Array::MakeArray(handler_types)),
- context_var,
- exception_var,
- stack_trace_var,
- saved_exception_var,
- saved_stack_trace_var,
- CatchClauseNode::kInvalidTryIndex,
- true);
+ TokenPosition::kNoSource, catch_handler_list,
+ Array::ZoneHandle(Z, Array::MakeArray(handler_types)), context_var,
+ exception_var, stack_trace_var, saved_exception_var,
+ saved_stack_trace_var, CatchClauseNode::kInvalidTryIndex, true);
AstNode* try_catch_node = new (Z) TryCatchNode(
- TokenPosition::kNoSource,
- try_block,
- context_var,
- catch_clause,
+ TokenPosition::kNoSource, try_block, context_var, catch_clause,
NULL, // No finally clause.
try_index,
NULL); // No rethrow-finally clause.
@@ -6866,13 +6594,9 @@ void Parser::OpenAsyncTryBlock() {
LocalVariable* stack_trace_var = NULL;
LocalVariable* saved_exception_var = NULL;
LocalVariable* saved_stack_trace_var = NULL;
- SetupExceptionVariables(current_block_->scope,
- true,
- &context_var,
- &exception_var,
- &stack_trace_var,
- &saved_exception_var,
- &saved_stack_trace_var);
+ SetupExceptionVariables(current_block_->scope, true, &context_var,
+ &exception_var, &stack_trace_var,
+ &saved_exception_var, &saved_stack_trace_var);
// Open the try block.
OpenBlock();
@@ -6890,10 +6614,9 @@ void Parser::AddSyncGenClosureParameters(ParamList* params) {
// 2) Iterator
// Add implicit closure parameter if not already present.
if (params->parameters->length() == 0) {
- params->AddFinalParameter(
- TokenPosition::kMinSource,
- &Symbols::ClosureParameter(),
- &Object::dynamic_type());
+ params->AddFinalParameter(TokenPosition::kMinSource,
+ &Symbols::ClosureParameter(),
+ &Object::dynamic_type());
}
ParamDesc iterator_param;
iterator_param.name = &Symbols::IteratorParameter();
@@ -6931,8 +6654,7 @@ RawFunction* Parser::OpenSyncGeneratorFunction(TokenPosition func_pos) {
String& generator_name = String::Handle(Z, innermost_function().name());
body_closure_name =
Symbols::NewFormatted(T, "<%s_sync_body>", generator_name.ToCString());
- body = Function::NewClosureFunction(body_closure_name,
- innermost_function(),
+ body = Function::NewClosureFunction(body_closure_name, innermost_function(),
func_pos);
body.set_is_generated_body(true);
body.set_result_type(Object::dynamic_type());
@@ -6975,33 +6697,31 @@ SequenceNode* Parser::CloseSyncGenFunction(const Function& closure,
// :await_jump_var = -1;
LocalVariable* jump_var =
current_block_->scope->LookupVariable(Symbols::AwaitJumpVar(), false);
- LiteralNode* init_value = new(Z) LiteralNode(TokenPosition::kNoSource,
- Smi::ZoneHandle(Smi::New(-1)));
+ LiteralNode* init_value = new (Z)
+ LiteralNode(TokenPosition::kNoSource, Smi::ZoneHandle(Smi::New(-1)));
current_block_->statements->Add(
- new(Z) StoreLocalNode(TokenPosition::kNoSource, jump_var, init_value));
+ new (Z) StoreLocalNode(TokenPosition::kNoSource, jump_var, init_value));
// return new SyncIterable(body_closure);
const Class& iterable_class =
Class::Handle(Z, Library::LookupCoreClass(Symbols::_SyncIterable()));
ASSERT(!iterable_class.IsNull());
- const Function& iterable_constructor = Function::ZoneHandle(Z,
- iterable_class.LookupConstructorAllowPrivate(
- Symbols::_SyncIterableConstructor()));
+ const Function& iterable_constructor =
+ Function::ZoneHandle(Z, iterable_class.LookupConstructorAllowPrivate(
+ Symbols::_SyncIterableConstructor()));
ASSERT(!iterable_constructor.IsNull());
const String& closure_name = String::Handle(Z, closure.name());
ASSERT(closure_name.IsSymbol());
ArgumentListNode* arguments =
- new(Z) ArgumentListNode(TokenPosition::kNoSource);
- ClosureNode* closure_obj = new(Z) ClosureNode(
+ new (Z) ArgumentListNode(TokenPosition::kNoSource);
+ ClosureNode* closure_obj = new (Z) ClosureNode(
TokenPosition::kNoSource, closure, NULL, closure_body->scope());
arguments->Add(closure_obj);
- ConstructorCallNode* new_iterable =
- new(Z) ConstructorCallNode(TokenPosition::kNoSource,
- TypeArguments::ZoneHandle(Z),
- iterable_constructor,
- arguments);
+ ConstructorCallNode* new_iterable = new (Z) ConstructorCallNode(
+ TokenPosition::kNoSource, TypeArguments::ZoneHandle(Z),
+ iterable_constructor, arguments);
ReturnNode* return_node =
new (Z) ReturnNode(TokenPosition::kNoSource, new_iterable);
current_block_->statements->Add(return_node);
@@ -7017,10 +6737,9 @@ void Parser::AddAsyncClosureParameters(ParamList* params) {
ASSERT(params->parameters->length() <= 1);
// Add implicit closure parameter if not yet present.
if (params->parameters->length() == 0) {
- params->AddFinalParameter(
- TokenPosition::kMinSource,
- &Symbols::ClosureParameter(),
- &Object::dynamic_type());
+ params->AddFinalParameter(TokenPosition::kMinSource,
+ &Symbols::ClosureParameter(),
+ &Object::dynamic_type());
}
ParamDesc result_param;
result_param.name = &Symbols::AsyncOperationParam();
@@ -7061,12 +6780,11 @@ RawFunction* Parser::OpenAsyncFunction(TokenPosition async_func_pos) {
// Create the closure containing the body of this async function.
const String& async_func_name =
String::Handle(Z, innermost_function().name());
- String& closure_name = String::Handle(Z, Symbols::NewFormatted(T,
- "<%s_async_body>", async_func_name.ToCString()));
- closure = Function::NewClosureFunction(
- closure_name,
- innermost_function(),
- async_func_pos);
+ String& closure_name =
+ String::Handle(Z, Symbols::NewFormatted(T, "<%s_async_body>",
+ async_func_name.ToCString()));
+ closure = Function::NewClosureFunction(closure_name, innermost_function(),
+ async_func_pos);
closure.set_is_generated_body(true);
closure.set_result_type(Object::dynamic_type());
is_new_closure = true;
@@ -7104,17 +6822,13 @@ void Parser::AddContinuationVariables() {
// Add to current block's scope:
// var :await_jump_var;
// var :await_ctx_var;
- LocalVariable* await_jump_var = new (Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AwaitJumpVar(),
- Object::dynamic_type());
+ LocalVariable* await_jump_var =
+ new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AwaitJumpVar(), Object::dynamic_type());
current_block_->scope->AddVariable(await_jump_var);
- LocalVariable* await_ctx_var = new (Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AwaitContextVar(),
- Object::dynamic_type());
+ LocalVariable* await_ctx_var =
+ new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AwaitContextVar(), Object::dynamic_type());
current_block_->scope->AddVariable(await_ctx_var);
}
@@ -7125,29 +6839,21 @@ void Parser::AddAsyncClosureVariables() {
// var :async_then_callback;
// var :async_catch_error_callback;
// var :async_completer;
- LocalVariable* async_op_var = new(Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AsyncOperation(),
- Object::dynamic_type());
+ LocalVariable* async_op_var =
+ new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AsyncOperation(), Object::dynamic_type());
current_block_->scope->AddVariable(async_op_var);
- LocalVariable* async_then_callback_var = new(Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AsyncThenCallback(),
- Object::dynamic_type());
+ LocalVariable* async_then_callback_var = new (Z)
+ LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AsyncThenCallback(), Object::dynamic_type());
current_block_->scope->AddVariable(async_then_callback_var);
- LocalVariable* async_catch_error_callback_var = new(Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AsyncCatchErrorCallback(),
- Object::dynamic_type());
+ LocalVariable* async_catch_error_callback_var = new (Z)
+ LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AsyncCatchErrorCallback(), Object::dynamic_type());
current_block_->scope->AddVariable(async_catch_error_callback_var);
- LocalVariable* async_completer = new(Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AsyncCompleter(),
- Object::dynamic_type());
+ LocalVariable* async_completer =
+ new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AsyncCompleter(), Object::dynamic_type());
current_block_->scope->AddVariable(async_completer);
}
@@ -7163,35 +6869,26 @@ void Parser::AddAsyncGeneratorVariables() {
// var :async_catch_error_callback;
// These variables are used to store the async generator closure containing
// the body of the async* function. They are used by the await operator.
- LocalVariable* controller_var = new(Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::Controller(),
- Object::dynamic_type());
+ LocalVariable* controller_var =
+ new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::Controller(), Object::dynamic_type());
current_block_->scope->AddVariable(controller_var);
- LocalVariable* async_op_var = new(Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AsyncOperation(),
- Object::dynamic_type());
+ LocalVariable* async_op_var =
+ new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AsyncOperation(), Object::dynamic_type());
current_block_->scope->AddVariable(async_op_var);
- LocalVariable* async_then_callback_var = new(Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AsyncThenCallback(),
- Object::dynamic_type());
+ LocalVariable* async_then_callback_var = new (Z)
+ LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AsyncThenCallback(), Object::dynamic_type());
current_block_->scope->AddVariable(async_then_callback_var);
- LocalVariable* async_catch_error_callback_var = new(Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- Symbols::AsyncCatchErrorCallback(),
- Object::dynamic_type());
+ LocalVariable* async_catch_error_callback_var = new (Z)
+ LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ Symbols::AsyncCatchErrorCallback(), Object::dynamic_type());
current_block_->scope->AddVariable(async_catch_error_callback_var);
}
-RawFunction* Parser::OpenAsyncGeneratorFunction(
- TokenPosition async_func_pos) {
+RawFunction* Parser::OpenAsyncGeneratorFunction(TokenPosition async_func_pos) {
TRACE_PARSER("OpenAsyncGeneratorFunction");
AddContinuationVariables();
AddAsyncGeneratorVariables();
@@ -7211,10 +6908,10 @@ RawFunction* Parser::OpenAsyncGeneratorFunction(
// Create the closure containing the body of this async generator function.
const String& async_generator_name =
String::Handle(Z, innermost_function().name());
- const String& closure_name = String::Handle(Z, Symbols::NewFormatted(T,
- "<%s_async_gen_body>", async_generator_name.ToCString()));
- closure = Function::NewClosureFunction(closure_name,
- innermost_function(),
+ const String& closure_name = String::Handle(
+ Z, Symbols::NewFormatted(T, "<%s_async_gen_body>",
+ async_generator_name.ToCString()));
+ closure = Function::NewClosureFunction(closure_name, innermost_function(),
async_func_pos);
closure.set_is_generated_body(true);
closure.set_result_type(Object::dynamic_type());
@@ -7267,17 +6964,17 @@ SequenceNode* Parser::CloseAsyncGeneratorFunction(const Function& closure_func,
// Explicitly reference variables of the async genenerator function from the
// closure body in order to mark them as captured.
- LocalVariable* existing_var = closure_body->scope()->LookupVariable(
- Symbols::AwaitJumpVar(), false);
+ LocalVariable* existing_var =
+ closure_body->scope()->LookupVariable(Symbols::AwaitJumpVar(), false);
ASSERT((existing_var != NULL) && existing_var->is_captured());
- existing_var = closure_body->scope()->LookupVariable(
- Symbols::AwaitContextVar(), false);
+ existing_var =
+ closure_body->scope()->LookupVariable(Symbols::AwaitContextVar(), false);
ASSERT((existing_var != NULL) && existing_var->is_captured());
- existing_var = closure_body->scope()->LookupVariable(
- Symbols::Controller(), false);
+ existing_var =
+ closure_body->scope()->LookupVariable(Symbols::Controller(), false);
ASSERT((existing_var != NULL) && existing_var->is_captured());
- existing_var = closure_body->scope()->LookupVariable(
- Symbols::AsyncOperation(), false);
+ existing_var =
+ closure_body->scope()->LookupVariable(Symbols::AsyncOperation(), false);
ASSERT((existing_var != NULL) && existing_var->is_captured());
existing_var = closure_body->scope()->LookupVariable(
Symbols::AsyncThenCallback(), false);
@@ -7288,106 +6985,96 @@ SequenceNode* Parser::CloseAsyncGeneratorFunction(const Function& closure_func,
const Library& async_lib = Library::Handle(Library::AsyncLibrary());
- const Class& controller_class = Class::Handle(Z,
- async_lib.LookupClassAllowPrivate(
- Symbols::_AsyncStarStreamController()));
+ const Class& controller_class = Class::Handle(
+ Z,
+ async_lib.LookupClassAllowPrivate(Symbols::_AsyncStarStreamController()));
ASSERT(!controller_class.IsNull());
- const Function& controller_constructor = Function::ZoneHandle(Z,
- controller_class.LookupConstructorAllowPrivate(
- Symbols::_AsyncStarStreamControllerConstructor()));
+ const Function& controller_constructor = Function::ZoneHandle(
+ Z, controller_class.LookupConstructorAllowPrivate(
+ Symbols::_AsyncStarStreamControllerConstructor()));
// :await_jump_var = -1;
LocalVariable* jump_var =
current_block_->scope->LookupVariable(Symbols::AwaitJumpVar(), false);
- LiteralNode* init_value = new(Z) LiteralNode(TokenPosition::kNoSource,
- Smi::ZoneHandle(Smi::New(-1)));
+ LiteralNode* init_value = new (Z)
+ LiteralNode(TokenPosition::kNoSource, Smi::ZoneHandle(Smi::New(-1)));
current_block_->statements->Add(
- new(Z) StoreLocalNode(TokenPosition::kNoSource, jump_var, init_value));
+ new (Z) StoreLocalNode(TokenPosition::kNoSource, jump_var, init_value));
// Add to AST:
// :async_op = <closure>; (containing the original body)
LocalVariable* async_op_var =
current_block_->scope->LookupVariable(Symbols::AsyncOperation(), false);
- ClosureNode* closure_obj = new(Z) ClosureNode(
+ ClosureNode* closure_obj = new (Z) ClosureNode(
TokenPosition::kNoSource, closure_func, NULL, closure_body->scope());
- StoreLocalNode* store_async_op = new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- async_op_var,
- closure_obj);
+ StoreLocalNode* store_async_op = new (Z)
+ StoreLocalNode(TokenPosition::kNoSource, async_op_var, closure_obj);
current_block_->statements->Add(store_async_op);
// :async_then_callback = _asyncThenWrapperHelper(:async_op)
const Function& async_then_wrapper_helper = Function::ZoneHandle(
- Z, async_lib.LookupFunctionAllowPrivate(
- Symbols::AsyncThenWrapperHelper()));
+ Z,
+ async_lib.LookupFunctionAllowPrivate(Symbols::AsyncThenWrapperHelper()));
ASSERT(!async_then_wrapper_helper.IsNull());
- ArgumentListNode* async_then_wrapper_helper_args = new (Z) ArgumentListNode(
- TokenPosition::kNoSource);
+ ArgumentListNode* async_then_wrapper_helper_args =
+ new (Z) ArgumentListNode(TokenPosition::kNoSource);
async_then_wrapper_helper_args->Add(
new (Z) LoadLocalNode(TokenPosition::kNoSource, async_op_var));
- StaticCallNode* then_wrapper_call = new (Z) StaticCallNode(
- TokenPosition::kNoSource,
- async_then_wrapper_helper,
- async_then_wrapper_helper_args);
+ StaticCallNode* then_wrapper_call = new (Z)
+ StaticCallNode(TokenPosition::kNoSource, async_then_wrapper_helper,
+ async_then_wrapper_helper_args);
LocalVariable* async_then_callback_var =
- current_block_->scope->LookupVariable(
- Symbols::AsyncThenCallback(), false);
+ current_block_->scope->LookupVariable(Symbols::AsyncThenCallback(),
+ false);
StoreLocalNode* store_async_then_callback = new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- async_then_callback_var,
- then_wrapper_call);
+ TokenPosition::kNoSource, async_then_callback_var, then_wrapper_call);
current_block_->statements->Add(store_async_then_callback);
// :async_catch_error_callback = _asyncErrorWrapperHelper(:async_op)
const Function& async_error_wrapper_helper = Function::ZoneHandle(
- Z, async_lib.LookupFunctionAllowPrivate(
- Symbols::AsyncErrorWrapperHelper()));
+ Z,
+ async_lib.LookupFunctionAllowPrivate(Symbols::AsyncErrorWrapperHelper()));
ASSERT(!async_error_wrapper_helper.IsNull());
- ArgumentListNode* async_error_wrapper_helper_args = new (Z) ArgumentListNode(
- TokenPosition::kNoSource);
+ ArgumentListNode* async_error_wrapper_helper_args =
+ new (Z) ArgumentListNode(TokenPosition::kNoSource);
async_error_wrapper_helper_args->Add(
new (Z) LoadLocalNode(TokenPosition::kNoSource, async_op_var));
- StaticCallNode* error_wrapper_call = new (Z) StaticCallNode(
- TokenPosition::kNoSource,
- async_error_wrapper_helper,
- async_error_wrapper_helper_args);
+ StaticCallNode* error_wrapper_call = new (Z)
+ StaticCallNode(TokenPosition::kNoSource, async_error_wrapper_helper,
+ async_error_wrapper_helper_args);
LocalVariable* async_catch_error_callback_var =
- current_block_->scope->LookupVariable(
- Symbols::AsyncCatchErrorCallback(), false);
- StoreLocalNode* store_async_catch_error_callback = new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- async_catch_error_callback_var,
- error_wrapper_call);
+ current_block_->scope->LookupVariable(Symbols::AsyncCatchErrorCallback(),
+ false);
+ StoreLocalNode* store_async_catch_error_callback = new (Z)
+ StoreLocalNode(TokenPosition::kNoSource, async_catch_error_callback_var,
+ error_wrapper_call);
current_block_->statements->Add(store_async_catch_error_callback);
// :controller = new _AsyncStarStreamController(body_closure);
ArgumentListNode* arguments =
- new(Z) ArgumentListNode(TokenPosition::kNoSource);
- arguments->Add(
- new (Z) LoadLocalNode(TokenPosition::kNoSource, async_op_var));
+ new (Z) ArgumentListNode(TokenPosition::kNoSource);
+ arguments->Add(new (Z) LoadLocalNode(TokenPosition::kNoSource, async_op_var));
ConstructorCallNode* controller_constructor_call =
- new(Z) ConstructorCallNode(TokenPosition::kNoSource,
- TypeArguments::ZoneHandle(Z),
- controller_constructor,
- arguments);
+ new (Z) ConstructorCallNode(TokenPosition::kNoSource,
+ TypeArguments::ZoneHandle(Z),
+ controller_constructor, arguments);
LocalVariable* controller_var =
- current_block_->scope->LookupVariable(Symbols::Controller(), false);
- StoreLocalNode* store_controller =
- new(Z) StoreLocalNode(TokenPosition::kNoSource,
- controller_var,
- controller_constructor_call);
+ current_block_->scope->LookupVariable(Symbols::Controller(), false);
+ StoreLocalNode* store_controller = new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, controller_var, controller_constructor_call);
current_block_->statements->Add(store_controller);
// return :controller.stream;
- ReturnNode* return_node = new(Z) ReturnNode(TokenPosition::kNoSource,
- new(Z) InstanceGetterNode(TokenPosition::kNoSource,
- new(Z) LoadLocalNode(TokenPosition::kNoSource,
- controller_var),
- Symbols::Stream()));
+ ReturnNode* return_node = new (Z) ReturnNode(
+ TokenPosition::kNoSource,
+ new (Z) InstanceGetterNode(
+ TokenPosition::kNoSource,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, controller_var),
+ Symbols::Stream()));
current_block_->statements->Add(return_node);
return CloseBlock();
}
@@ -7413,15 +7100,15 @@ SequenceNode* Parser::CloseAsyncGeneratorClosure(SequenceNode* body) {
// Add a return node to the sequence if necessary.
void Parser::EnsureHasReturnStatement(SequenceNode* seq,
TokenPosition return_pos) {
- if ((seq->length() == 0) ||
- !seq->NodeAt(seq->length() - 1)->IsReturnNode()) {
+ if ((seq->length() == 0) || !seq->NodeAt(seq->length() - 1)->IsReturnNode()) {
const Function& func = innermost_function();
// The implicit return value of synchronous generator closures is false,
// to indicate that there are no more elements in the iterable.
// In other cases the implicit return value is null.
- AstNode* return_value = func.IsSyncGenClosure()
- ? new LiteralNode(return_pos, Bool::False())
- : new LiteralNode(return_pos, Instance::ZoneHandle());
+ AstNode* return_value =
+ func.IsSyncGenClosure()
+ ? new LiteralNode(return_pos, Bool::False())
+ : new LiteralNode(return_pos, Instance::ZoneHandle());
seq->Add(new ReturnNode(return_pos, return_value));
}
}
@@ -7464,115 +7151,96 @@ SequenceNode* Parser::CloseAsyncFunction(const Function& closure,
// No need to capture parameters or other variables, since they have already
// been captured in the corresponding scope as the body has been parsed within
// a nested block (contained in the async function's block).
- const Class& future =
- Class::ZoneHandle(Z, I->object_store()->future_class());
+ const Class& future = Class::ZoneHandle(Z, I->object_store()->future_class());
ASSERT(!future.IsNull());
- const Function& constructor = Function::ZoneHandle(Z,
- future.LookupFunction(Symbols::FutureMicrotask()));
+ const Function& constructor = Function::ZoneHandle(
+ Z, future.LookupFunction(Symbols::FutureMicrotask()));
ASSERT(!constructor.IsNull());
const Class& completer =
Class::ZoneHandle(Z, I->object_store()->completer_class());
ASSERT(!completer.IsNull());
- const Function& completer_constructor = Function::ZoneHandle(Z,
- completer.LookupFunction(Symbols::CompleterSyncConstructor()));
+ const Function& completer_constructor = Function::ZoneHandle(
+ Z, completer.LookupFunction(Symbols::CompleterSyncConstructor()));
ASSERT(!completer_constructor.IsNull());
- LocalVariable* async_completer = current_block_->scope->LookupVariable(
- Symbols::AsyncCompleter(), false);
+ LocalVariable* async_completer =
+ current_block_->scope->LookupVariable(Symbols::AsyncCompleter(), false);
const TokenPosition token_pos = ST(closure_body->token_pos());
// Add to AST:
// :async_completer = new Completer.sync();
- ArgumentListNode* empty_args =
- new (Z) ArgumentListNode(token_pos);
- ConstructorCallNode* completer_constructor_node = new (Z) ConstructorCallNode(
- token_pos,
- TypeArguments::ZoneHandle(Z),
- completer_constructor,
- empty_args);
- StoreLocalNode* store_completer = new (Z) StoreLocalNode(
- token_pos,
- async_completer,
- completer_constructor_node);
+ ArgumentListNode* empty_args = new (Z) ArgumentListNode(token_pos);
+ ConstructorCallNode* completer_constructor_node =
+ new (Z) ConstructorCallNode(token_pos, TypeArguments::ZoneHandle(Z),
+ completer_constructor, empty_args);
+ StoreLocalNode* store_completer = new (Z)
+ StoreLocalNode(token_pos, async_completer, completer_constructor_node);
current_block_->statements->Add(store_completer);
// :await_jump_var = -1;
LocalVariable* jump_var =
current_block_->scope->LookupVariable(Symbols::AwaitJumpVar(), false);
LiteralNode* init_value =
- new(Z) LiteralNode(token_pos,
- Smi::ZoneHandle(Smi::New(-1)));
+ new (Z) LiteralNode(token_pos, Smi::ZoneHandle(Smi::New(-1)));
current_block_->statements->Add(
- new(Z) StoreLocalNode(token_pos, jump_var, init_value));
+ new (Z) StoreLocalNode(token_pos, jump_var, init_value));
// Add to AST:
// :async_op = <closure>; (containing the original body)
- LocalVariable* async_op_var = current_block_->scope->LookupVariable(
- Symbols::AsyncOperation(), false);
- ClosureNode* cn = new(Z) ClosureNode(
- token_pos, closure, NULL, closure_body->scope());
- StoreLocalNode* store_async_op = new (Z) StoreLocalNode(
- token_pos,
- async_op_var,
- cn);
+ LocalVariable* async_op_var =
+ current_block_->scope->LookupVariable(Symbols::AsyncOperation(), false);
+ ClosureNode* cn =
+ new (Z) ClosureNode(token_pos, closure, NULL, closure_body->scope());
+ StoreLocalNode* store_async_op =
+ new (Z) StoreLocalNode(token_pos, async_op_var, cn);
current_block_->statements->Add(store_async_op);
const Library& async_lib = Library::Handle(Library::AsyncLibrary());
// :async_then_callback = _asyncThenWrapperHelper(:async_op)
const Function& async_then_wrapper_helper = Function::ZoneHandle(
- Z, async_lib.LookupFunctionAllowPrivate(
- Symbols::AsyncThenWrapperHelper()));
+ Z,
+ async_lib.LookupFunctionAllowPrivate(Symbols::AsyncThenWrapperHelper()));
ASSERT(!async_then_wrapper_helper.IsNull());
- ArgumentListNode* async_then_wrapper_helper_args = new (Z) ArgumentListNode(
- token_pos);
+ ArgumentListNode* async_then_wrapper_helper_args =
+ new (Z) ArgumentListNode(token_pos);
async_then_wrapper_helper_args->Add(
new (Z) LoadLocalNode(token_pos, async_op_var));
StaticCallNode* then_wrapper_call = new (Z) StaticCallNode(
- token_pos,
- async_then_wrapper_helper,
- async_then_wrapper_helper_args);
+ token_pos, async_then_wrapper_helper, async_then_wrapper_helper_args);
LocalVariable* async_then_callback_var =
- current_block_->scope->LookupVariable(
- Symbols::AsyncThenCallback(), false);
- StoreLocalNode* store_async_then_callback = new (Z) StoreLocalNode(
- token_pos,
- async_then_callback_var,
- then_wrapper_call);
+ current_block_->scope->LookupVariable(Symbols::AsyncThenCallback(),
+ false);
+ StoreLocalNode* store_async_then_callback = new (Z)
+ StoreLocalNode(token_pos, async_then_callback_var, then_wrapper_call);
current_block_->statements->Add(store_async_then_callback);
// :async_catch_error_callback = _asyncErrorWrapperHelper(:async_op)
const Function& async_error_wrapper_helper = Function::ZoneHandle(
- Z, async_lib.LookupFunctionAllowPrivate(
- Symbols::AsyncErrorWrapperHelper()));
+ Z,
+ async_lib.LookupFunctionAllowPrivate(Symbols::AsyncErrorWrapperHelper()));
ASSERT(!async_error_wrapper_helper.IsNull());
- ArgumentListNode* async_error_wrapper_helper_args = new (Z) ArgumentListNode(
- token_pos);
+ ArgumentListNode* async_error_wrapper_helper_args =
+ new (Z) ArgumentListNode(token_pos);
async_error_wrapper_helper_args->Add(
new (Z) LoadLocalNode(token_pos, async_op_var));
StaticCallNode* error_wrapper_call = new (Z) StaticCallNode(
- token_pos,
- async_error_wrapper_helper,
- async_error_wrapper_helper_args);
+ token_pos, async_error_wrapper_helper, async_error_wrapper_helper_args);
LocalVariable* async_catch_error_callback_var =
- current_block_->scope->LookupVariable(
- Symbols::AsyncCatchErrorCallback(), false);
+ current_block_->scope->LookupVariable(Symbols::AsyncCatchErrorCallback(),
+ false);
StoreLocalNode* store_async_catch_error_callback = new (Z) StoreLocalNode(
- token_pos,
- async_catch_error_callback_var,
- error_wrapper_call);
+ token_pos, async_catch_error_callback_var, error_wrapper_call);
current_block_->statements->Add(store_async_catch_error_callback);
// Add to AST:
// new Future.microtask(:async_op);
ArgumentListNode* arguments = new (Z) ArgumentListNode(token_pos);
- arguments->Add(new (Z) LoadLocalNode(
- token_pos, async_op_var));
+ arguments->Add(new (Z) LoadLocalNode(token_pos, async_op_var));
ConstructorCallNode* future_node = new (Z) ConstructorCallNode(
- token_pos, TypeArguments::ZoneHandle(Z), constructor,
- arguments);
+ token_pos, TypeArguments::ZoneHandle(Z), constructor, arguments);
current_block_->statements->Add(future_node);
// Add to AST:
@@ -7580,10 +7248,7 @@ SequenceNode* Parser::CloseAsyncFunction(const Function& closure,
ReturnNode* return_node = new (Z) ReturnNode(
token_pos,
new (Z) InstanceGetterNode(
- token_pos,
- new (Z) LoadLocalNode(
- token_pos,
- async_completer),
+ token_pos, new (Z) LoadLocalNode(token_pos, async_completer),
Symbols::CompleterFuture()));
current_block_->statements->Add(return_node);
return CloseBlock();
@@ -7632,9 +7297,8 @@ void Parser::AddFormalParamsToFunction(const ParamList* params,
if (!Utils::IsInt(16, params->num_fixed_parameters) ||
!Utils::IsInt(16, params->num_optional_parameters)) {
const Script& script = Script::Handle(Class::Handle(func.Owner()).script());
- Report::MessageF(Report::kError,
- script, func.token_pos(), Report::AtLocation,
- "too many formal parameters");
+ Report::MessageF(Report::kError, script, func.token_pos(),
+ Report::AtLocation, "too many formal parameters");
}
func.set_num_fixed_parameters(params->num_fixed_parameters);
func.SetNumOptionalParameters(params->num_optional_parameters,
@@ -7643,10 +7307,10 @@ void Parser::AddFormalParamsToFunction(const ParamList* params,
ASSERT(num_parameters == func.NumParameters());
ASSERT(func.parameter_types() == Object::empty_array().raw());
ASSERT(func.parameter_names() == Object::empty_array().raw());
- func.set_parameter_types(Array::Handle(Array::New(num_parameters,
- Heap::kOld)));
- func.set_parameter_names(Array::Handle(Array::New(num_parameters,
- Heap::kOld)));
+ func.set_parameter_types(
+ Array::Handle(Array::New(num_parameters, Heap::kOld)));
+ func.set_parameter_names(
+ Array::Handle(Array::New(num_parameters, Heap::kOld)));
for (int i = 0; i < num_parameters; i++) {
ParamDesc& param_desc = (*params->parameters)[i];
func.SetParameterTypeAt(i, *param_desc.type);
@@ -7671,14 +7335,10 @@ void Parser::AddFormalParamsToScope(const ParamList* params,
ParamDesc& param_desc = (*params->parameters)[i];
ASSERT(!is_top_level_ || param_desc.type->IsResolved());
const String* name = param_desc.name;
- LocalVariable* parameter = new(Z) LocalVariable(
- param_desc.name_pos,
- param_desc.name_pos,
- *name,
- *param_desc.type);
+ LocalVariable* parameter = new (Z) LocalVariable(
+ param_desc.name_pos, param_desc.name_pos, *name, *param_desc.type);
if (!scope->InsertParameterAt(i, parameter)) {
- ReportError(param_desc.name_pos,
- "name '%s' already exists in scope",
+ ReportError(param_desc.name_pos, "name '%s' already exists in scope",
param_desc.name->ToCString());
}
param_desc.var = parameter;
@@ -7706,14 +7366,11 @@ void Parser::ParseNativeFunctionBlock(const ParamList* params,
const String& native_name = ParseNativeDeclaration();
// Now add the NativeBodyNode and return statement.
- current_block_->statements->Add(new(Z) ReturnNode(
+ current_block_->statements->Add(new (Z) ReturnNode(
TokenPos(),
- new(Z) NativeBodyNode(
- TokenPos(),
- Function::ZoneHandle(Z, func.raw()),
- native_name,
- current_block_->scope,
- FLAG_link_natives_lazily)));
+ new (Z) NativeBodyNode(TokenPos(), Function::ZoneHandle(Z, func.raw()),
+ native_name, current_block_->scope,
+ FLAG_link_natives_lazily)));
}
@@ -7733,8 +7390,9 @@ LocalVariable* Parser::LookupTypeArgumentsParameter(LocalScope* from_scope,
void Parser::CaptureInstantiator() {
ASSERT(FunctionLevel() > 0);
- const String* variable_name = current_function().IsInFactoryScope() ?
- &Symbols::TypeArgumentsParameter() : &Symbols::This();
+ const String* variable_name = current_function().IsInFactoryScope()
+ ? &Symbols::TypeArgumentsParameter()
+ : &Symbols::This();
current_block_->scope->CaptureVariable(
current_block_->scope->LookupVariable(*variable_name, true));
}
@@ -7756,14 +7414,14 @@ AstNode* Parser::LoadReceiver(TokenPosition token_pos) {
if (receiver == NULL) {
ReportError(token_pos, "illegal implicit access to receiver 'this'");
}
- return new(Z) LoadLocalNode(TokenPos(), receiver);
+ return new (Z) LoadLocalNode(TokenPos(), receiver);
}
InstanceGetterNode* Parser::CallGetter(TokenPosition token_pos,
AstNode* object,
const String& name) {
- return new(Z) InstanceGetterNode(token_pos, object, name);
+ return new (Z) InstanceGetterNode(token_pos, object, name);
}
@@ -7783,16 +7441,11 @@ AstNode* Parser::ParseVariableDeclaration(const AbstractType& type,
if (CurrentToken() == Token::kASSIGN) {
// Variable initialization.
ConsumeToken();
- AstNode* expr = ParseAwaitableExpr(
- is_const, kConsumeCascades, await_preamble);
+ AstNode* expr =
+ ParseAwaitableExpr(is_const, kConsumeCascades, await_preamble);
const TokenPosition expr_end_pos = TokenPos();
- variable = new(Z) LocalVariable(
- ident_pos,
- expr_end_pos,
- ident,
- type);
- initialization = new(Z) StoreLocalNode(
- assign_pos, variable, expr);
+ variable = new (Z) LocalVariable(ident_pos, expr_end_pos, ident, type);
+ initialization = new (Z) StoreLocalNode(assign_pos, variable, expr);
if (is_const) {
ASSERT(expr->IsLiteralNode());
variable->SetConstValue(expr->AsLiteralNode()->literal());
@@ -7802,14 +7455,10 @@ AstNode* Parser::ParseVariableDeclaration(const AbstractType& type,
"missing initialization of 'final' or 'const' variable");
} else {
// Initialize variable with null.
- variable = new(Z) LocalVariable(
- ident_pos,
- assign_pos,
- ident,
- type);
- AstNode* null_expr = new(Z) LiteralNode(ident_pos, Object::null_instance());
- initialization = new(Z) StoreLocalNode(
- ident_pos, variable, null_expr);
+ variable = new (Z) LocalVariable(ident_pos, assign_pos, ident, type);
+ AstNode* null_expr =
+ new (Z) LiteralNode(ident_pos, Object::null_instance());
+ initialization = new (Z) StoreLocalNode(ident_pos, variable, null_expr);
}
ASSERT(current_block_ != NULL);
@@ -7818,17 +7467,14 @@ AstNode* Parser::ParseVariableDeclaration(const AbstractType& type,
if (previous_pos.IsReal()) {
ASSERT(!script_.IsNull());
if (previous_pos > ident_pos) {
- ReportError(ident_pos,
- "initializer of '%s' may not refer to itself",
+ ReportError(ident_pos, "initializer of '%s' may not refer to itself",
ident.ToCString());
} else {
intptr_t line_number;
script_.GetTokenLocation(previous_pos, &line_number, NULL);
- ReportError(ident_pos,
- "identifier '%s' previously used in line %" Pd "",
- ident.ToCString(),
- line_number);
+ ReportError(ident_pos, "identifier '%s' previously used in line %" Pd "",
+ ident.ToCString(), line_number);
}
}
@@ -7877,10 +7523,10 @@ RawAbstractType* Parser::ParseConstFinalVarOrType(
Token::Kind follower = LookaheadToken(1);
// We have an identifier followed by a 'follower' token.
// We either parse a type or return now.
- if ((follower != Token::kLT) && // Parameterized type.
- (follower != Token::kPERIOD) && // Qualified class name of type.
+ if ((follower != Token::kLT) && // Parameterized type.
+ (follower != Token::kPERIOD) && // Qualified class name of type.
!Token::IsIdentifier(follower) && // Variable name following a type.
- (follower != Token::kTHIS)) { // Field parameter following a type.
+ (follower != Token::kTHIS)) { // Field parameter following a type.
return Type::DynamicType();
}
}
@@ -7896,9 +7542,10 @@ AstNode* Parser::ParseVariableDeclarationList() {
SkipMetadata();
bool is_final = (CurrentToken() == Token::kFINAL);
bool is_const = (CurrentToken() == Token::kCONST);
- const AbstractType& type = AbstractType::ZoneHandle(Z,
- ParseConstFinalVarOrType(I->type_checks() ?
- ClassFinalizer::kCanonicalize : ClassFinalizer::kIgnore));
+ const AbstractType& type = AbstractType::ZoneHandle(
+ Z,
+ ParseConstFinalVarOrType(I->type_checks() ? ClassFinalizer::kCanonicalize
+ : ClassFinalizer::kIgnore));
if (!IsIdentifier()) {
ReportError("identifier expected");
}
@@ -7918,12 +7565,11 @@ AstNode* Parser::ParseVariableDeclarationList() {
}
// We have a second initializer. Allocate a sequence node now.
// The sequence does not own the current scope. Set its own scope to NULL.
- SequenceNode* sequence = NodeAsSequenceNode(initializers->token_pos(),
- initializers,
- NULL);
+ SequenceNode* sequence =
+ NodeAsSequenceNode(initializers->token_pos(), initializers, NULL);
preamble = NULL;
- AstNode* declaration = ParseVariableDeclaration(
- type, is_final, is_const, &preamble);
+ AstNode* declaration =
+ ParseVariableDeclaration(type, is_final, is_const, &preamble);
if (preamble != NULL) {
sequence->Add(preamble);
}
@@ -7973,8 +7619,7 @@ AstNode* Parser::ParseFunctionStatement(bool is_literal) {
script_.GetTokenLocation(previous_pos, &line_number, NULL);
ReportError(function_name_pos,
"identifier '%s' previously used in line %" Pd "",
- function_name->ToCString(),
- line_number);
+ function_name->ToCString(), line_number);
}
}
@@ -7995,8 +7640,7 @@ AstNode* Parser::ParseFunctionStatement(bool is_literal) {
// function has been properly setup.
found_func = false;
function = Function::NewClosureFunction(*function_name,
- innermost_function(),
- function_pos);
+ innermost_function(), function_pos);
function.set_result_type(result_type);
if (FLAG_enable_mirrors && metadata_pos.IsReal()) {
library_.AddFunctionMetadata(function, metadata_pos);
@@ -8021,8 +7665,8 @@ AstNode* Parser::ParseFunctionStatement(bool is_literal) {
// Now that type parameters are declared, the result type can be resolved
// and finalized.
ResolveType(ClassFinalizer::kResolveTypeParameters, &result_type);
- result_type = ClassFinalizer::FinalizeType(
- current_class(), result_type, ClassFinalizer::kCanonicalize);
+ result_type = ClassFinalizer::FinalizeType(current_class(), result_type,
+ ClassFinalizer::kCanonicalize);
function.set_result_type(result_type);
}
@@ -8040,27 +7684,23 @@ AstNode* Parser::ParseFunctionStatement(bool is_literal) {
// function is parsed. Therefore, we set the function type to a new
// function type to be patched after the actual type is known.
// We temporarily use the Closure class as scope class.
- const Class& unknown_scope_class = Class::Handle(Z,
- I->object_store()->closure_class());
- function_type = Type::New(unknown_scope_class,
- TypeArguments::Handle(Z),
- function_pos);
+ const Class& unknown_scope_class =
+ Class::Handle(Z, I->object_store()->closure_class());
+ function_type =
+ Type::New(unknown_scope_class, TypeArguments::Handle(Z), function_pos);
function_type.set_signature(function);
function_type.SetIsFinalized(); // No finalization needed.
// Add the function variable to the scope before parsing the function in
// order to allow self reference from inside the function.
- function_variable = new(Z) LocalVariable(function_name_pos,
- function_pos,
- *variable_name,
- function_type);
+ function_variable = new (Z) LocalVariable(function_name_pos, function_pos,
+ *variable_name, function_type);
function_variable->set_is_final();
ASSERT(current_block_ != NULL);
ASSERT(current_block_->scope != NULL);
if (!current_block_->scope->AddVariable(function_variable)) {
- LocalVariable* existing_var =
- current_block_->scope->LookupVariable(function_variable->name(),
- true);
+ LocalVariable* existing_var = current_block_->scope->LookupVariable(
+ function_variable->name(), true);
ASSERT(existing_var != NULL);
// Use before define cases have already been detected and reported above.
ASSERT(existing_var->owner() == current_block_->scope);
@@ -8124,8 +7764,7 @@ AstNode* Parser::ParseFunctionStatement(bool is_literal) {
if (variable_name != NULL) {
// Patch the function type of the variable now that the signature is known.
- function_type.set_type_class(
- Class::Handle(Z, signature_type.type_class()));
+ function_type.set_type_class(Class::Handle(Z, signature_type.type_class()));
function_type.set_arguments(
TypeArguments::Handle(Z, signature_type.arguments()));
ASSERT(function_type.signature() == function.raw());
@@ -8159,8 +7798,8 @@ AstNode* Parser::ParseFunctionStatement(bool is_literal) {
// This pruning is done by omitting to hook the local scope in its parent
// scope in the constructor of LocalScope.
AstNode* closure =
- new(Z) ClosureNode(function_pos, function, NULL,
- statements != NULL ? statements->scope() : NULL);
+ new (Z) ClosureNode(function_pos, function, NULL,
+ statements != NULL ? statements->scope() : NULL);
ASSERT(innermost_function_.raw() == function.raw());
innermost_function_ = function.parent_function();
@@ -8169,8 +7808,8 @@ AstNode* Parser::ParseFunctionStatement(bool is_literal) {
ASSERT(is_literal);
return closure;
} else {
- AstNode* initialization = new(Z) StoreLocalNode(
- function_pos, function_variable, closure);
+ AstNode* initialization =
+ new (Z) StoreLocalNode(function_pos, function_variable, closure);
return initialization;
}
}
@@ -8195,8 +7834,7 @@ bool Parser::TryParseTypeParameters() {
// Consume the identifier, the period will be consumed below.
ConsumeToken();
}
- } else if ((ct != Token::kCOMMA) &&
- (ct != Token::kEXTENDS) &&
+ } else if ((ct != Token::kCOMMA) && (ct != Token::kEXTENDS) &&
(!FLAG_generic_method_syntax || (ct != Token::kSUPER))) {
// We are looking at something other than type parameters.
return false;
@@ -8329,16 +7967,16 @@ bool Parser::IsSimpleLiteral(const AbstractType& type, Instance* value) {
// Returns true if the current token is kIDENT or a pseudo-keyword.
bool Parser::IsIdentifier() {
return Token::IsIdentifier(CurrentToken()) &&
- !(await_is_keyword_ &&
- ((CurrentLiteral()->raw() == Symbols::Await().raw()) ||
- (CurrentLiteral()->raw() == Symbols::Async().raw()) ||
- (CurrentLiteral()->raw() == Symbols::YieldKw().raw())));
+ !(await_is_keyword_ &&
+ ((CurrentLiteral()->raw() == Symbols::Await().raw()) ||
+ (CurrentLiteral()->raw() == Symbols::Async().raw()) ||
+ (CurrentLiteral()->raw() == Symbols::YieldKw().raw())));
}
bool Parser::IsSymbol(const String& symbol) {
return (CurrentLiteral()->raw() == symbol.raw()) &&
- (CurrentToken() == Token::kIDENT);
+ (CurrentToken() == Token::kIDENT);
}
@@ -8399,8 +8037,7 @@ bool Parser::TryParseReturnType() {
// | type ident (';' | '=' | ',')
// Token position remains unchanged.
bool Parser::IsVariableDeclaration() {
- if ((CurrentToken() == Token::kVAR) ||
- (CurrentToken() == Token::kFINAL)) {
+ if ((CurrentToken() == Token::kVAR) || (CurrentToken() == Token::kFINAL)) {
return true;
}
// Skip optional metadata.
@@ -8424,8 +8061,8 @@ bool Parser::IsVariableDeclaration() {
}
if (IsIdentifier()) { // Type or variable name.
Token::Kind follower = LookaheadToken(1);
- if ((follower == Token::kLT) || // Parameterized type.
- (follower == Token::kPERIOD) || // Qualified class name of type.
+ if ((follower == Token::kLT) || // Parameterized type.
+ (follower == Token::kPERIOD) || // Qualified class name of type.
Token::IsIdentifier(follower)) { // Variable name following a type.
// We see the beginning of something that could be a type.
const TokenPosition type_pos = TokenPos();
@@ -8498,12 +8135,9 @@ bool Parser::IsFunctionDeclaration() {
// Check parameter list and the following token.
SkipToMatchingParenthesis();
- if ((CurrentToken() == Token::kLBRACE) ||
- (CurrentToken() == Token::kARROW) ||
- (is_top_level_ && IsSymbol(Symbols::Native())) ||
- is_external ||
- IsSymbol(Symbols::Async()) ||
- IsSymbol(Symbols::Sync())) {
+ if ((CurrentToken() == Token::kLBRACE) || (CurrentToken() == Token::kARROW) ||
+ (is_top_level_ && IsSymbol(Symbols::Native())) || is_external ||
+ IsSymbol(Symbols::Async()) || IsSymbol(Symbols::Sync())) {
return true;
}
return false;
@@ -8545,7 +8179,7 @@ bool Parser::IsFunctionLiteral() {
ParseFunctionModifier();
if ((CurrentToken() == Token::kLBRACE) ||
(CurrentToken() == Token::kARROW)) {
- return true;
+ return true;
}
}
return false;
@@ -8560,8 +8194,7 @@ bool Parser::IsForInStatement() {
// Allow const modifier as well when recognizing a for-in statement
// pattern. We will get an error later if the loop variable is
// declared with const.
- if (CurrentToken() == Token::kVAR ||
- CurrentToken() == Token::kFINAL ||
+ if (CurrentToken() == Token::kVAR || CurrentToken() == Token::kFINAL ||
CurrentToken() == Token::kCONST) {
ConsumeToken();
}
@@ -8582,11 +8215,10 @@ bool Parser::IsForInStatement() {
static bool ContainsAbruptCompletingStatement(SequenceNode* seq);
static bool IsAbruptCompleting(AstNode* statement) {
- return statement->IsReturnNode() ||
- statement->IsJumpNode() ||
- statement->IsThrowNode() ||
+ return statement->IsReturnNode() || statement->IsJumpNode() ||
+ statement->IsThrowNode() ||
(statement->IsSequenceNode() &&
- ContainsAbruptCompletingStatement(statement->AsSequenceNode()));
+ ContainsAbruptCompletingStatement(statement->AsSequenceNode()));
}
@@ -8676,8 +8308,8 @@ AstNode* Parser::ParseIfStatement(String* label_name) {
ConsumeToken();
false_branch = ParseNestedStatement(parsing_loop_body, NULL);
}
- AstNode* if_node = new(Z) IfNode(
- if_pos, cond_expr, true_branch, false_branch);
+ AstNode* if_node =
+ new (Z) IfNode(if_pos, cond_expr, true_branch, false_branch);
if (label != NULL) {
current_block_->statements->Add(if_node);
SequenceNode* sequence = CloseBlock();
@@ -8692,7 +8324,8 @@ AstNode* Parser::ParseIfStatement(String* label_name) {
// == operator.
static bool ImplementsEqualOperator(Zone* zone, const Instance& value) {
Class& cls = Class::Handle(value.clazz());
- const Function& equal_op = Function::Handle(zone,
+ const Function& equal_op = Function::Handle(
+ zone,
Resolver::ResolveDynamicAnyArgs(zone, cls, Symbols::EqualOperator()));
ASSERT(!equal_op.IsNull());
cls = equal_op.Owner();
@@ -8763,7 +8396,7 @@ CaseNode* Parser::ParseCaseClause(LocalVariable* switch_expr_value,
bool default_seen = false;
const TokenPosition case_pos = TokenPos();
// The case expressions node sequence does not own the enclosing scope.
- SequenceNode* case_expressions = new(Z) SequenceNode(case_pos, NULL);
+ SequenceNode* case_expressions = new (Z) SequenceNode(case_pos, NULL);
while (CurrentToken() == Token::kCASE || CurrentToken() == Token::kDEFAULT) {
if (CurrentToken() == Token::kCASE) {
if (default_seen) {
@@ -8775,10 +8408,10 @@ CaseNode* Parser::ParseCaseClause(LocalVariable* switch_expr_value,
ASSERT(expr->IsLiteralNode());
case_expr_values->Add(expr->AsLiteralNode());
- AstNode* switch_expr_load = new(Z) LoadLocalNode(
- case_pos, switch_expr_value);
- AstNode* case_comparison = new(Z) ComparisonNode(
- expr_pos, Token::kEQ, expr, switch_expr_load);
+ AstNode* switch_expr_load =
+ new (Z) LoadLocalNode(case_pos, switch_expr_value);
+ AstNode* case_comparison =
+ new (Z) ComparisonNode(expr_pos, Token::kEQ, expr, switch_expr_load);
case_expressions->Add(case_comparison);
} else {
if (default_seen) {
@@ -8811,15 +8444,13 @@ CaseNode* Parser::ParseCaseClause(LocalVariable* switch_expr_value,
// End of this case clause. If there is a possible fall-through to
// the next case clause, throw an implicit FallThroughError.
if (!abrupt_completing_seen) {
- ArgumentListNode* arguments = new(Z) ArgumentListNode(TokenPos());
- arguments->Add(new(Z) LiteralNode(
- TokenPos(),
- Integer::ZoneHandle(Z, Integer::New(TokenPos().value(),
- Heap::kOld))));
- current_block_->statements->Add(
- MakeStaticCall(Symbols::FallThroughError(),
- Library::PrivateCoreLibName(Symbols::ThrowNew()),
- arguments));
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(TokenPos());
+ arguments->Add(new (Z) LiteralNode(
+ TokenPos(), Integer::ZoneHandle(
+ Z, Integer::New(TokenPos().value(), Heap::kOld))));
+ current_block_->statements->Add(MakeStaticCall(
+ Symbols::FallThroughError(),
+ Library::PrivateCoreLibName(Symbols::ThrowNew()), arguments));
}
break;
}
@@ -8831,8 +8462,8 @@ CaseNode* Parser::ParseCaseClause(LocalVariable* switch_expr_value,
}
}
SequenceNode* statements = CloseBlock();
- return new(Z) CaseNode(case_pos, case_label,
- case_expressions, default_seen, switch_expr_value, statements);
+ return new (Z) CaseNode(case_pos, case_label, case_expressions, default_seen,
+ switch_expr_value, statements);
}
@@ -8845,8 +8476,8 @@ AstNode* Parser::ParseSwitchStatement(String* label_name) {
ConsumeToken();
ExpectToken(Token::kLPAREN);
const TokenPosition expr_pos = TokenPos();
- AstNode* switch_expr = ParseAwaitableExpr(
- kAllowConst, kConsumeCascades, NULL);
+ AstNode* switch_expr =
+ ParseAwaitableExpr(kAllowConst, kConsumeCascades, NULL);
ExpectToken(Token::kRPAREN);
ExpectToken(Token::kLBRACE);
OpenBlock();
@@ -8857,16 +8488,15 @@ AstNode* Parser::ParseSwitchStatement(String* label_name) {
// type of the case clause expressions. Therefore, we have to allocate
// a new type representing dynamic and can't reuse the canonical
// type object for dynamic.
- const Type& temp_var_type = Type::ZoneHandle(Z,
- Type::New(Class::Handle(Z, Object::dynamic_class()),
- TypeArguments::Handle(Z),
- expr_pos));
+ const Type& temp_var_type =
+ Type::ZoneHandle(Z, Type::New(Class::Handle(Z, Object::dynamic_class()),
+ TypeArguments::Handle(Z), expr_pos));
temp_var_type.SetIsFinalized();
- LocalVariable* temp_variable = new(Z) LocalVariable(
- expr_pos, expr_pos, Symbols::SwitchExpr(), temp_var_type);
+ LocalVariable* temp_variable = new (Z)
+ LocalVariable(expr_pos, expr_pos, Symbols::SwitchExpr(), temp_var_type);
current_block_->scope->AddVariable(temp_variable);
- AstNode* save_switch_expr = new(Z) StoreLocalNode(
- expr_pos, temp_variable, switch_expr);
+ AstNode* save_switch_expr =
+ new (Z) StoreLocalNode(expr_pos, temp_variable, switch_expr);
current_block_->statements->Add(save_switch_expr);
// Parse case clauses
@@ -8884,8 +8514,8 @@ AstNode* Parser::ParseSwitchStatement(String* label_name) {
case_label = current_block_->scope->LocalLookupLabel(*label_name);
if (case_label == NULL) {
// Label does not exist yet. Add it to scope of switch statement.
- case_label = new(Z) SourceLabel(
- label_pos, *label_name, SourceLabel::kCase);
+ case_label =
+ new (Z) SourceLabel(label_pos, *label_name, SourceLabel::kCase);
current_block_->scope->AddLabel(case_label);
} else if (case_label->kind() == SourceLabel::kForward) {
// We have seen a 'continue' with this label name. Resolve
@@ -8898,8 +8528,7 @@ AstNode* Parser::ParseSwitchStatement(String* label_name) {
}
ASSERT(case_label->kind() == SourceLabel::kCase);
}
- if (CurrentToken() == Token::kCASE ||
- CurrentToken() == Token::kDEFAULT) {
+ if (CurrentToken() == Token::kCASE || CurrentToken() == Token::kDEFAULT) {
if (default_seen) {
ReportError("no case clauses allowed after default clause");
}
@@ -8933,7 +8562,7 @@ AstNode* Parser::ParseSwitchStatement(String* label_name) {
SequenceNode* switch_body = CloseBlock();
ExpectToken(Token::kRBRACE);
- return new(Z) SwitchNode(switch_pos, label, switch_body);
+ return new (Z) SwitchNode(switch_pos, label, switch_body);
}
@@ -8945,16 +8574,13 @@ AstNode* Parser::ParseWhileStatement(String* label_name) {
ConsumeToken();
ExpectToken(Token::kLPAREN);
SequenceNode* await_preamble = NULL;
- AstNode* cond_expr = ParseAwaitableExpr(
- kAllowConst, kConsumeCascades, &await_preamble);
+ AstNode* cond_expr =
+ ParseAwaitableExpr(kAllowConst, kConsumeCascades, &await_preamble);
ExpectToken(Token::kRPAREN);
- const bool parsing_loop_body = true;
+ const bool parsing_loop_body = true;
SequenceNode* while_body = ParseNestedStatement(parsing_loop_body, label);
- WhileNode* while_node = new (Z) WhileNode(while_pos,
- label,
- cond_expr,
- await_preamble,
- while_body);
+ WhileNode* while_node = new (Z)
+ WhileNode(while_pos, label, cond_expr, await_preamble, while_body);
return while_node;
}
@@ -8965,7 +8591,7 @@ AstNode* Parser::ParseDoWhileStatement(String* label_name) {
SourceLabel* label =
SourceLabel::New(do_pos, label_name, SourceLabel::kDoWhile);
ConsumeToken();
- const bool parsing_loop_body = true;
+ const bool parsing_loop_body = true;
SequenceNode* dowhile_body = ParseNestedStatement(parsing_loop_body, label);
ExpectToken(Token::kWHILE);
ExpectToken(Token::kLPAREN);
@@ -8975,14 +8601,14 @@ AstNode* Parser::ParseDoWhileStatement(String* label_name) {
ParseAwaitableExpr(kAllowConst, kConsumeCascades, &await_preamble);
if (await_preamble != NULL) {
// Prepend the preamble to the condition.
- LetNode* await_cond = new(Z) LetNode(expr_pos);
+ LetNode* await_cond = new (Z) LetNode(expr_pos);
await_cond->AddNode(await_preamble);
await_cond->AddNode(cond_expr);
cond_expr = await_cond;
}
ExpectToken(Token::kRPAREN);
ExpectSemicolon();
- return new(Z) DoWhileNode(do_pos, label, cond_expr, dowhile_body);
+ return new (Z) DoWhileNode(do_pos, label, cond_expr, dowhile_body);
}
@@ -8998,11 +8624,10 @@ static LocalVariable* LookupAsyncSavedTryContextVar(Thread* thread,
LocalScope* scope,
uint16_t try_index) {
Zone* zone = thread->zone();
- const String& async_saved_try_ctx_name = String::ZoneHandle(zone,
- Symbols::NewFormatted(thread,
- "%s%d",
- Symbols::AsyncSavedTryCtxVarPrefix().ToCString(),
- try_index));
+ const String& async_saved_try_ctx_name = String::ZoneHandle(
+ zone, Symbols::NewFormatted(
+ thread, "%s%d",
+ Symbols::AsyncSavedTryCtxVarPrefix().ToCString(), try_index));
LocalVariable* var = scope->LocalLookupVariable(async_saved_try_ctx_name);
ASSERT(var != NULL);
return var;
@@ -9040,8 +8665,8 @@ void Parser::CheckAsyncOpInTryBlock(
// The block declaring :saved_try_ctx_var variable is the parent of the
// pushed try block.
*saved_try_ctx = LookupSavedTryContextVar(scope->parent());
- *async_saved_try_ctx = LookupAsyncSavedTryContextVar(T,
- async_temp_scope_, try_index);
+ *async_saved_try_ctx =
+ LookupAsyncSavedTryContextVar(T, async_temp_scope_, try_index);
if ((try_stack_->outer_try() != NULL) && !try_stack_->inside_finally()) {
// Collecting the outer try scope is not necessary if we
// are in a finally block.
@@ -9049,8 +8674,8 @@ void Parser::CheckAsyncOpInTryBlock(
try_index = try_stack_->outer_try()->try_index();
if (scope->function_level() == current_function_level) {
*outer_saved_try_ctx = LookupSavedTryContextVar(scope->parent());
- *outer_async_saved_try_ctx = LookupAsyncSavedTryContextVar(T,
- async_temp_scope_, try_index);
+ *outer_async_saved_try_ctx =
+ LookupAsyncSavedTryContextVar(T, async_temp_scope_, try_index);
}
}
}
@@ -9058,8 +8683,7 @@ void Parser::CheckAsyncOpInTryBlock(
// An async or async* has an implicitly created try-catch around the
// function body, so the await or yield inside the async closure should always
// be created with a try scope.
- ASSERT((*saved_try_ctx != NULL) ||
- innermost_function().IsAsyncFunction() ||
+ ASSERT((*saved_try_ctx != NULL) || innermost_function().IsAsyncFunction() ||
innermost_function().IsAsyncGenerator() ||
innermost_function().IsSyncGenClosure() ||
innermost_function().IsSyncGenerator());
@@ -9070,15 +8694,15 @@ void Parser::CheckAsyncOpInTryBlock(
// Used during debugging to insert print in generated dart code.
AstNode* Parser::DartPrint(const char* str) {
const Library& lib = Library::Handle(Library::CoreLibrary());
- const Function& print_fn = Function::ZoneHandle(
- Z, lib.LookupFunctionAllowPrivate(Symbols::print()));
+ const Function& print_fn =
+ Function::ZoneHandle(Z, lib.LookupFunctionAllowPrivate(Symbols::print()));
ASSERT(!print_fn.IsNull());
ArgumentListNode* one_arg =
- new(Z) ArgumentListNode(TokenPosition::kNoSource);
+ new (Z) ArgumentListNode(TokenPosition::kNoSource);
String& msg = String::ZoneHandle(Symbols::NewFormatted(T, "%s", str));
- one_arg->Add(new(Z) LiteralNode(TokenPosition::kNoSource, msg));
+ one_arg->Add(new (Z) LiteralNode(TokenPosition::kNoSource, msg));
AstNode* print_call =
- new(Z) StaticCallNode(TokenPosition::kNoSource, print_fn, one_arg);
+ new (Z) StaticCallNode(TokenPosition::kNoSource, print_fn, one_arg);
return print_call;
}
@@ -9106,15 +8730,15 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
ReportError("Loop variable cannot be 'const'");
}
bool new_loop_var = false;
- AbstractType& loop_var_type = AbstractType::ZoneHandle(Z);
+ AbstractType& loop_var_type = AbstractType::ZoneHandle(Z);
if (LookaheadToken(1) != Token::kIN) {
// Declaration of a new loop variable.
// Delay creation of the local variable until we know its actual
// position, which is inside the loop body.
new_loop_var = true;
- loop_var_type = ParseConstFinalVarOrType(
- I->type_checks() ? ClassFinalizer::kCanonicalize :
- ClassFinalizer::kIgnore);
+ loop_var_type = ParseConstFinalVarOrType(I->type_checks()
+ ? ClassFinalizer::kCanonicalize
+ : ClassFinalizer::kIgnore);
}
TokenPosition loop_var_pos = TokenPos();
const String* loop_var_name = ExpectIdentifier("variable name expected");
@@ -9140,23 +8764,20 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
const Class& stream_iterator_cls =
Class::ZoneHandle(Z, I->object_store()->stream_iterator_class());
ASSERT(!stream_iterator_cls.IsNull());
- const Function& iterator_ctor =
- Function::ZoneHandle(Z, stream_iterator_cls.LookupFunction(
- Symbols::StreamIteratorConstructor()));
+ const Function& iterator_ctor = Function::ZoneHandle(
+ Z,
+ stream_iterator_cls.LookupFunction(Symbols::StreamIteratorConstructor()));
ASSERT(!iterator_ctor.IsNull());
ArgumentListNode* ctor_args = new (Z) ArgumentListNode(stream_expr_pos);
ctor_args->Add(stream_expr);
- ConstructorCallNode* ctor_call =
- new (Z) ConstructorCallNode(stream_expr_pos,
- TypeArguments::ZoneHandle(Z),
- iterator_ctor,
- ctor_args);
+ ConstructorCallNode* ctor_call = new (Z) ConstructorCallNode(
+ stream_expr_pos, TypeArguments::ZoneHandle(Z), iterator_ctor, ctor_args);
const AbstractType& iterator_type = Object::dynamic_type();
- LocalVariable* iterator_var = new(Z) LocalVariable(
+ LocalVariable* iterator_var = new (Z) LocalVariable(
stream_expr_pos, stream_expr_pos, Symbols::ForInIter(), iterator_type);
current_block_->scope->AddVariable(iterator_var);
AstNode* iterator_init =
- new(Z) StoreLocalNode(stream_expr_pos, iterator_var, ctor_call);
+ new (Z) StoreLocalNode(stream_expr_pos, iterator_var, ctor_call);
current_block_->statements->Add(iterator_init);
// We need to ensure that the stream is cancelled after the loop.
@@ -9175,11 +8796,8 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
LocalVariable* saved_stack_trace_var = NULL;
SetupExceptionVariables(current_block_->scope,
false, // Do not create the saved_ vars.
- &context_var,
- &exception_var,
- &stack_trace_var,
- &saved_exception_var,
- &saved_stack_trace_var);
+ &context_var, &exception_var, &stack_trace_var,
+ &saved_exception_var, &saved_stack_trace_var);
OpenBlock(); // try block.
PushTry(current_block_);
SetupSavedTryContext(context_var);
@@ -9190,25 +8808,16 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
LocalVariable* async_saved_try_ctx;
LocalVariable* outer_saved_try_ctx;
LocalVariable* outer_async_saved_try_ctx;
- CheckAsyncOpInTryBlock(&saved_try_ctx,
- &async_saved_try_ctx,
- &outer_saved_try_ctx,
- &outer_async_saved_try_ctx);
- ArgumentListNode* no_args = new(Z) ArgumentListNode(stream_expr_pos);
- AstNode* iterator_moveNext = new(Z) InstanceCallNode(
- stream_expr_pos,
- new(Z) LoadLocalNode(stream_expr_pos, iterator_var),
- Symbols::MoveNext(),
- no_args);
+ CheckAsyncOpInTryBlock(&saved_try_ctx, &async_saved_try_ctx,
+ &outer_saved_try_ctx, &outer_async_saved_try_ctx);
+ ArgumentListNode* no_args = new (Z) ArgumentListNode(stream_expr_pos);
+ AstNode* iterator_moveNext = new (Z) InstanceCallNode(
+ stream_expr_pos, new (Z) LoadLocalNode(stream_expr_pos, iterator_var),
+ Symbols::MoveNext(), no_args);
OpenBlock();
- AstNode* await_moveNext =
- new(Z) AwaitNode(stream_expr_pos,
- iterator_moveNext,
- saved_try_ctx,
- async_saved_try_ctx,
- outer_saved_try_ctx,
- outer_async_saved_try_ctx,
- current_block_->scope);
+ AstNode* await_moveNext = new (Z) AwaitNode(
+ stream_expr_pos, iterator_moveNext, saved_try_ctx, async_saved_try_ctx,
+ outer_saved_try_ctx, outer_async_saved_try_ctx, current_block_->scope);
AwaitTransformer at(current_block_->statements, async_temp_scope_);
await_moveNext = at.Transform(await_moveNext);
SequenceNode* await_preamble = CloseBlock();
@@ -9224,9 +8833,9 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
current_block_->scope->AddLabel(label);
const TokenPosition loop_var_assignment_pos = TokenPos();
- AstNode* iterator_current = new(Z) InstanceGetterNode(
+ AstNode* iterator_current = new (Z) InstanceGetterNode(
loop_var_assignment_pos,
- new(Z) LoadLocalNode(loop_var_assignment_pos, iterator_var),
+ new (Z) LoadLocalNode(loop_var_assignment_pos, iterator_var),
Symbols::Current());
// Generate assignment of next iterator value to loop variable.
@@ -9237,24 +8846,21 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
// Note that the variable token position needs to be inside the
// loop block, so it gets put in the loop context level.
LocalVariable* loop_var =
- new(Z) LocalVariable(loop_var_assignment_pos,
- loop_var_assignment_pos,
- *loop_var_name,
- loop_var_type);
+ new (Z) LocalVariable(loop_var_assignment_pos, loop_var_assignment_pos,
+ *loop_var_name, loop_var_type);
if (loop_var_is_final) {
loop_var->set_is_final();
}
current_block_->scope->AddVariable(loop_var);
- loop_var_assignment = new(Z) StoreLocalNode(
- loop_var_assignment_pos, loop_var, iterator_current);
+ loop_var_assignment = new (Z)
+ StoreLocalNode(loop_var_assignment_pos, loop_var, iterator_current);
} else {
AstNode* loop_var_primary =
ResolveIdent(loop_var_pos, *loop_var_name, false);
ASSERT(!loop_var_primary->IsPrimaryNode());
- loop_var_assignment = CreateAssignmentNode(loop_var_primary,
- iterator_current,
- loop_var_name,
- loop_var_assignment_pos);
+ loop_var_assignment =
+ CreateAssignmentNode(loop_var_primary, iterator_current, loop_var_name,
+ loop_var_assignment_pos);
ASSERT(loop_var_assignment != NULL);
}
current_block_->statements->Add(loop_var_assignment);
@@ -9272,11 +8878,8 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
}
SequenceNode* for_loop_block = CloseBlock();
- WhileNode* while_node = new (Z) WhileNode(await_for_pos,
- label,
- await_moveNext,
- await_preamble,
- for_loop_block);
+ WhileNode* while_node = new (Z) WhileNode(
+ await_for_pos, label, await_moveNext, await_preamble, for_loop_block);
// Add the while loop to the try block.
current_block_->statements->Add(while_node);
SequenceNode* try_block = CloseBlock();
@@ -9284,12 +8887,11 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
// Create an empty "catch all" block that rethrows the current
// exception and stacktrace.
try_stack_->enter_catch();
- SequenceNode* catch_block = new(Z) SequenceNode(await_for_pos, NULL);
+ SequenceNode* catch_block = new (Z) SequenceNode(await_for_pos, NULL);
if (outer_saved_try_ctx != NULL) {
catch_block->Add(new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- outer_saved_try_ctx,
+ TokenPosition::kNoSource, outer_saved_try_ctx,
new (Z) LoadLocalNode(TokenPosition::kNoSource,
outer_async_saved_try_ctx)));
}
@@ -9299,16 +8901,16 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
// is no code in the catch clause that could suspend the function.
// Rethrow the exception.
- catch_block->Add(new(Z) ThrowNode(
- await_for_pos,
- new(Z) LoadLocalNode(await_for_pos, exception_var),
- new(Z) LoadLocalNode(await_for_pos, stack_trace_var)));
+ catch_block->Add(new (Z) ThrowNode(
+ await_for_pos, new (Z) LoadLocalNode(await_for_pos, exception_var),
+ new (Z) LoadLocalNode(await_for_pos, stack_trace_var)));
TryStack* try_statement = PopTry();
const intptr_t try_index = try_statement->try_index();
TryStack* outer_try = try_stack_;
- const intptr_t outer_try_index = (outer_try != NULL) ?
- outer_try->try_index() : CatchClauseNode::kInvalidTryIndex;
+ const intptr_t outer_try_index = (outer_try != NULL)
+ ? outer_try->try_index()
+ : CatchClauseNode::kInvalidTryIndex;
// The finally block contains a call to cancel the stream.
// :for-in-iter.cancel();
@@ -9326,28 +8928,24 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
// exists.
if (outer_saved_try_ctx != NULL) {
current_block_->statements->Add(new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- outer_saved_try_ctx,
+ TokenPosition::kNoSource, outer_saved_try_ctx,
new (Z) LoadLocalNode(TokenPosition::kNoSource,
outer_async_saved_try_ctx)));
}
// :for-in-iter.cancel();
ArgumentListNode* no_args =
- new(Z) ArgumentListNode(TokenPosition::kNoSource);
- current_block_->statements->Add(
- new(Z) InstanceCallNode(TokenPosition::kNoSource,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, iterator_var),
- Symbols::Cancel(),
- no_args));
+ new (Z) ArgumentListNode(TokenPosition::kNoSource);
+ current_block_->statements->Add(new (Z) InstanceCallNode(
+ TokenPosition::kNoSource,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, iterator_var),
+ Symbols::Cancel(), no_args));
finally_clause = CloseBlock();
AstNode* node_to_inline = try_statement->GetNodeToInlineFinally(node_index);
if (node_to_inline != NULL) {
InlinedFinallyNode* node =
- new(Z) InlinedFinallyNode(TokenPosition::kNoSource,
- finally_clause,
- context_var,
- outer_try_index);
+ new (Z) InlinedFinallyNode(TokenPosition::kNoSource, finally_clause,
+ context_var, outer_try_index);
finally_clause = NULL;
AddFinallyClauseToNode(true, node_to_inline, node);
node_index++;
@@ -9365,25 +8963,14 @@ AstNode* Parser::ParseAwaitForStatement(String* label_name) {
// Catch block handles all exceptions.
handler_types.SetAt(0, Object::dynamic_type());
- CatchClauseNode* catch_clause = new(Z) CatchClauseNode(await_for_pos,
- catch_block,
- handler_types,
- context_var,
- exception_var,
- stack_trace_var,
- exception_var,
- stack_trace_var,
- AllocateTryIndex(),
+ CatchClauseNode* catch_clause = new (Z) CatchClauseNode(
+ await_for_pos, catch_block, handler_types, context_var, exception_var,
+ stack_trace_var, exception_var, stack_trace_var, AllocateTryIndex(),
true); // Needs stack trace.
AstNode* try_catch_node =
- new(Z) TryCatchNode(await_for_pos,
- try_block,
- context_var,
- catch_clause,
- finally_clause,
- try_index,
- finally_clause);
+ new (Z) TryCatchNode(await_for_pos, try_block, context_var, catch_clause,
+ finally_clause, try_index, finally_clause);
ASSERT(current_block_ == await_for_block);
await_for_block->statements->Add(try_catch_node);
@@ -9402,7 +8989,7 @@ AstNode* Parser::ParseForInStatement(TokenPosition forin_pos,
const String* loop_var_name = NULL;
TokenPosition loop_var_pos = TokenPosition::kNoSource;
bool new_loop_var = false;
- AbstractType& loop_var_type = AbstractType::ZoneHandle(Z);
+ AbstractType& loop_var_type = AbstractType::ZoneHandle(Z);
if (LookaheadToken(1) == Token::kIN) {
loop_var_pos = TokenPos();
loop_var_name = ExpectIdentifier("variable name expected");
@@ -9411,9 +8998,9 @@ AstNode* Parser::ParseForInStatement(TokenPosition forin_pos,
// Delay creation of the local variable until we know its actual
// position, which is inside the loop body.
new_loop_var = true;
- loop_var_type = ParseConstFinalVarOrType(
- I->type_checks() ? ClassFinalizer::kCanonicalize :
- ClassFinalizer::kIgnore);
+ loop_var_type = ParseConstFinalVarOrType(I->type_checks()
+ ? ClassFinalizer::kCanonicalize
+ : ClassFinalizer::kIgnore);
loop_var_pos = TokenPos();
loop_var_name = ExpectIdentifier("variable name expected");
}
@@ -9437,25 +9024,22 @@ AstNode* Parser::ParseForInStatement(TokenPosition forin_pos,
// It is better to leave the iterator untyped and postpone the type error
// until the loop variable is assigned to.
const AbstractType& iterator_type = Object::dynamic_type();
- LocalVariable* iterator_var = new(Z) LocalVariable(
- collection_pos,
- collection_pos, Symbols::ForInIter(), iterator_type);
+ LocalVariable* iterator_var = new (Z) LocalVariable(
+ collection_pos, collection_pos, Symbols::ForInIter(), iterator_type);
current_block_->scope->AddVariable(iterator_var);
// Generate initialization of iterator variable.
- ArgumentListNode* no_args = new(Z) ArgumentListNode(collection_pos);
- AstNode* get_iterator = new(Z) InstanceGetterNode(
- collection_pos, collection_expr, Symbols::Iterator());
+ ArgumentListNode* no_args = new (Z) ArgumentListNode(collection_pos);
+ AstNode* get_iterator = new (Z)
+ InstanceGetterNode(collection_pos, collection_expr, Symbols::Iterator());
AstNode* iterator_init =
- new(Z) StoreLocalNode(collection_pos, iterator_var, get_iterator);
+ new (Z) StoreLocalNode(collection_pos, iterator_var, get_iterator);
current_block_->statements->Add(iterator_init);
// Generate while loop condition.
- AstNode* iterator_moveNext = new(Z) InstanceCallNode(
- collection_pos,
- new(Z) LoadLocalNode(collection_pos, iterator_var),
- Symbols::MoveNext(),
- no_args);
+ AstNode* iterator_moveNext = new (Z) InstanceCallNode(
+ collection_pos, new (Z) LoadLocalNode(collection_pos, iterator_var),
+ Symbols::MoveNext(), no_args);
// Parse the for loop body. Ideally, we would use ParseNestedStatement()
// here, but that does not work well because we have to insert an implicit
@@ -9465,9 +9049,9 @@ AstNode* Parser::ParseForInStatement(TokenPosition forin_pos,
current_block_->scope->AddLabel(label);
const TokenPosition loop_var_assignment_pos = TokenPos();
- AstNode* iterator_current = new(Z) InstanceGetterNode(
+ AstNode* iterator_current = new (Z) InstanceGetterNode(
loop_var_assignment_pos,
- new(Z) LoadLocalNode(loop_var_assignment_pos, iterator_var),
+ new (Z) LoadLocalNode(loop_var_assignment_pos, iterator_var),
Symbols::Current());
// Generate assignment of next iterator value to loop variable.
@@ -9475,25 +9059,21 @@ AstNode* Parser::ParseForInStatement(TokenPosition forin_pos,
if (new_loop_var) {
// The for loop variable is new for each iteration.
// Create a variable and add it to the loop body scope.
- LocalVariable* loop_var =
- new(Z) LocalVariable(loop_var_pos,
- loop_var_assignment_pos,
- *loop_var_name,
- loop_var_type);
+ LocalVariable* loop_var = new (Z) LocalVariable(
+ loop_var_pos, loop_var_assignment_pos, *loop_var_name, loop_var_type);
if (loop_var_is_final) {
loop_var->set_is_final();
}
current_block_->scope->AddVariable(loop_var);
- loop_var_assignment = new(Z) StoreLocalNode(
- loop_var_assignment_pos, loop_var, iterator_current);
+ loop_var_assignment = new (Z)
+ StoreLocalNode(loop_var_assignment_pos, loop_var, iterator_current);
} else {
AstNode* loop_var_primary =
ResolveIdent(loop_var_pos, *loop_var_name, false);
ASSERT(!loop_var_primary->IsPrimaryNode());
- loop_var_assignment = CreateAssignmentNode(loop_var_primary,
- iterator_current,
- loop_var_name,
- loop_var_assignment_pos);
+ loop_var_assignment =
+ CreateAssignmentNode(loop_var_primary, iterator_current, loop_var_name,
+ loop_var_assignment_pos);
ASSERT(loop_var_assignment != NULL);
}
current_block_->statements->Add(loop_var_assignment);
@@ -9512,8 +9092,8 @@ AstNode* Parser::ParseForInStatement(TokenPosition forin_pos,
SequenceNode* for_loop_statement = CloseBlock();
- AstNode* while_statement = new(Z) WhileNode(
- forin_pos, label, iterator_moveNext, NULL, for_loop_statement);
+ AstNode* while_statement = new (Z)
+ WhileNode(forin_pos, label, iterator_moveNext, NULL, for_loop_statement);
current_block_->statements->Add(while_statement);
return CloseBlock(); // Implicit block around while loop.
@@ -9546,8 +9126,8 @@ AstNode* Parser::ParseForStatement(String* label_name) {
AstNode* condition = NULL;
SequenceNode* condition_preamble = NULL;
if (CurrentToken() != Token::kSEMICOLON) {
- condition = ParseAwaitableExpr(
- kAllowConst, kConsumeCascades, &condition_preamble);
+ condition =
+ ParseAwaitableExpr(kAllowConst, kConsumeCascades, &condition_preamble);
}
ExpectSemicolon();
AstNode* increment = NULL;
@@ -9556,7 +9136,7 @@ AstNode* Parser::ParseForStatement(String* label_name) {
increment = ParseAwaitableExprList();
}
ExpectToken(Token::kRPAREN);
- const bool parsing_loop_body = true;
+ const bool parsing_loop_body = true;
SequenceNode* body = ParseNestedStatement(parsing_loop_body, label);
// Check whether any of the variables in the initializer part of
@@ -9566,8 +9146,8 @@ AstNode* Parser::ParseForStatement(String* label_name) {
for (int i = 0; i < init_scope->num_variables(); i++) {
if (init_scope->VariableAt(i)->is_captured() &&
(init_scope->VariableAt(i)->owner() == init_scope)) {
- SequenceNode* incr_sequence = new(Z) SequenceNode(incr_pos, NULL);
- incr_sequence->Add(new(Z) CloneContextNode(for_pos));
+ SequenceNode* incr_sequence = new (Z) SequenceNode(incr_pos, NULL);
+ incr_sequence->Add(new (Z) CloneContextNode(for_pos));
if (increment != NULL) {
incr_sequence->Add(increment);
}
@@ -9575,14 +9155,10 @@ AstNode* Parser::ParseForStatement(String* label_name) {
break;
}
}
- AstNode* for_node = new(Z) ForNode(
- for_pos,
- label,
- NodeAsSequenceNode(init_pos, initializer, NULL),
- condition,
- condition_preamble,
- NodeAsSequenceNode(incr_pos, increment, NULL),
- body);
+ AstNode* for_node = new (Z)
+ ForNode(for_pos, label, NodeAsSequenceNode(init_pos, initializer, NULL),
+ condition, condition_preamble,
+ NodeAsSequenceNode(incr_pos, increment, NULL), body);
current_block_->statements->Add(for_node);
return CloseBlock();
}
@@ -9594,13 +9170,11 @@ AstNode* Parser::MakeStaticCall(const String& cls_name,
ArgumentListNode* arguments) {
const Class& cls = Class::Handle(Z, Library::LookupCoreClass(cls_name));
ASSERT(!cls.IsNull());
- const Function& func = Function::ZoneHandle(Z,
- Resolver::ResolveStatic(cls,
- func_name,
- arguments->length(),
- arguments->names()));
+ const Function& func = Function::ZoneHandle(
+ Z, Resolver::ResolveStatic(cls, func_name, arguments->length(),
+ arguments->names()));
ASSERT(!func.IsNull());
- return new(Z) StaticCallNode(arguments->token_pos(), func, arguments);
+ return new (Z) StaticCallNode(arguments->token_pos(), func, arguments);
}
@@ -9622,13 +9196,16 @@ AstNode* Parser::ParseAssertStatement(bool is_const) {
const TokenPosition condition_end = TokenPos();
ExpectToken(Token::kRPAREN);
- ArgumentListNode* arguments = new(Z) ArgumentListNode(condition_pos);
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(condition_pos);
arguments->Add(condition);
- arguments->Add(new(Z) LiteralNode(condition_pos,
+ arguments->Add(new (Z) LiteralNode(
+ condition_pos,
Integer::ZoneHandle(Z, Integer::New(condition_pos.value(), Heap::kOld))));
- arguments->Add(new(Z) LiteralNode(condition_end,
+ arguments->Add(new (Z) LiteralNode(
+ condition_end,
Integer::ZoneHandle(Z, Integer::New(condition_end.value(), Heap::kOld))));
- AstNode* assert_throw = MakeStaticCall(Symbols::AssertionError(),
+ AstNode* assert_throw = MakeStaticCall(
+ Symbols::AssertionError(),
Library::PrivateCoreLibName(is_const ? Symbols::CheckConstAssertion()
: Symbols::CheckAssertion()),
arguments);
@@ -9642,22 +9219,18 @@ void Parser::AddCatchParamsToScope(CatchParamDesc* exception_param,
CatchParamDesc* stack_trace_param,
LocalScope* scope) {
if (exception_param->name != NULL) {
- LocalVariable* var = new(Z) LocalVariable(
- exception_param->token_pos,
- exception_param->token_pos,
- *exception_param->name,
- *exception_param->type);
+ LocalVariable* var = new (Z)
+ LocalVariable(exception_param->token_pos, exception_param->token_pos,
+ *exception_param->name, *exception_param->type);
var->set_is_final();
bool added_to_scope = scope->AddVariable(var);
ASSERT(added_to_scope);
exception_param->var = var;
}
if (stack_trace_param->name != NULL) {
- LocalVariable* var = new(Z) LocalVariable(
- stack_trace_param->token_pos,
- stack_trace_param->token_pos,
- *stack_trace_param->name,
- *stack_trace_param->type);
+ LocalVariable* var = new (Z) LocalVariable(
+ stack_trace_param->token_pos, stack_trace_param->token_pos,
+ *stack_trace_param->name, *stack_trace_param->type);
var->set_is_final();
bool added_to_scope = scope->AddVariable(var);
if (!added_to_scope) {
@@ -9689,17 +9262,15 @@ void Parser::SaveExceptionAndStacktrace(SequenceNode* statements,
ASSERT(saved_exception_var != NULL);
ASSERT(exception_var != NULL);
- statements->Add(new(Z) StoreLocalNode(
- TokenPosition::kNoSource,
- saved_exception_var,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, exception_var)));
+ statements->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, saved_exception_var,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, exception_var)));
ASSERT(saved_stack_trace_var != NULL);
ASSERT(stack_trace_var != NULL);
- statements->Add(new(Z) StoreLocalNode(
- TokenPosition::kNoSource,
- saved_stack_trace_var,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, stack_trace_var)));
+ statements->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, saved_stack_trace_var,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, stack_trace_var)));
}
@@ -9738,24 +9309,20 @@ SequenceNode* Parser::EnsureFinallyClause(
if (scope->function_level() == current_block_->scope->function_level()) {
LocalVariable* saved_try_ctx =
LookupSavedTryContextVar(scope->parent());
- LocalVariable* async_saved_try_ctx = LookupAsyncSavedTryContextVar(T,
- async_temp_scope_, try_stack_->try_index());
- current_block_->statements->Add(
- new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- saved_try_ctx,
- new (Z) LoadLocalNode(TokenPosition::kNoSource,
- async_saved_try_ctx)));
+ LocalVariable* async_saved_try_ctx = LookupAsyncSavedTryContextVar(
+ T, async_temp_scope_, try_stack_->try_index());
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, saved_try_ctx,
+ new (Z)
+ LoadLocalNode(TokenPosition::kNoSource, async_saved_try_ctx)));
}
}
// We need to save the exception variables as in catch clauses, whether
// there is an outer try or not. Note that this is only necessary if the
// finally clause contains an await or yield.
// TODO(hausner): Optimize.
- SaveExceptionAndStacktrace(current_block_->statements,
- exception_var,
- stack_trace_var,
- rethrow_exception_var,
+ SaveExceptionAndStacktrace(current_block_->statements, exception_var,
+ stack_trace_var, rethrow_exception_var,
rethrow_stack_trace_var);
}
@@ -9773,7 +9340,7 @@ SequenceNode* Parser::EnsureFinallyClause(
void Parser::PushTry(Block* try_block) {
intptr_t try_index = AllocateTryIndex();
- try_stack_ = new(Z) TryStack(try_block, try_stack_, try_index);
+ try_stack_ = new (Z) TryStack(try_block, try_stack_, try_index);
}
@@ -9792,7 +9359,7 @@ void Parser::AddNodeForFinallyInlining(AstNode* node) {
const intptr_t func_level = FunctionLevel();
TryStack* iterator = try_stack_;
while ((iterator != NULL) &&
- (iterator->try_block()->scope->function_level() == func_level)) {
+ (iterator->try_block()->scope->function_level() == func_level)) {
// For continue and break node check if the target label is in scope.
if (node->IsJumpNode()) {
SourceLabel* label = node->AsJumpNode()->label();
@@ -9873,8 +9440,8 @@ SequenceNode* Parser::ParseCatchClauses(
CatchParamDesc stack_trace_param;
if (IsSymbol(Symbols::On())) {
ConsumeToken();
- exception_param.type = &AbstractType::ZoneHandle(Z,
- ParseType(ClassFinalizer::kCanonicalize));
+ exception_param.type = &AbstractType::ZoneHandle(
+ Z, ParseType(ClassFinalizer::kCanonicalize));
} else {
exception_param.type = &Object::dynamic_type();
}
@@ -9907,9 +9474,9 @@ SequenceNode* Parser::ParseCatchClauses(
// Generate code to load the exception object (:exception_var) into
// the exception variable specified in this block.
ASSERT(exception_var != NULL);
- current_block_->statements->Add(new(Z) StoreLocalNode(
- catch_pos, exception_param.var, new(Z) LoadLocalNode(
- catch_pos, exception_var)));
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ catch_pos, exception_param.var,
+ new (Z) LoadLocalNode(catch_pos, exception_var)));
}
if (stack_trace_param.var != NULL) {
// A stack trace variable is specified in this block, so generate code
@@ -9917,9 +9484,9 @@ SequenceNode* Parser::ParseCatchClauses(
// trace variable specified in this block.
*needs_stack_trace = true;
ASSERT(stack_trace_var != NULL);
- current_block_->statements->Add(new(Z) StoreLocalNode(
- catch_pos, stack_trace_param.var, new(Z) LoadLocalNode(
- catch_pos, stack_trace_var)));
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ catch_pos, stack_trace_param.var,
+ new (Z) LoadLocalNode(catch_pos, stack_trace_var)));
}
// Add nested block with user-defined code. This block allows
@@ -9929,18 +9496,17 @@ SequenceNode* Parser::ParseCatchClauses(
current_block_->statements->Add(ParseNestedStatement(false, NULL));
catch_blocks.Add(CloseBlock());
- const bool is_bad_type =
- exception_param.type->IsMalformed() ||
- exception_param.type->IsMalbounded();
+ const bool is_bad_type = exception_param.type->IsMalformed() ||
+ exception_param.type->IsMalbounded();
if (exception_param.type->IsDynamicType() || is_bad_type) {
// There is no exception type or else it is malformed or malbounded.
// In the first case, unconditionally execute the catch body. In the
// second case, unconditionally throw.
generic_catch_seen = true;
- type_tests.Add(new(Z) LiteralNode(catch_pos, Bool::True()));
+ type_tests.Add(new (Z) LiteralNode(catch_pos, Bool::True()));
if (is_bad_type) {
// Replace the body with one that throws.
- SequenceNode* block = new(Z) SequenceNode(catch_pos, NULL);
+ SequenceNode* block = new (Z) SequenceNode(catch_pos, NULL);
block->Add(ThrowTypeError(catch_pos, *exception_param.type));
catch_blocks.Last() = block;
}
@@ -9951,20 +9517,19 @@ SequenceNode* Parser::ParseCatchClauses(
} else {
// Has a type specification that is not malformed or malbounded. Now
// form an 'if type check' to guard the catch handler code.
- if (!exception_param.type->IsInstantiated() &&
- (FunctionLevel() > 0)) {
+ if (!exception_param.type->IsInstantiated() && (FunctionLevel() > 0)) {
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
- TypeNode* exception_type = new(Z) TypeNode(
- catch_pos, *exception_param.type);
- AstNode* exception_value = new(Z) LoadLocalNode(
- catch_pos, exception_var);
+ TypeNode* exception_type =
+ new (Z) TypeNode(catch_pos, *exception_param.type);
+ AstNode* exception_value =
+ new (Z) LoadLocalNode(catch_pos, exception_var);
if (!exception_type->type().IsInstantiated()) {
EnsureExpressionTemp();
}
- type_tests.Add(new(Z) ComparisonNode(
- catch_pos, Token::kIS, exception_value, exception_type));
+ type_tests.Add(new (Z) ComparisonNode(catch_pos, Token::kIS,
+ exception_value, exception_type));
// Do not add uninstantiated types (e.g. type parameter T or generic
// type List<T>), since the debugger won't be able to instantiate it
@@ -9994,11 +9559,10 @@ SequenceNode* Parser::ParseCatchClauses(
// An await cannot possibly be executed inbetween the catch entry and here,
// therefore, it is safe to rethrow the stack-based :exception_var instead
// of the captured copy :saved_exception_var.
- current = new(Z) SequenceNode(handler_pos, NULL);
- current->Add(new(Z) ThrowNode(
- handler_pos,
- new(Z) LoadLocalNode(handler_pos, exception_var),
- new(Z) LoadLocalNode(handler_pos, stack_trace_var)));
+ current = new (Z) SequenceNode(handler_pos, NULL);
+ current->Add(new (Z) ThrowNode(
+ handler_pos, new (Z) LoadLocalNode(handler_pos, exception_var),
+ new (Z) LoadLocalNode(handler_pos, stack_trace_var)));
} else if (type_tests.Last()->IsLiteralNode()) {
ASSERT(type_tests.Last()->AsLiteralNode()->literal().raw() ==
Bool::True().raw());
@@ -10015,7 +9579,7 @@ SequenceNode* Parser::ParseCatchClauses(
while (!type_tests.is_empty()) {
AstNode* type_test = type_tests.RemoveLast();
SequenceNode* catch_block = catch_blocks.RemoveLast();
- current_block_->statements->Add(new(Z) IfNode(
+ current_block_->statements->Add(new (Z) IfNode(
type_test->token_pos(), type_test, catch_block, current));
current = CloseBlock();
}
@@ -10023,28 +9587,23 @@ SequenceNode* Parser::ParseCatchClauses(
// the catch clauses.
if (is_async && (current != NULL)) {
ASSERT(try_stack_ != NULL);
- SequenceNode* async_code = new(Z) SequenceNode(handler_pos, NULL);
+ SequenceNode* async_code = new (Z) SequenceNode(handler_pos, NULL);
const TryStack* try_block = try_stack_->outer_try();
if (try_block != NULL) {
LocalScope* scope = try_block->try_block()->scope;
if (scope->function_level() == current_block_->scope->function_level()) {
LocalVariable* saved_try_ctx =
LookupSavedTryContextVar(scope->parent());
- LocalVariable* async_saved_try_ctx = LookupAsyncSavedTryContextVar(T,
- async_temp_scope_, try_block->try_index());
- async_code->Add(
- new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- saved_try_ctx,
- new (Z) LoadLocalNode(TokenPosition::kNoSource,
- async_saved_try_ctx)));
- }
- }
- SaveExceptionAndStacktrace(async_code,
- exception_var,
- stack_trace_var,
- rethrow_exception_var,
- rethrow_stack_trace_var);
+ LocalVariable* async_saved_try_ctx = LookupAsyncSavedTryContextVar(
+ T, async_temp_scope_, try_block->try_index());
+ async_code->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, saved_try_ctx,
+ new (Z)
+ LoadLocalNode(TokenPosition::kNoSource, async_saved_try_ctx)));
+ }
+ }
+ SaveExceptionAndStacktrace(async_code, exception_var, stack_trace_var,
+ rethrow_exception_var, rethrow_stack_trace_var);
// The async_code node sequence contains code to restore the context (if
// an outer try block is present) and code to save the exception and
// stack trace variables.
@@ -10058,23 +9617,19 @@ SequenceNode* Parser::ParseCatchClauses(
void Parser::SetupSavedTryContext(LocalVariable* saved_try_context) {
- const String& async_saved_try_ctx_name = String::ZoneHandle(Z,
- Symbols::NewFormatted(T,
- "%s%d",
- Symbols::AsyncSavedTryCtxVarPrefix().ToCString(),
- last_used_try_index_ - 1));
- LocalVariable* async_saved_try_ctx = new (Z) LocalVariable(
- TokenPosition::kNoSource,
- TokenPosition::kNoSource,
- async_saved_try_ctx_name,
- Object::dynamic_type());
+ const String& async_saved_try_ctx_name = String::ZoneHandle(
+ Z, Symbols::NewFormatted(T, "%s%d",
+ Symbols::AsyncSavedTryCtxVarPrefix().ToCString(),
+ last_used_try_index_ - 1));
+ LocalVariable* async_saved_try_ctx =
+ new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
+ async_saved_try_ctx_name, Object::dynamic_type());
ASSERT(async_temp_scope_ != NULL);
async_temp_scope_->AddVariable(async_saved_try_ctx);
ASSERT(saved_try_context != NULL);
- current_block_->statements->Add(new(Z) StoreLocalNode(
- TokenPosition::kNoSource,
- async_saved_try_ctx,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, saved_try_context)));
+ current_block_->statements->Add(new (Z) StoreLocalNode(
+ TokenPosition::kNoSource, async_saved_try_ctx,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, saved_try_context)));
}
@@ -10105,50 +9660,40 @@ void Parser::SetupExceptionVariables(LocalScope* try_scope,
// Consecutive try statements share the same set of variables.
*context_var = try_scope->LocalLookupVariable(Symbols::SavedTryContextVar());
if (*context_var == NULL) {
- *context_var = new(Z) LocalVariable(
- TokenPos(),
- TokenPos(),
- Symbols::SavedTryContextVar(),
- Object::dynamic_type());
+ *context_var = new (Z)
+ LocalVariable(TokenPos(), TokenPos(), Symbols::SavedTryContextVar(),
+ Object::dynamic_type());
try_scope->AddVariable(*context_var);
}
*exception_var = try_scope->LocalLookupVariable(Symbols::ExceptionVar());
if (*exception_var == NULL) {
- *exception_var = new(Z) LocalVariable(
- TokenPos(),
- TokenPos(),
- Symbols::ExceptionVar(),
- Object::dynamic_type());
+ *exception_var =
+ new (Z) LocalVariable(TokenPos(), TokenPos(), Symbols::ExceptionVar(),
+ Object::dynamic_type());
try_scope->AddVariable(*exception_var);
}
*stack_trace_var = try_scope->LocalLookupVariable(Symbols::StackTraceVar());
if (*stack_trace_var == NULL) {
- *stack_trace_var = new(Z) LocalVariable(
- TokenPos(),
- TokenPos(),
- Symbols::StackTraceVar(),
- Object::dynamic_type());
+ *stack_trace_var =
+ new (Z) LocalVariable(TokenPos(), TokenPos(), Symbols::StackTraceVar(),
+ Object::dynamic_type());
try_scope->AddVariable(*stack_trace_var);
}
if (is_async) {
- *saved_exception_var = try_scope->LocalLookupVariable(
- Symbols::SavedExceptionVar());
+ *saved_exception_var =
+ try_scope->LocalLookupVariable(Symbols::SavedExceptionVar());
if (*saved_exception_var == NULL) {
- *saved_exception_var = new(Z) LocalVariable(
- TokenPos(),
- TokenPos(),
- Symbols::SavedExceptionVar(),
- Object::dynamic_type());
+ *saved_exception_var = new (Z)
+ LocalVariable(TokenPos(), TokenPos(), Symbols::SavedExceptionVar(),
+ Object::dynamic_type());
try_scope->AddVariable(*saved_exception_var);
}
- *saved_stack_trace_var = try_scope->LocalLookupVariable(
- Symbols::SavedStackTraceVar());
+ *saved_stack_trace_var =
+ try_scope->LocalLookupVariable(Symbols::SavedStackTraceVar());
if (*saved_stack_trace_var == NULL) {
- *saved_stack_trace_var = new(Z) LocalVariable(
- TokenPos(),
- TokenPos(),
- Symbols::SavedStackTraceVar(),
- Object::dynamic_type());
+ *saved_stack_trace_var = new (Z)
+ LocalVariable(TokenPos(), TokenPos(), Symbols::SavedStackTraceVar(),
+ Object::dynamic_type());
try_scope->AddVariable(*saved_stack_trace_var);
}
}
@@ -10177,13 +9722,9 @@ AstNode* Parser::ParseTryStatement(String* label_name) {
LocalVariable* stack_trace_var = NULL;
LocalVariable* saved_exception_var = NULL;
LocalVariable* saved_stack_trace_var = NULL;
- SetupExceptionVariables(current_block_->scope,
- is_async,
- &context_var,
- &exception_var,
- &stack_trace_var,
- &saved_exception_var,
- &saved_stack_trace_var);
+ SetupExceptionVariables(current_block_->scope, is_async, &context_var,
+ &exception_var, &stack_trace_var,
+ &saved_exception_var, &saved_stack_trace_var);
ConsumeToken(); // Consume the 'try'.
@@ -10212,20 +9753,17 @@ AstNode* Parser::ParseTryStatement(String* label_name) {
GrowableObjectArray::Handle(Z, GrowableObjectArray::New(Heap::kOld));
bool needs_stack_trace = false;
SequenceNode* catch_handler_list =
- ParseCatchClauses(handler_pos,
- is_async,
- exception_var,
- stack_trace_var,
+ ParseCatchClauses(handler_pos, is_async, exception_var, stack_trace_var,
is_async ? saved_exception_var : exception_var,
is_async ? saved_stack_trace_var : stack_trace_var,
- handler_types,
- &needs_stack_trace);
+ handler_types, &needs_stack_trace);
TryStack* try_statement = PopTry();
const intptr_t try_index = try_statement->try_index();
TryStack* outer_try = try_stack_;
- const intptr_t outer_try_index = (outer_try != NULL) ?
- outer_try->try_index() : CatchClauseNode::kInvalidTryIndex;
+ const intptr_t outer_try_index = (outer_try != NULL)
+ ? outer_try->try_index()
+ : CatchClauseNode::kInvalidTryIndex;
// Finally, parse or generate the 'finally' clause.
// A finally clause is required in async code to restore the saved try context
@@ -10244,28 +9782,20 @@ AstNode* Parser::ParseTryStatement(String* label_name) {
AstNode* node_to_inline = try_statement->GetNodeToInlineFinally(node_index);
while (node_to_inline != NULL) {
finally_clause = EnsureFinallyClause(
- parse,
- is_async,
- exception_var,
- stack_trace_var,
+ parse, is_async, exception_var, stack_trace_var,
is_async ? saved_exception_var : exception_var,
is_async ? saved_stack_trace_var : stack_trace_var);
- InlinedFinallyNode* node = new(Z) InlinedFinallyNode(finally_pos,
- finally_clause,
- context_var,
- outer_try_index);
+ InlinedFinallyNode* node = new (Z) InlinedFinallyNode(
+ finally_pos, finally_clause, context_var, outer_try_index);
AddFinallyClauseToNode(is_async, node_to_inline, node);
node_index += 1;
node_to_inline = try_statement->GetNodeToInlineFinally(node_index);
tokens_iterator_.SetCurrentPosition(finally_pos);
}
- finally_clause = EnsureFinallyClause(
- parse,
- is_async,
- exception_var,
- stack_trace_var,
- is_async ? saved_exception_var : exception_var,
- is_async ? saved_stack_trace_var : stack_trace_var);
+ finally_clause =
+ EnsureFinallyClause(parse, is_async, exception_var, stack_trace_var,
+ is_async ? saved_exception_var : exception_var,
+ is_async ? saved_stack_trace_var : stack_trace_var);
if (finally_clause != NULL) {
// Re-parse to create a duplicate of finally clause to avoid unintended
// sharing of try-indices if the finally-block contains a try-catch.
@@ -10274,34 +9804,28 @@ AstNode* Parser::ParseTryStatement(String* label_name) {
// non-exception case (see EffectGraphVisitor::VisitTryCatchNode)
tokens_iterator_.SetCurrentPosition(finally_pos);
rethrow_clause = EnsureFinallyClause(
- parse,
- is_async,
- exception_var,
- stack_trace_var,
+ parse, is_async, exception_var, stack_trace_var,
is_async ? saved_exception_var : exception_var,
is_async ? saved_stack_trace_var : stack_trace_var);
}
}
- CatchClauseNode* catch_clause = new(Z) CatchClauseNode(
- handler_pos,
- catch_handler_list,
- Array::ZoneHandle(Z, Array::MakeArray(handler_types)),
- context_var,
- exception_var,
- stack_trace_var,
+ CatchClauseNode* catch_clause = new (Z) CatchClauseNode(
+ handler_pos, catch_handler_list,
+ Array::ZoneHandle(Z, Array::MakeArray(handler_types)), context_var,
+ exception_var, stack_trace_var,
is_async ? saved_exception_var : exception_var,
is_async ? saved_stack_trace_var : stack_trace_var,
- (finally_clause != NULL) ?
- AllocateTryIndex() : CatchClauseNode::kInvalidTryIndex,
+ (finally_clause != NULL) ? AllocateTryIndex()
+ : CatchClauseNode::kInvalidTryIndex,
needs_stack_trace);
// Now create the try/catch ast node and return it. If there is a label
// on the try/catch, close the block that's embedding the try statement
// and attach the label to it.
- AstNode* try_catch_node = new(Z) TryCatchNode(
- try_pos, try_block, context_var, catch_clause, finally_clause, try_index,
- rethrow_clause);
+ AstNode* try_catch_node =
+ new (Z) TryCatchNode(try_pos, try_block, context_var, catch_clause,
+ finally_clause, try_index, rethrow_clause);
if (try_label != NULL) {
current_block_->statements->Add(try_catch_node);
@@ -10343,8 +9867,8 @@ AstNode* Parser::ParseJump(String* label_name) {
LocalScope* switch_scope = current_block_->scope->LookupSwitchScope();
if (switch_scope != NULL) {
// We found a switch scope. Enter a forward reference to the label.
- target = new(Z) SourceLabel(
- TokenPos(), target_name, SourceLabel::kForward);
+ target =
+ new (Z) SourceLabel(TokenPos(), target_name, SourceLabel::kForward);
switch_scope->AddLabel(target);
}
}
@@ -10354,7 +9878,7 @@ AstNode* Parser::ParseJump(String* label_name) {
} else if (FLAG_enable_debug_break && (CurrentToken() == Token::kSTRING)) {
const char* message = strdup(CurrentLiteral()->ToCString());
ConsumeToken();
- return new(Z) StopNode(jump_pos, message);
+ return new (Z) StopNode(jump_pos, message);
} else {
target = current_block_->scope->LookupInnermostLabel(jump_kind);
if (target == NULL) {
@@ -10377,7 +9901,7 @@ AstNode* Parser::ParseJump(String* label_name) {
ReportError(jump_pos, "'%s' target must be in same function context",
Token::Str(jump_kind));
}
- return new(Z) JumpNode(jump_pos, jump_kind, target);
+ return new (Z) JumpNode(jump_pos, jump_kind, target);
}
@@ -10398,7 +9922,7 @@ AstNode* Parser::ParseYieldStatement() {
AstNode* expr = ParseAwaitableExpr(kAllowConst, kConsumeCascades, NULL);
- LetNode* yield = new(Z) LetNode(yield_pos);
+ LetNode* yield = new (Z) LetNode(yield_pos);
if (innermost_function().IsSyncGenerator() ||
innermost_function().IsSyncGenClosure()) {
// Yield statement in sync* function.
@@ -10408,31 +9932,25 @@ AstNode* Parser::ParseYieldStatement() {
ASSERT(iterator_param != NULL);
// Generate :iterator.current = expr;
AstNode* iterator =
- new(Z) LoadLocalNode(TokenPosition::kNoSource, iterator_param);
- AstNode* store_current =
- new(Z) InstanceSetterNode(TokenPosition::kNoSource,
- iterator,
- Library::PrivateCoreLibName(
- Symbols::_current()),
- expr);
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, iterator_param);
+ AstNode* store_current = new (Z) InstanceSetterNode(
+ TokenPosition::kNoSource, iterator,
+ Library::PrivateCoreLibName(Symbols::_current()), expr);
yield->AddNode(store_current);
if (is_yield_each) {
// Generate :iterator.isYieldEach = true;
- AstNode* set_is_yield_each =
- new(Z) InstanceSetterNode(TokenPosition::kNoSource,
- iterator,
- String::ZoneHandle(Symbols::IsYieldEach().raw()),
- new(Z) LiteralNode(TokenPos(), Bool::True()));
+ AstNode* set_is_yield_each = new (Z)
+ InstanceSetterNode(TokenPosition::kNoSource, iterator,
+ String::ZoneHandle(Symbols::IsYieldEach().raw()),
+ new (Z) LiteralNode(TokenPos(), Bool::True()));
yield->AddNode(set_is_yield_each);
}
- AwaitMarkerNode* await_marker =
- new(Z) AwaitMarkerNode(async_temp_scope_,
- current_block_->scope,
- TokenPosition::kNoSource);
+ AwaitMarkerNode* await_marker = new (Z) AwaitMarkerNode(
+ async_temp_scope_, current_block_->scope, TokenPosition::kNoSource);
yield->AddNode(await_marker);
// Return true to indicate that a value has been generated.
- ReturnNode* return_true = new(Z) ReturnNode(yield_pos,
- new(Z) LiteralNode(TokenPos(), Bool::True()));
+ ReturnNode* return_true = new (Z)
+ ReturnNode(yield_pos, new (Z) LiteralNode(TokenPos(), Bool::True()));
return_true->set_return_type(ReturnNode::kContinuationTarget);
yield->AddNode(return_true);
@@ -10443,20 +9961,16 @@ AstNode* Parser::ParseYieldStatement() {
LocalVariable* async_saved_try_ctx;
LocalVariable* outer_saved_try_ctx;
LocalVariable* outer_async_saved_try_ctx;
- CheckAsyncOpInTryBlock(&saved_try_ctx,
- &async_saved_try_ctx,
- &outer_saved_try_ctx,
- &outer_async_saved_try_ctx);
+ CheckAsyncOpInTryBlock(&saved_try_ctx, &async_saved_try_ctx,
+ &outer_saved_try_ctx, &outer_async_saved_try_ctx);
if (saved_try_ctx != NULL) {
yield->AddNode(new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- saved_try_ctx,
- new (Z) LoadLocalNode(TokenPosition::kNoSource,
- async_saved_try_ctx)));
+ TokenPosition::kNoSource, saved_try_ctx,
+ new (Z)
+ LoadLocalNode(TokenPosition::kNoSource, async_saved_try_ctx)));
if (outer_saved_try_ctx != NULL) {
yield->AddNode(new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- outer_saved_try_ctx,
+ TokenPosition::kNoSource, outer_saved_try_ctx,
new (Z) LoadLocalNode(TokenPosition::kNoSource,
outer_async_saved_try_ctx)));
}
@@ -10471,13 +9985,12 @@ AstNode* Parser::ParseYieldStatement() {
LocalVariable* controller_var = LookupLocalScope(Symbols::Controller());
ASSERT(controller_var != NULL);
// :controller.add[Stream](expr);
- ArgumentListNode* add_args = new(Z) ArgumentListNode(yield_pos);
+ ArgumentListNode* add_args = new (Z) ArgumentListNode(yield_pos);
add_args->Add(expr);
- AstNode* add_call =
- new(Z) InstanceCallNode(yield_pos,
- new(Z) LoadLocalNode(TokenPosition::kNoSource, controller_var),
- is_yield_each ? Symbols::AddStream() : Symbols::add(),
- add_args);
+ AstNode* add_call = new (Z) InstanceCallNode(
+ yield_pos,
+ new (Z) LoadLocalNode(TokenPosition::kNoSource, controller_var),
+ is_yield_each ? Symbols::AddStream() : Symbols::add(), add_args);
// if (:controller.add[Stream](expr)) {
// return;
@@ -10487,20 +10000,18 @@ AstNode* Parser::ParseYieldStatement() {
// restore saved_try_context
SequenceNode* true_branch =
- new(Z) SequenceNode(TokenPosition::kNoSource, NULL);
- AstNode* return_from_generator = new(Z) ReturnNode(yield_pos);
+ new (Z) SequenceNode(TokenPosition::kNoSource, NULL);
+ AstNode* return_from_generator = new (Z) ReturnNode(yield_pos);
true_branch->Add(return_from_generator);
AddNodeForFinallyInlining(return_from_generator);
AstNode* if_is_cancelled =
- new(Z) IfNode(TokenPosition::kNoSource, add_call, true_branch, NULL);
+ new (Z) IfNode(TokenPosition::kNoSource, add_call, true_branch, NULL);
yield->AddNode(if_is_cancelled);
- AwaitMarkerNode* await_marker =
- new(Z) AwaitMarkerNode(async_temp_scope_,
- current_block_->scope,
- TokenPosition::kNoSource);
+ AwaitMarkerNode* await_marker = new (Z) AwaitMarkerNode(
+ async_temp_scope_, current_block_->scope, TokenPosition::kNoSource);
yield->AddNode(await_marker);
- ReturnNode* continuation_return = new(Z) ReturnNode(yield_pos);
+ ReturnNode* continuation_return = new (Z) ReturnNode(yield_pos);
continuation_return->set_return_type(ReturnNode::kContinuationTarget);
yield->AddNode(continuation_return);
@@ -10511,20 +10022,16 @@ AstNode* Parser::ParseYieldStatement() {
LocalVariable* async_saved_try_ctx;
LocalVariable* outer_saved_try_ctx;
LocalVariable* outer_async_saved_try_ctx;
- CheckAsyncOpInTryBlock(&saved_try_ctx,
- &async_saved_try_ctx,
- &outer_saved_try_ctx,
- &outer_async_saved_try_ctx);
+ CheckAsyncOpInTryBlock(&saved_try_ctx, &async_saved_try_ctx,
+ &outer_saved_try_ctx, &outer_async_saved_try_ctx);
if (saved_try_ctx != NULL) {
yield->AddNode(new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- saved_try_ctx,
- new (Z) LoadLocalNode(TokenPosition::kNoSource,
- async_saved_try_ctx)));
+ TokenPosition::kNoSource, saved_try_ctx,
+ new (Z)
+ LoadLocalNode(TokenPosition::kNoSource, async_saved_try_ctx)));
if (outer_saved_try_ctx != NULL) {
yield->AddNode(new (Z) StoreLocalNode(
- TokenPosition::kNoSource,
- outer_saved_try_ctx,
+ TokenPosition::kNoSource, outer_saved_try_ctx,
new (Z) LoadLocalNode(TokenPosition::kNoSource,
outer_async_saved_try_ctx)));
}
@@ -10577,7 +10084,7 @@ AstNode* Parser::ParseStatement() {
ReportError(expr_pos,
"return of a value is not allowed in constructors");
} else if (current_function().IsGeneratorClosure() &&
- (function_level == 0)) {
+ (function_level == 0)) {
ReportError(expr_pos, "generator functions may not return a value");
}
AstNode* expr = ParseAwaitableExpr(kAllowConst, kConsumeCascades, NULL);
@@ -10601,46 +10108,37 @@ AstNode* Parser::ParseStatement() {
if (!result_type_args.IsNull() && (result_type_args.Length() == 1)) {
const AbstractType& result_type_arg =
AbstractType::ZoneHandle(Z, result_type_args.TypeAt(0));
- LetNode* checked_expr = new(Z) LetNode(expr_pos);
+ LetNode* checked_expr = new (Z) LetNode(expr_pos);
LocalVariable* temp = checked_expr->AddInitializer(expr);
temp->set_is_final();
const AbstractType& future_type =
AbstractType::ZoneHandle(Z, future_class.RareType());
- AstNode* is_future = new(Z) LoadLocalNode(expr_pos, temp);
- is_future = new(Z) ComparisonNode(expr_pos,
- Token::kIS,
- is_future,
- new(Z) TypeNode(expr_pos,
- future_type));
- AstNode* as_future_t = new(Z) LoadLocalNode(expr_pos, temp);
- as_future_t = new(Z) AssignableNode(expr_pos,
- as_future_t,
- result_type,
- Symbols::FunctionResult());
- AstNode* as_t = new(Z) LoadLocalNode(expr_pos, temp);
- as_t = new(Z) AssignableNode(expr_pos,
- as_t,
- result_type_arg,
- Symbols::FunctionResult());
- checked_expr->AddNode(new(Z) ConditionalExprNode(expr_pos,
- is_future,
- as_future_t,
- as_t));
+ AstNode* is_future = new (Z) LoadLocalNode(expr_pos, temp);
+ is_future =
+ new (Z) ComparisonNode(expr_pos, Token::kIS, is_future,
+ new (Z) TypeNode(expr_pos, future_type));
+ AstNode* as_future_t = new (Z) LoadLocalNode(expr_pos, temp);
+ as_future_t = new (Z) AssignableNode(
+ expr_pos, as_future_t, result_type, Symbols::FunctionResult());
+ AstNode* as_t = new (Z) LoadLocalNode(expr_pos, temp);
+ as_t = new (Z) AssignableNode(expr_pos, as_t, result_type_arg,
+ Symbols::FunctionResult());
+ checked_expr->AddNode(new (Z) ConditionalExprNode(
+ expr_pos, is_future, as_future_t, as_t));
expr = checked_expr;
}
}
}
- statement = new(Z) ReturnNode(statement_pos, expr);
+ statement = new (Z) ReturnNode(statement_pos, expr);
} else {
- if (current_function().IsSyncGenClosure() &&
- (FunctionLevel() == 0)) {
+ if (current_function().IsSyncGenClosure() && (FunctionLevel() == 0)) {
// In a synchronous generator, return without an expression
// returns false, signaling that the iterator terminates and
// did not yield a value.
- statement = new(Z) ReturnNode(statement_pos,
- new(Z) LiteralNode(return_pos, Bool::False()));
+ statement = new (Z) ReturnNode(
+ statement_pos, new (Z) LiteralNode(return_pos, Bool::False()));
} else {
- statement = new(Z) ReturnNode(statement_pos);
+ statement = new (Z) ReturnNode(statement_pos);
}
}
AddNodeForFinallyInlining(statement);
@@ -10722,10 +10220,9 @@ AstNode* Parser::ParseStatement() {
ASSERT(excp_var != NULL);
ASSERT(trace_var != NULL);
- statement = new(Z) ThrowNode(
- statement_pos,
- new(Z) LoadLocalNode(statement_pos, excp_var),
- new(Z) LoadLocalNode(statement_pos, trace_var));
+ statement = new (Z)
+ ThrowNode(statement_pos, new (Z) LoadLocalNode(statement_pos, excp_var),
+ new (Z) LoadLocalNode(statement_pos, trace_var));
} else {
statement = ParseAwaitableExpr(kAllowConst, kConsumeCascades, NULL);
ExpectSemicolon();
@@ -10741,8 +10238,10 @@ void Parser::ReportError(const Error& error) {
void Parser::ReportErrors(const Error& prev_error,
- const Script& script, TokenPosition token_pos,
- const char* format, ...) {
+ const Script& script,
+ TokenPosition token_pos,
+ const char* format,
+ ...) {
va_list args;
va_start(args, format);
Report::LongJumpV(prev_error, script, token_pos, format, args);
@@ -10752,11 +10251,12 @@ void Parser::ReportErrors(const Error& prev_error,
void Parser::ReportError(TokenPosition token_pos,
- const char* format, ...) const {
+ const char* format,
+ ...) const {
va_list args;
va_start(args, format);
- Report::MessageV(Report::kError,
- script_, token_pos, Report::AtLocation, format, args);
+ Report::MessageV(Report::kError, script_, token_pos, Report::AtLocation,
+ format, args);
va_end(args);
UNREACHABLE();
}
@@ -10765,9 +10265,8 @@ void Parser::ReportError(TokenPosition token_pos,
void Parser::ReportErrorBefore(const char* format, ...) {
va_list args;
va_start(args, format);
- Report::MessageV(Report::kError,
- script_, PrevTokenPos(), Report::AfterLocation,
- format, args);
+ Report::MessageV(Report::kError, script_, PrevTokenPos(),
+ Report::AfterLocation, format, args);
va_end(args);
UNREACHABLE();
}
@@ -10776,19 +10275,20 @@ void Parser::ReportErrorBefore(const char* format, ...) {
void Parser::ReportError(const char* format, ...) const {
va_list args;
va_start(args, format);
- Report::MessageV(Report::kError,
- script_, TokenPos(), Report::AtLocation, format, args);
+ Report::MessageV(Report::kError, script_, TokenPos(), Report::AtLocation,
+ format, args);
va_end(args);
UNREACHABLE();
}
void Parser::ReportWarning(TokenPosition token_pos,
- const char* format, ...) const {
+ const char* format,
+ ...) const {
va_list args;
va_start(args, format);
- Report::MessageV(Report::kWarning,
- script_, token_pos, Report::AtLocation, format, args);
+ Report::MessageV(Report::kWarning, script_, token_pos, Report::AtLocation,
+ format, args);
va_end(args);
}
@@ -10796,8 +10296,8 @@ void Parser::ReportWarning(TokenPosition token_pos,
void Parser::ReportWarning(const char* format, ...) const {
va_list args;
va_start(args, format);
- Report::MessageV(Report::kWarning,
- script_, TokenPos(), Report::AtLocation, format, args);
+ Report::MessageV(Report::kWarning, script_, TokenPos(), Report::AtLocation,
+ format, args);
va_end(args);
}
@@ -10830,9 +10330,9 @@ void Parser::ExpectSemicolon() {
void Parser::UnexpectedToken() {
- ReportError("unexpected token '%s'",
- CurrentToken() == Token::kIDENT ?
- CurrentLiteral()->ToCString() : Token::Str(CurrentToken()));
+ ReportError("unexpected token '%s'", CurrentToken() == Token::kIDENT
+ ? CurrentLiteral()->ToCString()
+ : Token::Str(CurrentToken()));
}
@@ -10862,13 +10362,13 @@ String* Parser::ExpectIdentifier(const char* msg) {
bool Parser::IsAwaitKeyword() {
return (FLAG_await_is_keyword || await_is_keyword_) &&
- IsSymbol(Symbols::Await());
+ IsSymbol(Symbols::Await());
}
bool Parser::IsYieldKeyword() {
return (FLAG_await_is_keyword || await_is_keyword_) &&
- IsSymbol(Symbols::YieldKw());
+ IsSymbol(Symbols::YieldKw());
}
@@ -10878,8 +10378,7 @@ static bool IsIncrementOperator(Token::Kind token) {
static bool IsPrefixOperator(Token::Kind token) {
- return (token == Token::kSUB) ||
- (token == Token::kNOT) ||
+ return (token == Token::kSUB) || (token == Token::kNOT) ||
(token == Token::kBIT_NOT);
}
@@ -10902,28 +10401,28 @@ SequenceNode* Parser::NodeAsSequenceNode(TokenPosition sequence_pos,
AstNode* Parser::ThrowTypeError(TokenPosition type_pos,
const AbstractType& type,
LibraryPrefix* prefix) {
- ArgumentListNode* arguments = new(Z) ArgumentListNode(type_pos);
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(type_pos);
String& method_name = String::Handle(Z);
if (prefix == NULL) {
method_name = Library::PrivateCoreLibName(Symbols::ThrowNew()).raw();
} else {
- arguments->Add(new(Z) LiteralNode(type_pos, *prefix));
- method_name = Library::PrivateCoreLibName(
- Symbols::ThrowNewIfNotLoaded()).raw();
+ arguments->Add(new (Z) LiteralNode(type_pos, *prefix));
+ method_name =
+ Library::PrivateCoreLibName(Symbols::ThrowNewIfNotLoaded()).raw();
}
// Location argument.
- arguments->Add(new(Z) LiteralNode(
- type_pos, Integer::ZoneHandle(Z, Integer::New(type_pos.value(),
- Heap::kOld))));
+ arguments->Add(new (Z) LiteralNode(
+ type_pos,
+ Integer::ZoneHandle(Z, Integer::New(type_pos.value(), Heap::kOld))));
// Src value argument.
- arguments->Add(new(Z) LiteralNode(type_pos, Object::null_instance()));
+ arguments->Add(new (Z) LiteralNode(type_pos, Object::null_instance()));
// Dst type argument.
- arguments->Add(new(Z) LiteralNode(type_pos, type));
+ arguments->Add(new (Z) LiteralNode(type_pos, type));
// Dst name argument.
- arguments->Add(new(Z) LiteralNode(type_pos, Symbols::Empty()));
+ arguments->Add(new (Z) LiteralNode(type_pos, Symbols::Empty()));
// Bound error msg argument.
- arguments->Add(new(Z) LiteralNode(type_pos, Object::null_instance()));
+ arguments->Add(new (Z) LiteralNode(type_pos, Object::null_instance()));
return MakeStaticCall(Symbols::TypeError(), method_name, arguments);
}
@@ -10937,31 +10436,31 @@ AstNode* Parser::ThrowNoSuchMethodError(TokenPosition call_pos,
InvocationMirror::Type im_type,
const Function* func,
const LibraryPrefix* prefix) {
- ArgumentListNode* arguments = new(Z) ArgumentListNode(call_pos);
+ ArgumentListNode* arguments = new (Z) ArgumentListNode(call_pos);
String& method_name = String::Handle(Z);
if (prefix == NULL) {
method_name = Library::PrivateCoreLibName(Symbols::ThrowNew()).raw();
} else {
- arguments->Add(new(Z) LiteralNode(call_pos, *prefix));
- method_name = Library::PrivateCoreLibName(
- Symbols::ThrowNewIfNotLoaded()).raw();
+ arguments->Add(new (Z) LiteralNode(call_pos, *prefix));
+ method_name =
+ Library::PrivateCoreLibName(Symbols::ThrowNewIfNotLoaded()).raw();
}
// Object receiver.
// If the function is external and dynamic, pass the actual receiver,
// otherwise, pass a class literal of the unresolved method's owner.
- if ((func != NULL) && !func->IsNull() &&
- func->is_external() && !func->is_static()) {
+ if ((func != NULL) && !func->IsNull() && func->is_external() &&
+ !func->is_static()) {
arguments->Add(LoadReceiver(func->token_pos()));
} else {
AbstractType& type = AbstractType::ZoneHandle(Z);
type ^= Type::New(cls, TypeArguments::Handle(Z), call_pos, Heap::kOld);
- type ^= ClassFinalizer::FinalizeType(
- current_class(), type, ClassFinalizer::kCanonicalize);
- arguments->Add(new(Z) LiteralNode(call_pos, type));
+ type ^= ClassFinalizer::FinalizeType(current_class(), type,
+ ClassFinalizer::kCanonicalize);
+ arguments->Add(new (Z) LiteralNode(call_pos, type));
}
// String memberName.
- arguments->Add(new(Z) LiteralNode(
+ arguments->Add(new (Z) LiteralNode(
call_pos, String::ZoneHandle(Z, Symbols::New(T, function_name))));
// Smi invocation_type.
if (cls.IsTopLevel()) {
@@ -10969,23 +10468,23 @@ AstNode* Parser::ThrowNoSuchMethodError(TokenPosition call_pos,
im_call == InvocationMirror::kTopLevel);
im_call = InvocationMirror::kTopLevel;
}
- arguments->Add(new(Z) LiteralNode(call_pos, Smi::ZoneHandle(Z,
- Smi::New(InvocationMirror::EncodeType(im_call, im_type)))));
+ arguments->Add(new (Z) LiteralNode(
+ call_pos, Smi::ZoneHandle(Z, Smi::New(InvocationMirror::EncodeType(
+ im_call, im_type)))));
// List arguments.
if (function_arguments == NULL) {
- arguments->Add(new(Z) LiteralNode(call_pos, Object::null_array()));
+ arguments->Add(new (Z) LiteralNode(call_pos, Object::null_array()));
} else {
- ArrayNode* array = new(Z) ArrayNode(
- call_pos,
- Type::ZoneHandle(Z, Type::ArrayType()),
- function_arguments->nodes());
+ ArrayNode* array =
+ new (Z) ArrayNode(call_pos, Type::ZoneHandle(Z, Type::ArrayType()),
+ function_arguments->nodes());
arguments->Add(array);
}
// List argumentNames.
if (function_arguments == NULL) {
- arguments->Add(new(Z) LiteralNode(call_pos, Object::null_array()));
+ arguments->Add(new (Z) LiteralNode(call_pos, Object::null_array()));
} else {
- arguments->Add(new(Z) LiteralNode(call_pos, function_arguments->names()));
+ arguments->Add(new (Z) LiteralNode(call_pos, function_arguments->names()));
}
// List existingArgumentNames.
@@ -11017,7 +10516,7 @@ AstNode* Parser::ThrowNoSuchMethodError(TokenPosition call_pos,
array = Array::New(1, Heap::kOld);
array.SetAt(0, String::Handle(Z, function.UserVisibleFormalParameters()));
}
- arguments->Add(new(Z) LiteralNode(call_pos, array));
+ arguments->Add(new (Z) LiteralNode(call_pos, array));
return MakeStaticCall(Symbols::NoSuchMethodError(), method_name, arguments);
}
@@ -11047,13 +10546,13 @@ AstNode* Parser::ParseBinaryExpr(int min_preced) {
op_kind = Token::kISNOT;
}
const TokenPosition type_pos = TokenPos();
- const AbstractType& type = AbstractType::ZoneHandle(Z,
- ParseType(ClassFinalizer::kCanonicalize));
+ const AbstractType& type = AbstractType::ZoneHandle(
+ Z, ParseType(ClassFinalizer::kCanonicalize));
if (!type.IsInstantiated() && (FunctionLevel() > 0)) {
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
- right_operand = new(Z) TypeNode(type_pos, type);
+ right_operand = new (Z) TypeNode(type_pos, type);
// In production mode, the type may be malformed.
// In checked mode, the type may be malformed or malbounded.
if (type.IsMalformedOrMalbounded()) {
@@ -11061,23 +10560,23 @@ AstNode* Parser::ParseBinaryExpr(int min_preced) {
// a type cast even if the tested value is null.
// We need to evaluate the left operand for potential
// side effects.
- LetNode* let = new(Z) LetNode(left_operand->token_pos());
+ LetNode* let = new (Z) LetNode(left_operand->token_pos());
let->AddNode(left_operand);
let->AddNode(ThrowTypeError(type_pos, type));
left_operand = let;
break; // Type checks and casts can't be chained.
}
}
- if (Token::IsRelationalOperator(op_kind)
- || Token::IsTypeTestOperator(op_kind)
- || Token::IsTypeCastOperator(op_kind)
- || Token::IsEqualityOperator(op_kind)) {
- left_operand = new(Z) ComparisonNode(
- op_pos, op_kind, left_operand, right_operand);
+ if (Token::IsRelationalOperator(op_kind) ||
+ Token::IsTypeTestOperator(op_kind) ||
+ Token::IsTypeCastOperator(op_kind) ||
+ Token::IsEqualityOperator(op_kind)) {
+ left_operand = new (Z)
+ ComparisonNode(op_pos, op_kind, left_operand, right_operand);
break; // Equality and relational operators cannot be chained.
} else {
- left_operand = OptimizeBinaryOpNode(
- op_pos, op_kind, left_operand, right_operand);
+ left_operand =
+ OptimizeBinaryOpNode(op_pos, op_kind, left_operand, right_operand);
}
}
current_preced--;
@@ -11089,21 +10588,21 @@ AstNode* Parser::ParseBinaryExpr(int min_preced) {
AstNode* Parser::ParseAwaitableExprList() {
TRACE_PARSER("ParseAwaitableExprList");
SequenceNode* preamble = NULL;
- AstNode* expressions = ParseAwaitableExpr(
- kAllowConst, kConsumeCascades, &preamble);
+ AstNode* expressions =
+ ParseAwaitableExpr(kAllowConst, kConsumeCascades, &preamble);
if (preamble != NULL) {
preamble->Add(expressions);
expressions = preamble;
}
if (CurrentToken() == Token::kCOMMA) {
// Collect comma-separated expressions in a non scope owning sequence node.
- SequenceNode* list = new(Z) SequenceNode(TokenPos(), NULL);
+ SequenceNode* list = new (Z) SequenceNode(TokenPos(), NULL);
list->Add(expressions);
while (CurrentToken() == Token::kCOMMA) {
ConsumeToken();
preamble = NULL;
- AstNode* expr = ParseAwaitableExpr(
- kAllowConst, kConsumeCascades, &preamble);
+ AstNode* expr =
+ ParseAwaitableExpr(kAllowConst, kConsumeCascades, &preamble);
if (preamble != NULL) {
list->Add(preamble);
}
@@ -11125,10 +10624,8 @@ LocalVariable* Parser::CreateTempConstVariable(TokenPosition token_pos,
const char* s) {
char name[64];
OS::SNPrint(name, 64, ":%s%" Pd "", s, token_pos.value());
- LocalVariable* temp = new(Z) LocalVariable(
- token_pos,
- token_pos,
- String::ZoneHandle(Z, Symbols::New(T, name)),
+ LocalVariable* temp = new (Z) LocalVariable(
+ token_pos, token_pos, String::ZoneHandle(Z, Symbols::New(T, name)),
Object::dynamic_type());
temp->set_is_final();
current_block_->scope->AddVariable(temp);
@@ -11148,9 +10645,9 @@ AstNode* Parser::OptimizeBinaryOpNode(TokenPosition op_pos,
double left_double = Double::Cast(lhs_literal->literal()).value();
double right_double = Double::Cast(rhs_literal->literal()).value();
if (binary_op == Token::kDIV) {
- const Double& dbl_obj = Double::ZoneHandle(Z,
- Double::NewCanonical((left_double / right_double)));
- return new(Z) LiteralNode(op_pos, dbl_obj);
+ const Double& dbl_obj = Double::ZoneHandle(
+ Z, Double::NewCanonical((left_double / right_double)));
+ return new (Z) LiteralNode(op_pos, dbl_obj);
}
}
}
@@ -11166,33 +10663,28 @@ AstNode* Parser::OptimizeBinaryOpNode(TokenPosition op_pos,
if (binary_op == Token::kIFNULL) {
// Handle a ?? b.
if ((lhs->EvalConstExpr() != NULL) && (rhs->EvalConstExpr() != NULL)) {
- Instance& expr_value = Instance::ZoneHandle(Z,
- EvaluateConstExpr(lhs->token_pos(), lhs).raw());
+ Instance& expr_value = Instance::ZoneHandle(
+ Z, EvaluateConstExpr(lhs->token_pos(), lhs).raw());
if (expr_value.IsNull()) {
expr_value = EvaluateConstExpr(rhs->token_pos(), rhs).raw();
}
- return new(Z) LiteralNode(op_pos, expr_value);
+ return new (Z) LiteralNode(op_pos, expr_value);
}
- LetNode* result = new(Z) LetNode(op_pos);
+ LetNode* result = new (Z) LetNode(op_pos);
LocalVariable* left_temp = result->AddInitializer(lhs);
left_temp->set_is_final();
const TokenPosition no_pos = TokenPosition::kNoSource;
LiteralNode* null_operand =
- new(Z) LiteralNode(no_pos, Object::null_instance());
- LoadLocalNode* load_left_temp = new(Z) LoadLocalNode(no_pos, left_temp);
- ComparisonNode* null_compare =
- new(Z) ComparisonNode(no_pos,
- Token::kNE_STRICT,
- load_left_temp,
- null_operand);
- result->AddNode(new(Z) ConditionalExprNode(op_pos,
- null_compare,
- load_left_temp,
- rhs));
+ new (Z) LiteralNode(no_pos, Object::null_instance());
+ LoadLocalNode* load_left_temp = new (Z) LoadLocalNode(no_pos, left_temp);
+ ComparisonNode* null_compare = new (Z)
+ ComparisonNode(no_pos, Token::kNE_STRICT, load_left_temp, null_operand);
+ result->AddNode(
+ new (Z) ConditionalExprNode(op_pos, null_compare, load_left_temp, rhs));
return result;
}
- return new(Z) BinaryOpNode(op_pos, binary_op, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, binary_op, lhs, rhs);
}
@@ -11205,29 +10697,29 @@ AstNode* Parser::ExpandAssignableOp(TokenPosition op_pos,
case Token::kASSIGN:
return rhs;
case Token::kASSIGN_ADD:
- return new(Z) BinaryOpNode(op_pos, Token::kADD, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kADD, lhs, rhs);
case Token::kASSIGN_SUB:
- return new(Z) BinaryOpNode(op_pos, Token::kSUB, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kSUB, lhs, rhs);
case Token::kASSIGN_MUL:
- return new(Z) BinaryOpNode(op_pos, Token::kMUL, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kMUL, lhs, rhs);
case Token::kASSIGN_TRUNCDIV:
- return new(Z) BinaryOpNode(op_pos, Token::kTRUNCDIV, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kTRUNCDIV, lhs, rhs);
case Token::kASSIGN_DIV:
- return new(Z) BinaryOpNode(op_pos, Token::kDIV, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kDIV, lhs, rhs);
case Token::kASSIGN_MOD:
- return new(Z) BinaryOpNode(op_pos, Token::kMOD, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kMOD, lhs, rhs);
case Token::kASSIGN_SHR:
- return new(Z) BinaryOpNode(op_pos, Token::kSHR, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kSHR, lhs, rhs);
case Token::kASSIGN_SHL:
- return new(Z) BinaryOpNode(op_pos, Token::kSHL, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kSHL, lhs, rhs);
case Token::kASSIGN_OR:
- return new(Z) BinaryOpNode(op_pos, Token::kBIT_OR, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kBIT_OR, lhs, rhs);
case Token::kASSIGN_AND:
- return new(Z) BinaryOpNode(op_pos, Token::kBIT_AND, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kBIT_AND, lhs, rhs);
case Token::kASSIGN_XOR:
- return new(Z) BinaryOpNode(op_pos, Token::kBIT_XOR, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kBIT_XOR, lhs, rhs);
case Token::kASSIGN_COND:
- return new(Z) BinaryOpNode(op_pos, Token::kIFNULL, lhs, rhs);
+ return new (Z) BinaryOpNode(op_pos, Token::kIFNULL, lhs, rhs);
default:
ReportError(op_pos,
"internal error: ExpandAssignableOp '%s' unimplemented",
@@ -11247,31 +10739,28 @@ LiteralNode* Parser::FoldConstExpr(TokenPosition expr_pos, AstNode* expr) {
if (expr->EvalConstExpr() == NULL) {
ReportError(expr_pos, "expression is not a valid compile-time constant");
}
- return new(Z) LiteralNode(expr_pos, EvaluateConstExpr(expr_pos, expr));
+ return new (Z) LiteralNode(expr_pos, EvaluateConstExpr(expr_pos, expr));
}
LetNode* Parser::PrepareCompoundAssignmentNodes(AstNode** expr) {
AstNode* node = *expr;
TokenPosition token_pos = node->token_pos();
- LetNode* result = new(Z) LetNode(token_pos);
+ LetNode* result = new (Z) LetNode(token_pos);
if (node->IsLoadIndexedNode()) {
LoadIndexedNode* load_indexed = node->AsLoadIndexedNode();
AstNode* array = load_indexed->array();
AstNode* index = load_indexed->index_expr();
if (!IsSimpleLocalOrLiteralNode(load_indexed->array())) {
LocalVariable* t0 = result->AddInitializer(load_indexed->array());
- array = new(Z) LoadLocalNode(token_pos, t0);
+ array = new (Z) LoadLocalNode(token_pos, t0);
}
if (!IsSimpleLocalOrLiteralNode(load_indexed->index_expr())) {
- LocalVariable* t1 = result->AddInitializer(
- load_indexed->index_expr());
- index = new(Z) LoadLocalNode(token_pos, t1);
- }
- *expr = new(Z) LoadIndexedNode(token_pos,
- array,
- index,
- load_indexed->super_class());
+ LocalVariable* t1 = result->AddInitializer(load_indexed->index_expr());
+ index = new (Z) LoadLocalNode(token_pos, t1);
+ }
+ *expr = new (Z)
+ LoadIndexedNode(token_pos, array, index, load_indexed->super_class());
return result;
}
if (node->IsInstanceGetterNode()) {
@@ -11279,9 +10768,9 @@ LetNode* Parser::PrepareCompoundAssignmentNodes(AstNode** expr) {
AstNode* receiver = getter->receiver();
if (!IsSimpleLocalOrLiteralNode(getter->receiver())) {
LocalVariable* t0 = result->AddInitializer(getter->receiver());
- receiver = new(Z) LoadLocalNode(token_pos, t0);
+ receiver = new (Z) LoadLocalNode(token_pos, t0);
}
- *expr = new(Z) InstanceGetterNode(
+ *expr = new (Z) InstanceGetterNode(
token_pos, receiver, getter->field_name(), getter->is_conditional());
return result;
}
@@ -11324,28 +10813,25 @@ AstNode* Parser::CreateAssignmentNode(AstNode* original,
name = Symbols::New(T, original->AsTypeNode()->TypeName());
} else if (original->IsLoadStaticFieldNode()) {
name = original->AsLoadStaticFieldNode()->field().name();
- target_cls = &Class::Handle(Z,
- original->AsLoadStaticFieldNode()->field().Owner());
+ target_cls =
+ &Class::Handle(Z, original->AsLoadStaticFieldNode()->field().Owner());
} else if ((left_ident != NULL) &&
- (original->IsLiteralNode() ||
- original->IsLoadLocalNode())) {
+ (original->IsLiteralNode() || original->IsLoadLocalNode())) {
name = left_ident->raw();
}
if (name.IsNull()) {
ReportError(left_pos, "expression is not assignable");
}
ArgumentListNode* error_arguments =
- new(Z) ArgumentListNode(rhs->token_pos());
+ new (Z) ArgumentListNode(rhs->token_pos());
error_arguments->Add(rhs);
- result = ThrowNoSuchMethodError(
- original->token_pos(),
- *target_cls,
- String::Handle(Z, Field::SetterName(name)),
- error_arguments,
- InvocationMirror::kStatic,
- original->IsLoadLocalNode() ?
- InvocationMirror::kLocalVar : InvocationMirror::kSetter,
- NULL); // No existing function.
+ result = ThrowNoSuchMethodError(original->token_pos(), *target_cls,
+ String::Handle(Z, Field::SetterName(name)),
+ error_arguments, InvocationMirror::kStatic,
+ original->IsLoadLocalNode()
+ ? InvocationMirror::kLocalVar
+ : InvocationMirror::kSetter,
+ NULL); // No existing function.
}
// The compound assignment operator a ??= b is different from other
// a op= b assignments. If a is non-null, the assignment to a must be
@@ -11353,19 +10839,13 @@ AstNode* Parser::CreateAssignmentNode(AstNode* original,
// normally: a op= b ==> a = a op b
// however: a ??= b ==> a ?? (a = b)
// Therefore, we need to transform a = (a ?? b) into a ?? (a = b)
- if (is_compound &&
- rhs->IsBinaryOpNode() &&
+ if (is_compound && rhs->IsBinaryOpNode() &&
(rhs->AsBinaryOpNode()->kind() == Token::kIFNULL)) {
BinaryOpNode* ifnull = rhs->AsBinaryOpNode();
AstNode* modified_assign =
- CreateAssignmentNode(original,
- ifnull->right(),
- left_ident,
- left_pos);
- result = OptimizeBinaryOpNode(ifnull->token_pos(),
- ifnull->kind(),
- ifnull->left(),
- modified_assign);
+ CreateAssignmentNode(original, ifnull->right(), left_ident, left_pos);
+ result = OptimizeBinaryOpNode(ifnull->token_pos(), ifnull->kind(),
+ ifnull->left(), modified_assign);
}
return result;
}
@@ -11373,12 +10853,12 @@ AstNode* Parser::CreateAssignmentNode(AstNode* original,
AstNode* Parser::ParseCascades(AstNode* expr) {
TokenPosition cascade_pos = TokenPos();
- LetNode* cascade = new(Z) LetNode(cascade_pos);
+ LetNode* cascade = new (Z) LetNode(cascade_pos);
LocalVariable* cascade_receiver_var = cascade->AddInitializer(expr);
while (CurrentToken() == Token::kCASCADE) {
cascade_pos = TokenPos();
LoadLocalNode* load_cascade_receiver =
- new(Z) LoadLocalNode(cascade_pos, cascade_receiver_var);
+ new (Z) LoadLocalNode(cascade_pos, cascade_receiver_var);
if (Token::IsIdentifier(LookaheadToken(1))) {
// Replace .. with . for ParseSelectors().
token_kind_ = Token::kPERIOD;
@@ -11423,7 +10903,7 @@ AstNode* Parser::ParseCascades(AstNode* expr) {
}
// The result is an expression with the (side effects of the) cascade
// sequence followed by the (value of the) receiver temp variable load.
- cascade->AddNode(new(Z) LoadLocalNode(cascade_pos, cascade_receiver_var));
+ cascade->AddNode(new (Z) LoadLocalNode(cascade_pos, cascade_receiver_var));
return cascade;
}
@@ -11436,9 +10916,8 @@ static AstNode* LiteralIfStaticConst(Zone* zone, AstNode* expr) {
!expr->AsLoadStaticFieldNode()->is_deferred_reference()) {
ASSERT(field.StaticValue() != Object::sentinel().raw());
ASSERT(field.StaticValue() != Object::transition_sentinel().raw());
- return new(zone) LiteralNode(
- expr->token_pos(),
- Instance::ZoneHandle(zone, field.StaticValue()));
+ return new (zone) LiteralNode(
+ expr->token_pos(), Instance::ZoneHandle(zone, field.StaticValue()));
}
}
return expr;
@@ -11489,7 +10968,7 @@ AstNode* Parser::ParseExpr(bool require_compiletime_const,
ReportError("expression expected after throw");
}
AstNode* expr = ParseExpr(require_compiletime_const, consume_cascades);
- return new(Z) ThrowNode(expr_pos, expr, NULL);
+ return new (Z) ThrowNode(expr_pos, expr, NULL);
}
if (require_compiletime_const) {
@@ -11498,7 +10977,7 @@ AstNode* Parser::ParseExpr(bool require_compiletime_const,
Instance& existing_const = Instance::ZoneHandle(Z);
if (GetCachedConstant(expr_pos, &existing_const)) {
SkipConditionalExpr();
- return new(Z) LiteralNode(expr_pos, existing_const);
+ return new (Z) LiteralNode(expr_pos, existing_const);
}
}
@@ -11568,7 +11047,7 @@ AstNode* Parser::ParseConditionalExpr() {
AstNode* expr1 = ParseExpr(kAllowConst, kNoCascades);
ExpectToken(Token::kCOLON);
AstNode* expr2 = ParseExpr(kAllowConst, kNoCascades);
- expr = new(Z) ConditionalExprNode(expr_pos, expr, expr1, expr2);
+ expr = new (Z) ConditionalExprNode(expr_pos, expr, expr1, expr2);
}
return expr;
}
@@ -11593,17 +11072,11 @@ AstNode* Parser::ParseUnaryExpr() {
LocalVariable* async_saved_try_ctx;
LocalVariable* outer_saved_try_ctx;
LocalVariable* outer_async_saved_try_ctx;
- CheckAsyncOpInTryBlock(&saved_try_ctx,
- &async_saved_try_ctx,
- &outer_saved_try_ctx,
- &outer_async_saved_try_ctx);
- expr = new (Z) AwaitNode(op_pos,
- ParseUnaryExpr(),
- saved_try_ctx,
- async_saved_try_ctx,
- outer_saved_try_ctx,
- outer_async_saved_try_ctx,
- current_block_->scope);
+ CheckAsyncOpInTryBlock(&saved_try_ctx, &async_saved_try_ctx,
+ &outer_saved_try_ctx, &outer_async_saved_try_ctx);
+ expr = new (Z) AwaitNode(op_pos, ParseUnaryExpr(), saved_try_ctx,
+ async_saved_try_ctx, outer_saved_try_ctx,
+ outer_async_saved_try_ctx, current_block_->scope);
} else if (IsPrefixOperator(CurrentToken())) {
Token::Kind unary_op = CurrentToken();
if (unary_op == Token::kSUB) {
@@ -11630,11 +11103,9 @@ AstNode* Parser::ParseUnaryExpr() {
LetNode* let_expr = PrepareCompoundAssignmentNodes(&expr);
Token::Kind binary_op =
(incr_op == Token::kINCR) ? Token::kADD : Token::kSUB;
- BinaryOpNode* add = new(Z) BinaryOpNode(
- op_pos,
- binary_op,
- expr,
- new(Z) LiteralNode(op_pos, Smi::ZoneHandle(Z, Smi::New(1))));
+ BinaryOpNode* add = new (Z) BinaryOpNode(
+ op_pos, binary_op, expr,
+ new (Z) LiteralNode(op_pos, Smi::ZoneHandle(Z, Smi::New(1))));
AstNode* store =
CreateAssignmentNode(expr, add, expr_ident, expr_pos, true);
ASSERT(store != NULL);
@@ -11648,14 +11119,14 @@ AstNode* Parser::ParseUnaryExpr() {
ArgumentListNode* Parser::ParseActualParameters(
- ArgumentListNode* implicit_arguments,
- bool require_const) {
+ ArgumentListNode* implicit_arguments,
+ bool require_const) {
TRACE_PARSER("ParseActualParameters");
ASSERT(CurrentToken() == Token::kLPAREN);
const bool saved_mode = SetAllowFunctionLiterals(true);
ArgumentListNode* arguments;
if (implicit_arguments == NULL) {
- arguments = new(Z) ArgumentListNode(TokenPos());
+ arguments = new (Z) ArgumentListNode(TokenPos());
} else {
arguments = implicit_arguments;
}
@@ -11712,11 +11183,9 @@ AstNode* Parser::ParseStaticCall(const Class& cls,
ASSERT(CurrentToken() == Token::kLPAREN);
ArgumentListNode* arguments = ParseActualParameters(NULL, kAllowConst);
const int num_arguments = arguments->length();
- const Function& func = Function::ZoneHandle(Z,
- Resolver::ResolveStatic(cls,
- func_name,
- num_arguments,
- arguments->names()));
+ const Function& func = Function::ZoneHandle(
+ Z, Resolver::ResolveStatic(cls, func_name, num_arguments,
+ arguments->names()));
if (func.IsNull()) {
// Check if there is a static field of the same name, it could be a closure
// and so we try and invoke the closure.
@@ -11728,17 +11197,12 @@ AstNode* Parser::ParseStaticCall(const Class& cls,
const String& getter_name =
String::ZoneHandle(Z, Field::GetterName(func_name));
const int kNumArguments = 0; // no arguments.
- func = Resolver::ResolveStatic(cls,
- getter_name,
- kNumArguments,
+ func = Resolver::ResolveStatic(cls, getter_name, kNumArguments,
Object::empty_array());
if (!func.IsNull()) {
ASSERT(func.kind() != RawFunction::kImplicitStaticFinalGetter);
- closure = new(Z) StaticGetterNode(
- call_pos,
- NULL,
- Class::ZoneHandle(Z, cls.raw()),
- func_name);
+ closure = new (Z) StaticGetterNode(
+ call_pos, NULL, Class::ZoneHandle(Z, cls.raw()), func_name);
return BuildClosureCall(call_pos, closure, arguments);
}
} else {
@@ -11746,16 +11210,12 @@ AstNode* Parser::ParseStaticCall(const Class& cls,
return BuildClosureCall(call_pos, closure, arguments);
}
// Could not resolve static method: throw a NoSuchMethodError.
- return ThrowNoSuchMethodError(ident_pos,
- cls,
- func_name,
- arguments,
+ return ThrowNoSuchMethodError(ident_pos, cls, func_name, arguments,
InvocationMirror::kStatic,
InvocationMirror::kMethod,
NULL); // No existing function.
- } else if (cls.IsTopLevel() &&
- (cls.library() == Library::CoreLibrary()) &&
- (func.name() == Symbols::Identical().raw())) {
+ } else if (cls.IsTopLevel() && (cls.library() == Library::CoreLibrary()) &&
+ (func.name() == Symbols::Identical().raw())) {
// This is the predefined toplevel function identical(a,b).
// Create a comparison node instead of a static call to the function.
ASSERT(num_arguments == 2);
@@ -11771,20 +11231,18 @@ AstNode* Parser::ParseStaticCall(const Class& cls,
AstNode* arg1 = arguments->NodeAt(1);
const Instance* val1 = arg1->EvalConstExpr();
if ((val1 != NULL) && (val1->IsString())) {
- arguments->SetNodeAt(0,
- new(Z) LiteralNode(arg0->token_pos(),
- EvaluateConstExpr(arg0->token_pos(), arg0)));
- arguments->SetNodeAt(1,
- new(Z) LiteralNode(arg1->token_pos(),
- EvaluateConstExpr(arg1->token_pos(), arg1)));
+ arguments->SetNodeAt(
+ 0, new (Z) LiteralNode(arg0->token_pos(),
+ EvaluateConstExpr(arg0->token_pos(), arg0)));
+ arguments->SetNodeAt(
+ 1, new (Z) LiteralNode(arg1->token_pos(),
+ EvaluateConstExpr(arg1->token_pos(), arg1)));
}
}
- return new(Z) ComparisonNode(ident_pos,
- Token::kEQ_STRICT,
- arguments->NodeAt(0),
- arguments->NodeAt(1));
+ return new (Z) ComparisonNode(ident_pos, Token::kEQ_STRICT,
+ arguments->NodeAt(0), arguments->NodeAt(1));
}
- return new(Z) StaticCallNode(ident_pos, func, arguments);
+ return new (Z) StaticCallNode(ident_pos, func, arguments);
}
@@ -11795,11 +11253,8 @@ AstNode* Parser::ParseInstanceCall(AstNode* receiver,
TRACE_PARSER("ParseInstanceCall");
CheckToken(Token::kLPAREN);
ArgumentListNode* arguments = ParseActualParameters(NULL, kAllowConst);
- return new(Z) InstanceCallNode(ident_pos,
- receiver,
- func_name,
- arguments,
- is_conditional);
+ return new (Z) InstanceCallNode(ident_pos, receiver, func_name, arguments,
+ is_conditional);
}
@@ -11828,18 +11283,17 @@ AstNode* Parser::GenerateStaticFieldLookup(const Field& field,
const String& field_name = String::ZoneHandle(Z, field.name());
const String& getter_name =
String::Handle(Z, Field::GetterSymbol(field_name));
- const Function& getter = Function::Handle(Z,
- field_owner.LookupStaticFunction(getter_name));
+ const Function& getter =
+ Function::Handle(Z, field_owner.LookupStaticFunction(getter_name));
// Never load field directly if there is a getter (deterministic AST).
if (getter.IsNull() || field.is_const()) {
- return new(Z) LoadStaticFieldNode(
- ident_pos, Field::ZoneHandle(Z, field.raw()));
+ return new (Z)
+ LoadStaticFieldNode(ident_pos, Field::ZoneHandle(Z, field.raw()));
} else {
ASSERT(getter.kind() == RawFunction::kImplicitStaticFinalGetter);
- return new(Z) StaticGetterNode(ident_pos,
- NULL, // Receiver.
- field_owner,
- field_name);
+ return new (Z) StaticGetterNode(ident_pos,
+ NULL, // Receiver.
+ field_owner, field_name);
}
}
@@ -11866,14 +11320,12 @@ AstNode* Parser::GenerateStaticFieldAccess(const Class& cls,
// Create a getter call, which may later be turned into
// a setter call, or else the backend will generate
// a throw NoSuchMethodError().
- access = new(Z) StaticGetterNode(ident_pos,
- NULL,
- Class::ZoneHandle(Z, cls.raw()),
- field_name);
+ access = new (Z) StaticGetterNode(
+ ident_pos, NULL, Class::ZoneHandle(Z, cls.raw()), field_name);
}
} else {
ASSERT(func.kind() != RawFunction::kImplicitStaticFinalGetter);
- access = new(Z) StaticGetterNode(
+ access = new (Z) StaticGetterNode(
ident_pos, NULL, Class::ZoneHandle(Z, cls.raw()), field_name);
}
} else {
@@ -11900,11 +11352,10 @@ AstNode* Parser::LoadFieldIfUnresolved(AstNode* node) {
String::Cast(Object::ZoneHandle(primary->primary().raw()));
if (current_function().is_static() ||
current_function().IsInFactoryScope()) {
- StaticGetterNode* getter = new(Z) StaticGetterNode(
- primary->token_pos(),
- NULL, // No receiver.
- Class::ZoneHandle(Z, current_class().raw()),
- name);
+ StaticGetterNode* getter = new (Z)
+ StaticGetterNode(primary->token_pos(),
+ NULL, // No receiver.
+ Class::ZoneHandle(Z, current_class().raw()), name);
getter->set_is_deferred(primary->is_deferred_reference());
return getter;
} else {
@@ -11964,7 +11415,7 @@ AstNode* Parser::LoadTypeParameter(PrimaryNode* primary) {
type_parameter ^= ClassFinalizer::FinalizeType(
current_class(), type_parameter, ClassFinalizer::kCanonicalize);
ASSERT(!type_parameter.IsMalformed());
- return new(Z) TypeNode(primary_pos, type_parameter);
+ return new (Z) TypeNode(primary_pos, type_parameter);
} else {
ASSERT(type_parameter.IsFunctionTypeParameter());
// TODO(regis): Verify that CaptureFunctionInstantiator() was already
@@ -11972,7 +11423,7 @@ AstNode* Parser::LoadTypeParameter(PrimaryNode* primary) {
// TODO(regis): Finalize type parameter and return as type node.
// For now, map to dynamic type.
Type& type = Type::ZoneHandle(Z, Type::DynamicType());
- return new(Z) TypeNode(primary_pos, type);
+ return new (Z) TypeNode(primary_pos, type);
}
}
@@ -12036,10 +11487,8 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
}
if (cls.IsNull()) {
// Instance field access.
- selector = new(Z) InstanceGetterNode(ident_pos,
- left,
- *ident,
- is_conditional);
+ selector = new (Z)
+ InstanceGetterNode(ident_pos, left, *ident, is_conditional);
} else {
// Static field access.
selector = GenerateStaticFieldAccess(cls, *ident, ident_pos);
@@ -12070,22 +11519,22 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
array = LoadClosure(primary_node);
} else if (primary_node->primary().IsClass()) {
const Class& type_class = Class::Cast(primary_node->primary());
- AbstractType& type = Type::ZoneHandle(Z,
- Type::New(type_class, TypeArguments::Handle(Z),
- primary_pos, Heap::kOld));
- type ^= ClassFinalizer::FinalizeType(
- current_class(), type, ClassFinalizer::kCanonicalize);
+ AbstractType& type = Type::ZoneHandle(
+ Z, Type::New(type_class, TypeArguments::Handle(Z), primary_pos,
+ Heap::kOld));
+ type ^= ClassFinalizer::FinalizeType(current_class(), type,
+ ClassFinalizer::kCanonicalize);
// Type may be malbounded, but not malformed.
ASSERT(!type.IsMalformed());
- array = new(Z) TypeNode(primary_pos, type);
+ array = new (Z) TypeNode(primary_pos, type);
} else if (primary_node->primary().IsTypeParameter()) {
array = LoadTypeParameter(primary_node);
} else {
UNREACHABLE(); // Internal parser error.
}
}
- selector = new(Z) LoadIndexedNode(
- bracket_pos, array, index, Class::ZoneHandle(Z));
+ selector = new (Z)
+ LoadIndexedNode(bracket_pos, array, index, Class::ZoneHandle(Z));
} else if (IsArgumentPart()) {
if (CurrentToken() == Token::kLT) {
// Type arguments.
@@ -12114,10 +11563,9 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
"from static function",
func_name.ToCString());
}
- selector = ParseInstanceCall(LoadReceiver(primary_pos),
- func_name,
- primary_pos,
- false /* is_conditional */);
+ selector =
+ ParseInstanceCall(LoadReceiver(primary_pos), func_name,
+ primary_pos, false /* is_conditional */);
}
} else if (primary_node->primary().IsString()) {
// Primary is an unresolved name.
@@ -12131,10 +11579,9 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
selector = ParseStaticCall(current_class(), name, primary_pos);
} else {
// Treat as call to unresolved (instance) method.
- selector = ParseInstanceCall(LoadReceiver(primary_pos),
- name,
- primary_pos,
- false /* is_conditional */);
+ selector =
+ ParseInstanceCall(LoadReceiver(primary_pos), name, primary_pos,
+ false /* is_conditional */);
}
} else if (primary_node->primary().IsTypeParameter()) {
TypeParameter& type_parameter = TypeParameter::ZoneHandle(Z);
@@ -12142,17 +11589,16 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
const String& name = String::ZoneHandle(Z, type_parameter.name());
if (type_parameter.IsClassTypeParameter()) {
if (ParsingStaticMember()) {
- // Treat as this.T(), because T is in scope.
- ReportError(primary_pos,
- "cannot access type parameter '%s' "
- "from static function",
- name.ToCString());
+ // Treat as this.T(), because T is in scope.
+ ReportError(primary_pos,
+ "cannot access type parameter '%s' "
+ "from static function",
+ name.ToCString());
} else {
// Treat as call to unresolved (instance) method.
- selector = ParseInstanceCall(LoadReceiver(primary_pos),
- name,
- primary_pos,
- false /* is_conditional */);
+ selector =
+ ParseInstanceCall(LoadReceiver(primary_pos), name,
+ primary_pos, false /* is_conditional */);
}
} else {
ASSERT(type_parameter.IsFunctionTypeParameter());
@@ -12163,13 +11609,14 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
}
} else if (primary_node->primary().IsClass()) {
const Class& type_class = Class::Cast(primary_node->primary());
- AbstractType& type = Type::ZoneHandle(Z, Type::New(
- type_class, TypeArguments::Handle(Z), primary_pos, Heap::kOld));
- type ^= ClassFinalizer::FinalizeType(
- current_class(), type, ClassFinalizer::kCanonicalize);
+ AbstractType& type = Type::ZoneHandle(
+ Z, Type::New(type_class, TypeArguments::Handle(Z), primary_pos,
+ Heap::kOld));
+ type ^= ClassFinalizer::FinalizeType(current_class(), type,
+ ClassFinalizer::kCanonicalize);
// Type may be malbounded, but not malformed.
ASSERT(!type.IsMalformed());
- selector = new(Z) TypeNode(primary_pos, type);
+ selector = new (Z) TypeNode(primary_pos, type);
} else {
UNREACHABLE(); // Internal parser error.
}
@@ -12189,13 +11636,14 @@ AstNode* Parser::ParseSelectors(AstNode* primary, bool is_cascade) {
left = LoadClosure(primary_node);
} else if (primary_node->primary().IsClass()) {
const Class& type_class = Class::Cast(primary_node->primary());
- AbstractType& type = Type::ZoneHandle(Z, Type::New(
- type_class, TypeArguments::Handle(Z), primary_pos, Heap::kOld));
- type = ClassFinalizer::FinalizeType(
- current_class(), type, ClassFinalizer::kCanonicalize);
+ AbstractType& type = Type::ZoneHandle(
+ Z, Type::New(type_class, TypeArguments::Handle(Z), primary_pos,
+ Heap::kOld));
+ type = ClassFinalizer::FinalizeType(current_class(), type,
+ ClassFinalizer::kCanonicalize);
// Type may be malbounded, but not malformed.
ASSERT(!type.IsMalformed());
- left = new(Z) TypeNode(primary_pos, type);
+ left = new (Z) TypeNode(primary_pos, type);
} else if (primary_node->primary().IsTypeParameter()) {
left = LoadTypeParameter(primary_node);
} else if (primary_node->IsSuper()) {
@@ -12281,22 +11729,19 @@ AstNode* Parser::ParseClosurization(AstNode* primary) {
const Field& field = Field::Cast(obj);
if (is_setter_name && !field.is_final()) {
Instance& setter_closure = Instance::ZoneHandle(field.SetterClosure());
- return new(Z) LiteralNode(property_pos, setter_closure);
+ return new (Z) LiteralNode(property_pos, setter_closure);
}
if (!is_setter_name) {
Instance& getter_closure = Instance::ZoneHandle(field.GetterClosure());
- return new(Z) LiteralNode(property_pos, getter_closure);
+ return new (Z) LiteralNode(property_pos, getter_closure);
}
}
- return ThrowNoSuchMethodError(property_pos,
- current_class(),
- extractor_name,
- NULL, // No arguments.
- InvocationMirror::kTopLevel,
- is_setter_name
- ? InvocationMirror::kSetter
- : InvocationMirror::kMethod,
- NULL); // No existing function.
+ return ThrowNoSuchMethodError(
+ property_pos, current_class(), extractor_name,
+ NULL, // No arguments.
+ InvocationMirror::kTopLevel,
+ is_setter_name ? InvocationMirror::kSetter : InvocationMirror::kMethod,
+ NULL); // No existing function.
}
// Handle closurization of static properties of classes, C#n.
@@ -12315,13 +11760,13 @@ AstNode* Parser::ParseClosurization(AstNode* primary) {
// Note: the created closure is cached after it's created
// once. If eager compilation is desired, the compiler can
// be invoked here. The same applies for getters below.
- return new(Z) LiteralNode(property_pos, setter_closure);
+ return new (Z) LiteralNode(property_pos, setter_closure);
}
} else {
const Instance& getter_closure =
Instance::ZoneHandle(Z, field.GetterClosure());
ASSERT(getter_closure.IsClosure());
- return new(Z) LiteralNode(property_pos, getter_closure);
+ return new (Z) LiteralNode(property_pos, getter_closure);
}
} else {
Function& func = Function::Handle(Z);
@@ -12340,15 +11785,12 @@ AstNode* Parser::ParseClosurization(AstNode* primary) {
return CreateImplicitClosureNode(func, property_pos, NULL);
}
}
- return ThrowNoSuchMethodError(property_pos,
- cls,
- extractor_name,
- NULL, // No arguments.
- InvocationMirror::kStatic,
- is_setter_name
- ? InvocationMirror::kSetter
- : InvocationMirror::kMethod,
- NULL); // No existing function.
+ return ThrowNoSuchMethodError(
+ property_pos, cls, extractor_name,
+ NULL, // No arguments.
+ InvocationMirror::kStatic,
+ is_setter_name ? InvocationMirror::kSetter : InvocationMirror::kMethod,
+ NULL); // No existing function.
}
// Closurization of instance getter, setter, method or operator.
@@ -12359,7 +11801,7 @@ AstNode* Parser::ParseClosurization(AstNode* primary) {
}
pieces.Add(extractor_name);
extractor_name = Symbols::FromConcatAll(T, pieces);
- return new(Z) InstanceGetterNode(property_pos, primary, extractor_name);
+ return new (Z) InstanceGetterNode(property_pos, primary, extractor_name);
}
@@ -12388,18 +11830,16 @@ AstNode* Parser::ParsePostfixExpr() {
LocalVariable* temp = let_expr->AddInitializer(expr);
Token::Kind binary_op =
(incr_op == Token::kINCR) ? Token::kADD : Token::kSUB;
- BinaryOpNode* add = new(Z) BinaryOpNode(
- op_pos,
- binary_op,
- new(Z) LoadLocalNode(op_pos, temp),
- new(Z) LiteralNode(op_pos, Smi::ZoneHandle(Z, Smi::New(1))));
+ BinaryOpNode* add = new (Z) BinaryOpNode(
+ op_pos, binary_op, new (Z) LoadLocalNode(op_pos, temp),
+ new (Z) LiteralNode(op_pos, Smi::ZoneHandle(Z, Smi::New(1))));
AstNode* store =
CreateAssignmentNode(expr, add, expr_ident, expr_pos, true);
ASSERT(store != NULL);
// The result is a pair of the (side effects of the) store followed by
// the (value of the) initial value temp variable load.
let_expr->AddNode(store);
- let_expr->AddNode(new(Z) LoadLocalNode(op_pos, temp));
+ let_expr->AddNode(new (Z) LoadLocalNode(op_pos, temp));
return let_expr;
}
return expr;
@@ -12429,9 +11869,9 @@ void Parser::ResolveType(ClassFinalizer::FinalizationKind finalization,
// First check if the type is a function type parameter.
if (!innermost_function().IsNull()) {
// TODO(regis): Shortcut this lookup if no generic functions in scope.
- TypeParameter& type_parameter = TypeParameter::ZoneHandle(Z,
- innermost_function().LookupTypeParameter(unresolved_class_name,
- NULL));
+ TypeParameter& type_parameter = TypeParameter::ZoneHandle(
+ Z, innermost_function().LookupTypeParameter(unresolved_class_name,
+ NULL));
if (!type_parameter.IsNull()) {
// TODO(regis): Check for absence of type arguments.
// For now, resolve the function type parameter to dynamic.
@@ -12440,16 +11880,15 @@ void Parser::ResolveType(ClassFinalizer::FinalizationKind finalization,
}
}
// Then check if the type is a class type parameter.
- const TypeParameter& type_parameter = TypeParameter::Handle(Z,
- current_class().LookupTypeParameter(unresolved_class_name));
+ const TypeParameter& type_parameter = TypeParameter::Handle(
+ Z, current_class().LookupTypeParameter(unresolved_class_name));
if (!type_parameter.IsNull()) {
// A type parameter is considered to be a malformed type when
// referenced by a static member.
if (ParsingStaticMember()) {
*type = ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- type->token_pos(),
+ script_, type->token_pos(),
"type parameter '%s' cannot be referenced "
"from static member",
String::Handle(Z, type_parameter.name()).ToCString());
@@ -12460,8 +11899,7 @@ void Parser::ResolveType(ClassFinalizer::FinalizationKind finalization,
if (type->arguments() != TypeArguments::null()) {
*type = ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- type_parameter.token_pos(),
+ script_, type_parameter.token_pos(),
"type parameter '%s' cannot be parameterized",
String::Handle(Z, type_parameter.name()).ToCString());
return;
@@ -12489,9 +11927,7 @@ void Parser::ResolveType(ClassFinalizer::FinalizationKind finalization,
} else if (finalization >= ClassFinalizer::kCanonicalize) {
ClassFinalizer::FinalizeMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- parameterized_type,
- "type '%s' is not loaded",
+ script_, parameterized_type, "type '%s' is not loaded",
String::Handle(Z, parameterized_type.UserVisibleName()).ToCString());
return;
}
@@ -12535,12 +11971,12 @@ void Parser::CheckInstanceFieldAccess(TokenPosition field_pos,
bool Parser::ParsingStaticMember() const {
if (is_top_level_) {
- return (current_member_ != NULL) &&
- current_member_->has_static && !current_member_->has_factory;
+ return (current_member_ != NULL) && current_member_->has_static &&
+ !current_member_->has_factory;
}
ASSERT(!current_function().IsNull());
- return
- current_function().is_static() && !current_function().IsInFactoryScope();
+ return current_function().is_static() &&
+ !current_function().IsInFactoryScope();
}
@@ -12582,9 +12018,8 @@ void Parser::InsertCachedConstantValue(const Script& script,
const intptr_t kInitialConstMapSize = 16;
ASSERT(!script.InVMHeap());
if (script.compile_time_constants() == Array::null()) {
- const Array& array =
- Array::Handle(HashTables::New<ConstantsMap>(kInitialConstMapSize,
- Heap::kNew));
+ const Array& array = Array::Handle(
+ HashTables::New<ConstantsMap>(kInitialConstMapSize, Heap::kNew));
script.set_compile_time_constants(array);
}
ConstantsMap constants(script.compile_time_constants());
@@ -12643,14 +12078,15 @@ RawInstance* Parser::TryCanonicalize(const Instance& instance,
// Otherwise, if the field is constant, initialize the field and return no ast.
// If the field is not initialized and not const, return the ast for the getter.
StaticGetterNode* Parser::RunStaticFieldInitializer(
- const Field& field, TokenPosition field_ref_pos) {
+ const Field& field,
+ TokenPosition field_ref_pos) {
ASSERT(field.is_static());
const Class& field_owner = Class::ZoneHandle(Z, field.Owner());
const String& field_name = String::ZoneHandle(Z, field.name());
const String& getter_name =
String::Handle(Z, Field::GetterSymbol(field_name));
- const Function& getter = Function::Handle(Z,
- field_owner.LookupStaticFunction(getter_name));
+ const Function& getter =
+ Function::Handle(Z, field_owner.LookupStaticFunction(getter_name));
const Instance& value = Instance::Handle(Z, field.StaticValue());
if (value.raw() == Object::transition_sentinel().raw()) {
if (field.is_const()) {
@@ -12658,8 +12094,8 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(
field_name.ToCString());
} else {
// The implicit static getter will throw the exception if necessary.
- return new(Z) StaticGetterNode(
- field_ref_pos, NULL, field_owner, field_name);
+ return new (Z)
+ StaticGetterNode(field_ref_pos, NULL, field_owner, field_name);
}
} else if (value.raw() == Object::sentinel().raw()) {
// This field has not been referenced yet and thus the value has
@@ -12670,11 +12106,9 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(
NoOOBMessageScope no_msg_scope(thread());
field.SetStaticValue(Object::transition_sentinel());
const int kNumArguments = 0; // no arguments.
- const Function& func = Function::Handle(Z,
- Resolver::ResolveStatic(field_owner,
- getter_name,
- kNumArguments,
- Object::empty_array()));
+ const Function& func = Function::Handle(
+ Z, Resolver::ResolveStatic(field_owner, getter_name, kNumArguments,
+ Object::empty_array()));
ASSERT(!func.IsNull());
ASSERT(func.kind() == RawFunction::kImplicitStaticFinalGetter);
Object& const_value = Object::Handle(Z);
@@ -12690,8 +12124,7 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(
// It is a compile-time error if evaluation of a compile-time constant
// would raise an exception.
const String& field_name = String::Handle(Z, field.name());
- ReportErrors(error,
- script_, field_ref_pos,
+ ReportErrors(error, script_, field_ref_pos,
"error initializing const field '%s'",
field_name.ToCString());
} else {
@@ -12704,10 +12137,10 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(
instance ^= const_value.raw();
instance = TryCanonicalize(instance, field_ref_pos);
field.SetStaticValue(instance);
- return NULL; // Constant
+ return NULL; // Constant
} else {
- return new(Z) StaticGetterNode(
- field_ref_pos, NULL, field_owner, field_name);
+ return new (Z)
+ StaticGetterNode(field_ref_pos, NULL, field_owner, field_name);
}
}
if (getter.IsNull() ||
@@ -12715,8 +12148,7 @@ StaticGetterNode* Parser::RunStaticFieldInitializer(
return NULL;
}
ASSERT(getter.kind() == RawFunction::kImplicitGetter);
- return new(Z) StaticGetterNode(
- field_ref_pos, NULL, field_owner, field_name);
+ return new (Z) StaticGetterNode(field_ref_pos, NULL, field_owner, field_name);
}
@@ -12755,22 +12187,22 @@ RawObject* Parser::EvaluateConstConstructorCall(
ASSERT(arg->IsLiteralNode());
arg_values.SetAt((i + kNumExtraArgs), arg->AsLiteralNode()->literal());
}
- const Array& args_descriptor = Array::Handle(Z,
- ArgumentsDescriptor::New(num_arguments, arguments->names()));
- const Object& result = Object::Handle(Z,
- DartEntry::InvokeFunction(constructor, arg_values, args_descriptor));
+ const Array& args_descriptor = Array::Handle(
+ Z, ArgumentsDescriptor::New(num_arguments, arguments->names()));
+ const Object& result = Object::Handle(
+ Z, DartEntry::InvokeFunction(constructor, arg_values, args_descriptor));
if (result.IsError()) {
- // An exception may not occur in every parse attempt, i.e., the
- // generated AST is not deterministic. Therefore mark the function as
- // not optimizable.
- current_function().SetIsOptimizable(false);
- if (result.IsUnhandledException()) {
- return result.raw();
- } else {
- thread()->long_jump_base()->Jump(1, Error::Cast(result));
- UNREACHABLE();
- return Object::null();
- }
+ // An exception may not occur in every parse attempt, i.e., the
+ // generated AST is not deterministic. Therefore mark the function as
+ // not optimizable.
+ current_function().SetIsOptimizable(false);
+ if (result.IsUnhandledException()) {
+ return result.raw();
+ } else {
+ thread()->long_jump_base()->Jump(1, Error::Cast(result));
+ UNREACHABLE();
+ return Object::null();
+ }
} else {
if (constructor.IsFactory()) {
// The factory method returns the allocated object.
@@ -12785,7 +12217,7 @@ RawObject* Parser::EvaluateConstConstructorCall(
// return true if the identifier is found, false otherwise.
// If node is non NULL return an AST node corresponding to the identifier.
bool Parser::ResolveIdentInLocalScope(TokenPosition ident_pos,
- const String &ident,
+ const String& ident,
AstNode** node,
intptr_t* function_level) {
TRACE_PARSER("ResolveIdentInLocalScope");
@@ -12796,7 +12228,7 @@ bool Parser::ResolveIdentInLocalScope(TokenPosition ident_pos,
}
if (local != NULL) {
if (node != NULL) {
- *node = new(Z) LoadLocalNode(ident_pos, local);
+ *node = new (Z) LoadLocalNode(ident_pos, local);
}
if (function_level != NULL) {
*function_level = local->owner()->function_level();
@@ -12845,13 +12277,11 @@ bool Parser::ResolveIdentInLocalScope(TokenPosition ident_pos,
// Check if an instance/static function exists.
func = cls.LookupFunction(ident);
- if (!func.IsNull() &&
- (func.IsDynamicFunction() ||
- func.IsStaticFunction() ||
- func.is_abstract())) {
+ if (!func.IsNull() && (func.IsDynamicFunction() || func.IsStaticFunction() ||
+ func.is_abstract())) {
if (node != NULL) {
- *node = new(Z) PrimaryNode(
- ident_pos, Function::ZoneHandle(Z, func.raw()));
+ *node =
+ new (Z) PrimaryNode(ident_pos, Function::ZoneHandle(Z, func.raw()));
}
return true;
}
@@ -12876,10 +12306,8 @@ bool Parser::ResolveIdentInLocalScope(TokenPosition ident_pos,
return true;
} else if (func.IsStaticFunction()) {
if (node != NULL) {
- *node = new(Z) StaticGetterNode(ident_pos,
- NULL,
- Class::ZoneHandle(Z, cls.raw()),
- ident);
+ *node = new (Z) StaticGetterNode(
+ ident_pos, NULL, Class::ZoneHandle(Z, cls.raw()), ident);
}
return true;
}
@@ -12903,7 +12331,7 @@ AstNode* Parser::ResolveIdentInCurrentLibraryScope(TokenPosition ident_pos,
const Object& obj = Object::Handle(Z, library_.ResolveName(ident));
if (obj.IsClass()) {
const Class& cls = Class::Cast(obj);
- return new(Z) PrimaryNode(ident_pos, Class::ZoneHandle(Z, cls.raw()));
+ return new (Z) PrimaryNode(ident_pos, Class::ZoneHandle(Z, cls.raw()));
} else if (obj.IsField()) {
const Field& field = Field::Cast(obj);
ASSERT(field.is_static());
@@ -12916,26 +12344,24 @@ AstNode* Parser::ResolveIdentInCurrentLibraryScope(TokenPosition ident_pos,
const Function& func = Function::Cast(obj);
ASSERT(func.is_static());
if (func.IsGetterFunction() || func.IsSetterFunction()) {
- StaticGetterNode* getter =
- new(Z) StaticGetterNode(ident_pos,
- /* receiver */ NULL,
- Class::ZoneHandle(Z, func.Owner()),
- ident);
+ StaticGetterNode* getter = new (Z) StaticGetterNode(
+ ident_pos,
+ /* receiver */ NULL, Class::ZoneHandle(Z, func.Owner()), ident);
getter->set_owner(library_);
return getter;
} else {
- return new(Z) PrimaryNode(ident_pos, Function::ZoneHandle(Z, func.raw()));
+ return new (Z)
+ PrimaryNode(ident_pos, Function::ZoneHandle(Z, func.raw()));
}
} else if (obj.IsLibraryPrefix()) {
const LibraryPrefix& prefix = LibraryPrefix::Cast(obj);
- ReportError(ident_pos,
- "illegal use of library prefix '%s'",
+ ReportError(ident_pos, "illegal use of library prefix '%s'",
String::Handle(prefix.name()).ToCString());
} else {
ASSERT(obj.IsNull());
}
// Lexically unresolved primary identifiers are referenced by their name.
- return new(Z) PrimaryNode(ident_pos, ident);
+ return new (Z) PrimaryNode(ident_pos, ident);
}
@@ -12974,7 +12400,7 @@ AstNode* Parser::ResolveIdentInPrefixScope(TokenPosition ident_pos,
} else if (obj.IsClass()) {
const Class& cls = Class::Cast(obj);
PrimaryNode* primary =
- new(Z) PrimaryNode(ident_pos, Class::ZoneHandle(Z, cls.raw()));
+ new (Z) PrimaryNode(ident_pos, Class::ZoneHandle(Z, cls.raw()));
primary->set_is_deferred(is_deferred);
return primary;
} else if (obj.IsField()) {
@@ -12995,17 +12421,15 @@ AstNode* Parser::ResolveIdentInPrefixScope(TokenPosition ident_pos,
const Function& func = Function::Cast(obj);
ASSERT(func.is_static());
if (func.IsGetterFunction() || func.IsSetterFunction()) {
- StaticGetterNode* getter = new(Z) StaticGetterNode(
- ident_pos,
- /* receiver */ NULL,
- Class::ZoneHandle(Z, func.Owner()),
- ident);
+ StaticGetterNode* getter = new (Z) StaticGetterNode(
+ ident_pos,
+ /* receiver */ NULL, Class::ZoneHandle(Z, func.Owner()), ident);
getter->set_is_deferred(is_deferred);
getter->set_owner(prefix);
return getter;
} else {
- PrimaryNode* primary = new(Z) PrimaryNode(
- ident_pos, Function::ZoneHandle(Z, func.raw()));
+ PrimaryNode* primary =
+ new (Z) PrimaryNode(ident_pos, Function::ZoneHandle(Z, func.raw()));
primary->set_is_deferred(is_deferred);
return primary;
}
@@ -13033,9 +12457,9 @@ AstNode* Parser::ResolveIdent(TokenPosition ident_pos,
if (!innermost_function().IsNull()) {
// TODO(regis): Shortcut this lookup if no generic functions in scope.
intptr_t type_param_func_level = FunctionLevel();
- const TypeParameter& type_parameter = TypeParameter::ZoneHandle(Z,
- innermost_function().LookupTypeParameter(ident,
- &type_param_func_level));
+ const TypeParameter& type_parameter =
+ TypeParameter::ZoneHandle(Z, innermost_function().LookupTypeParameter(
+ ident, &type_param_func_level));
if (!type_parameter.IsNull()) {
if ((resolved == NULL) || (resolved_func_level < type_param_func_level)) {
// The identifier is a function type parameter, possibly shadowing
@@ -13047,15 +12471,15 @@ AstNode* Parser::ResolveIdent(TokenPosition ident_pos,
// TODO(regis): Finalize type parameter and return as type node.
// For now, map to dynamic type.
Type& type = Type::ZoneHandle(Z, Type::DynamicType());
- return new(Z) TypeNode(ident_pos, type);
+ return new (Z) TypeNode(ident_pos, type);
}
}
}
if (resolved == NULL) {
// Check whether the identifier is a class type parameter.
if (!current_class().IsNull()) {
- TypeParameter& type_parameter = TypeParameter::ZoneHandle(Z,
- current_class().LookupTypeParameter(ident));
+ TypeParameter& type_parameter = TypeParameter::ZoneHandle(
+ Z, current_class().LookupTypeParameter(ident));
if (!type_parameter.IsNull()) {
if (FunctionLevel() > 0) {
// Make sure that the class instantiator is captured.
@@ -13064,7 +12488,7 @@ AstNode* Parser::ResolveIdent(TokenPosition ident_pos,
type_parameter ^= ClassFinalizer::FinalizeType(
current_class(), type_parameter, ClassFinalizer::kCanonicalize);
ASSERT(!type_parameter.IsMalformed());
- return new(Z) TypeNode(ident_pos, type_parameter);
+ return new (Z) TypeNode(ident_pos, type_parameter);
}
}
// Not found in the local scope, and the name is not a type parameter.
@@ -13082,9 +12506,7 @@ AstNode* Parser::ResolveIdent(TokenPosition ident_pos,
// the unresolved name to an instance field access, since a
// subclass might define a field with this name.
if (current_function().is_static()) {
- resolved = ThrowNoSuchMethodError(ident_pos,
- current_class(),
- ident,
+ resolved = ThrowNoSuchMethodError(ident_pos, current_class(), ident,
NULL, // No arguments.
InvocationMirror::kStatic,
InvocationMirror::kField,
@@ -13102,14 +12524,14 @@ AstNode* Parser::ResolveIdent(TokenPosition ident_pos,
}
} else if (primary->primary().IsClass()) {
const Class& type_class = Class::Cast(primary->primary());
- AbstractType& type = Type::ZoneHandle(Z,
- Type::New(type_class, TypeArguments::Handle(Z), primary_pos,
- Heap::kOld));
- type ^= ClassFinalizer::FinalizeType(
- current_class(), type, ClassFinalizer::kCanonicalize);
+ AbstractType& type =
+ Type::ZoneHandle(Z, Type::New(type_class, TypeArguments::Handle(Z),
+ primary_pos, Heap::kOld));
+ type ^= ClassFinalizer::FinalizeType(current_class(), type,
+ ClassFinalizer::kCanonicalize);
// Type may be malbounded, but not malformed.
ASSERT(!type.IsMalformed());
- resolved = new(Z) TypeNode(primary_pos, type);
+ resolved = new (Z) TypeNode(primary_pos, type);
}
}
return resolved;
@@ -13121,8 +12543,8 @@ RawAbstractType* Parser::ParseType(
bool allow_deferred_type,
bool consume_unresolved_prefix) {
LibraryPrefix& prefix = LibraryPrefix::Handle(Z);
- return ParseType(finalization, allow_deferred_type,
- consume_unresolved_prefix, &prefix);
+ return ParseType(finalization, allow_deferred_type, consume_unresolved_prefix,
+ &prefix);
}
// Parses type = [ident "."] ident ["<" type { "," type } ">"], then resolve and
@@ -13157,8 +12579,7 @@ RawAbstractType* Parser::ParseType(
// If we didn't see a valid prefix but the identifier is followed by
// a period and another identifier, consume the qualified identifier
// and create a malformed type.
- if (consume_unresolved_prefix &&
- prefix->IsNull() &&
+ if (consume_unresolved_prefix && prefix->IsNull() &&
(CurrentToken() == Token::kPERIOD) &&
(Token::IsIdentifier(LookaheadToken(1)))) {
if (!is_top_level_ && (current_block_ != NULL)) {
@@ -13176,24 +12597,19 @@ RawAbstractType* Parser::ParseType(
ParseTypeArguments(ClassFinalizer::kIgnore);
return ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- ident_pos,
- "qualified name '%s' does not refer to a type",
+ script_, ident_pos, "qualified name '%s' does not refer to a type",
qualified_name.ToCString());
}
// If parsing inside a local scope, check whether the type name
// is shadowed by a local declaration.
- if (!is_top_level_ &&
- (prefix->IsNull()) &&
+ if (!is_top_level_ && (prefix->IsNull()) &&
ResolveIdentInLocalScope(ident_pos, type_name, NULL, NULL)) {
// The type is malformed. Skip over its type arguments.
ParseTypeArguments(ClassFinalizer::kIgnore);
return ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- ident_pos,
- "using '%s' in this context is invalid",
+ script_, ident_pos, "using '%s' in this context is invalid",
type_name.ToCString());
}
if ((!FLAG_load_deferred_eagerly || !allow_deferred_type) &&
@@ -13209,16 +12625,14 @@ RawAbstractType* Parser::ParseType(
// loaded when finalization is requested, return a malformed type.
// Otherwise, handle resolution below, as needed.
if (!allow_deferred_type ||
- (!prefix->is_loaded()
- && (finalization > ClassFinalizer::kResolveTypeParameters))) {
+ (!prefix->is_loaded() &&
+ (finalization > ClassFinalizer::kResolveTypeParameters))) {
ParseTypeArguments(ClassFinalizer::kIgnore);
return ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- ident_pos,
- !prefix->is_loaded() && allow_deferred_type
- ? "deferred type '%s.%s' is not yet loaded"
- : "using deferred type '%s.%s' is invalid",
+ script_, ident_pos, !prefix->is_loaded() && allow_deferred_type
+ ? "deferred type '%s.%s' is not yet loaded"
+ : "using deferred type '%s.%s' is invalid",
String::Handle(Z, prefix->name()).ToCString(),
type_name.ToCString());
}
@@ -13229,8 +12643,8 @@ RawAbstractType* Parser::ParseType(
if (finalization != ClassFinalizer::kIgnore) {
type_class = UnresolvedClass::New(*prefix, type_name, ident_pos);
}
- TypeArguments& type_arguments = TypeArguments::Handle(
- Z, ParseTypeArguments(finalization));
+ TypeArguments& type_arguments =
+ TypeArguments::Handle(Z, ParseTypeArguments(finalization));
if (finalization == ClassFinalizer::kIgnore) {
return Type::DynamicType();
}
@@ -13247,7 +12661,8 @@ RawAbstractType* Parser::ParseType(
void Parser::CheckConstructorCallTypeArguments(
- TokenPosition pos, const Function& constructor,
+ TokenPosition pos,
+ const Function& constructor,
const TypeArguments& type_arguments) {
if (!type_arguments.IsNull()) {
const Class& constructor_class = Class::Handle(Z, constructor.Owner());
@@ -13279,7 +12694,7 @@ AstNode* Parser::ParseListLiteral(TokenPosition type_pos,
Instance& existing_const = Instance::ZoneHandle(Z);
if (GetCachedConstant(literal_pos, &existing_const)) {
SkipListLiteral();
- return new(Z) LiteralNode(literal_pos, existing_const);
+ return new (Z) LiteralNode(literal_pos, existing_const);
}
}
@@ -13296,7 +12711,7 @@ AstNode* Parser::ParseListLiteral(TokenPosition type_pos,
// List literals take a single type argument.
if (list_type_arguments.Length() == 1) {
element_type = list_type_arguments.TypeAt(0);
- ASSERT(!element_type.IsMalformed()); // Would be mapped to dynamic.
+ ASSERT(!element_type.IsMalformed()); // Would be mapped to dynamic.
ASSERT(!element_type.IsMalbounded()); // No declared bound in List.
if (element_type.IsDynamicType()) {
list_type_arguments = TypeArguments::null();
@@ -13317,10 +12732,10 @@ AstNode* Parser::ParseListLiteral(TokenPosition type_pos,
}
ASSERT(list_type_arguments.IsNull() || (list_type_arguments.Length() == 1));
const Class& array_class = Class::Handle(Z, I->object_store()->array_class());
- Type& type = Type::ZoneHandle(Z,
- Type::New(array_class, list_type_arguments, type_pos, Heap::kOld));
- type ^= ClassFinalizer::FinalizeType(
- current_class(), type, ClassFinalizer::kCanonicalize);
+ Type& type = Type::ZoneHandle(
+ Z, Type::New(array_class, list_type_arguments, type_pos, Heap::kOld));
+ type ^= ClassFinalizer::FinalizeType(current_class(), type,
+ ClassFinalizer::kCanonicalize);
GrowableArray<AstNode*> element_list;
// Parse the list elements. Note: there may be an optional extra
// comma after the last element.
@@ -13329,13 +12744,9 @@ AstNode* Parser::ParseListLiteral(TokenPosition type_pos,
while (CurrentToken() != Token::kRBRACK) {
const TokenPosition element_pos = TokenPos();
AstNode* element = ParseExpr(is_const, kConsumeCascades);
- if (I->type_checks() &&
- !is_const &&
- !element_type.IsDynamicType()) {
- element = new(Z) AssignableNode(element_pos,
- element,
- element_type,
- Symbols::ListLiteralElement());
+ if (I->type_checks() && !is_const && !element_type.IsDynamicType()) {
+ element = new (Z) AssignableNode(element_pos, element, element_type,
+ Symbols::ListLiteralElement());
}
element_list.Add(element);
if (CurrentToken() == Token::kCOMMA) {
@@ -13351,10 +12762,10 @@ AstNode* Parser::ParseListLiteral(TokenPosition type_pos,
if (is_const) {
// Allocate and initialize the const list at compile time.
if ((element_list.length() == 0) && list_type_arguments.IsNull()) {
- return new(Z) LiteralNode(literal_pos, Object::empty_array());
+ return new (Z) LiteralNode(literal_pos, Object::empty_array());
}
- Array& const_list = Array::ZoneHandle(Z,
- Array::New(element_list.length(), Heap::kOld));
+ Array& const_list =
+ Array::ZoneHandle(Z, Array::New(element_list.length(), Heap::kOld));
const_list.SetTypeArguments(
TypeArguments::Handle(Z, list_type_arguments.Canonicalize()));
Error& bound_error = Error::Handle(Z);
@@ -13363,23 +12774,19 @@ AstNode* Parser::ParseListLiteral(TokenPosition type_pos,
// Arguments have been evaluated to a literal value already.
ASSERT(elem->IsLiteralNode());
ASSERT(!is_top_level_); // We cannot check unresolved types.
- if (I->type_checks() &&
- !element_type.IsDynamicType() &&
+ if (I->type_checks() && !element_type.IsDynamicType() &&
(!elem->AsLiteralNode()->literal().IsNull() &&
!elem->AsLiteralNode()->literal().IsInstanceOf(
- element_type,
- TypeArguments::Handle(Z),
- &bound_error))) {
+ element_type, TypeArguments::Handle(Z), &bound_error))) {
// If the failure is due to a bound error, display it instead.
if (!bound_error.IsNull()) {
ReportError(bound_error);
} else {
- ReportError(elem->AsLiteralNode()->token_pos(),
- "list literal element at index %d must be "
- "a constant of type '%s'",
- i,
- String::Handle(Z,
- element_type.UserVisibleName()).ToCString());
+ ReportError(
+ elem->AsLiteralNode()->token_pos(),
+ "list literal element at index %d must be "
+ "a constant of type '%s'",
+ i, String::Handle(Z, element_type.UserVisibleName()).ToCString());
}
}
const_list.SetAt(i, elem->AsLiteralNode()->literal());
@@ -13387,19 +12794,18 @@ AstNode* Parser::ParseListLiteral(TokenPosition type_pos,
const_list.MakeImmutable();
const_list ^= TryCanonicalize(const_list, literal_pos);
CacheConstantValue(literal_pos, const_list);
- return new(Z) LiteralNode(literal_pos, const_list);
+ return new (Z) LiteralNode(literal_pos, const_list);
} else {
// Factory call at runtime.
const Class& factory_class =
Class::Handle(Z, Library::LookupCoreClass(Symbols::List()));
ASSERT(!factory_class.IsNull());
- const Function& factory_method = Function::ZoneHandle(Z,
- factory_class.LookupFactory(
- Library::PrivateCoreLibName(Symbols::ListLiteralFactory())));
+ const Function& factory_method = Function::ZoneHandle(
+ Z, factory_class.LookupFactory(
+ Library::PrivateCoreLibName(Symbols::ListLiteralFactory())));
ASSERT(!factory_method.IsNull());
if (!list_type_arguments.IsNull() &&
- !list_type_arguments.IsInstantiated() &&
- (FunctionLevel() > 0)) {
+ !list_type_arguments.IsInstantiated() && (FunctionLevel() > 0)) {
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
@@ -13409,28 +12815,25 @@ AstNode* Parser::ParseListLiteral(TokenPosition type_pos,
// type argument vector.
if (!factory_type_args.IsNull() && (factory_class.NumTypeArguments() > 1)) {
ASSERT(factory_type_args.Length() == 1);
- Type& factory_type = Type::Handle(Z, Type::New(
- factory_class, factory_type_args, type_pos, Heap::kOld));
+ Type& factory_type = Type::Handle(
+ Z, Type::New(factory_class, factory_type_args, type_pos, Heap::kOld));
factory_type ^= ClassFinalizer::FinalizeType(
current_class(), factory_type, ClassFinalizer::kFinalize);
factory_type_args = factory_type.arguments();
ASSERT(factory_type_args.Length() == factory_class.NumTypeArguments());
}
factory_type_args = factory_type_args.Canonicalize();
- ArgumentListNode* factory_param = new(Z) ArgumentListNode(
- literal_pos);
+ ArgumentListNode* factory_param = new (Z) ArgumentListNode(literal_pos);
if (element_list.length() == 0) {
LiteralNode* empty_array_literal =
- new(Z) LiteralNode(TokenPos(), Object::empty_array());
+ new (Z) LiteralNode(TokenPos(), Object::empty_array());
factory_param->Add(empty_array_literal);
} else {
- ArrayNode* list = new(Z) ArrayNode(TokenPos(), type, element_list);
+ ArrayNode* list = new (Z) ArrayNode(TokenPos(), type, element_list);
factory_param->Add(list);
}
- return CreateConstructorCallNode(literal_pos,
- factory_type_args,
- factory_method,
- factory_param);
+ return CreateConstructorCallNode(literal_pos, factory_type_args,
+ factory_method, factory_param);
}
}
@@ -13443,8 +12846,8 @@ ConstructorCallNode* Parser::CreateConstructorCallNode(
if (!type_arguments.IsNull() && !type_arguments.IsInstantiated()) {
EnsureExpressionTemp();
}
- return new(Z) ConstructorCallNode(
- token_pos, type_arguments, constructor, arguments);
+ return new (Z)
+ ConstructorCallNode(token_pos, type_arguments, constructor, arguments);
}
@@ -13485,7 +12888,7 @@ AstNode* Parser::ParseMapLiteral(TokenPosition type_pos,
Instance& existing_const = Instance::ZoneHandle(Z);
if (GetCachedConstant(literal_pos, &existing_const)) {
SkipMapLiteral();
- return new(Z) LiteralNode(literal_pos, existing_const);
+ return new (Z) LiteralNode(literal_pos, existing_const);
}
}
@@ -13534,11 +12937,9 @@ AstNode* Parser::ParseMapLiteral(TokenPosition type_pos,
const bool saved_mode = SetAllowFunctionLiterals(true);
const TokenPosition key_pos = TokenPos();
AstNode* key = ParseExpr(is_const, kConsumeCascades);
- if (I->type_checks() &&
- !is_const &&
- !key_type.IsDynamicType()) {
- key = new(Z) AssignableNode(
- key_pos, key, key_type, Symbols::ListLiteralElement());
+ if (I->type_checks() && !is_const && !key_type.IsDynamicType()) {
+ key = new (Z)
+ AssignableNode(key_pos, key, key_type, Symbols::ListLiteralElement());
}
if (is_const) {
ASSERT(key->IsLiteralNode());
@@ -13546,8 +12947,7 @@ AstNode* Parser::ParseMapLiteral(TokenPosition type_pos,
if (key_value.IsDouble()) {
ReportError(key_pos, "key value must not be of type double");
}
- if (!key_value.IsInteger() &&
- !key_value.IsString() &&
+ if (!key_value.IsInteger() && !key_value.IsString() &&
(key_value.clazz() != I->object_store()->symbol_class()) &&
ImplementsEqualOperator(Z, key_value)) {
ReportError(key_pos, "key value must not implement operator ==");
@@ -13557,11 +12957,9 @@ AstNode* Parser::ParseMapLiteral(TokenPosition type_pos,
const TokenPosition value_pos = TokenPos();
AstNode* value = ParseExpr(is_const, kConsumeCascades);
SetAllowFunctionLiterals(saved_mode);
- if (I->type_checks() &&
- !is_const &&
- !value_type.IsDynamicType()) {
- value = new(Z) AssignableNode(
- value_pos, value, value_type, Symbols::ListLiteralElement());
+ if (I->type_checks() && !is_const && !value_type.IsDynamicType()) {
+ value = new (Z) AssignableNode(value_pos, value, value_type,
+ Symbols::ListLiteralElement());
}
AddKeyValuePair(&kv_pairs_list, is_const, key, value);
@@ -13600,20 +12998,17 @@ AstNode* Parser::ParseMapLiteral(TokenPosition type_pos,
if (!arg_type.IsDynamicType() &&
(!arg->AsLiteralNode()->literal().IsNull() &&
!arg->AsLiteralNode()->literal().IsInstanceOf(
- arg_type,
- Object::null_type_arguments(),
- &bound_error))) {
+ arg_type, Object::null_type_arguments(), &bound_error))) {
// If the failure is due to a bound error, display it.
if (!bound_error.IsNull()) {
ReportError(bound_error);
} else {
- ReportError(arg->AsLiteralNode()->token_pos(),
- "map literal %s at index %d must be "
- "a constant of type '%s'",
- ((i % 2) == 0) ? "key" : "value",
- i >> 1,
- String::Handle(Z,
- arg_type.UserVisibleName()).ToCString());
+ ReportError(
+ arg->AsLiteralNode()->token_pos(),
+ "map literal %s at index %d must be "
+ "a constant of type '%s'",
+ ((i % 2) == 0) ? "key" : "value", i >> 1,
+ String::Handle(Z, arg_type.UserVisibleName()).ToCString());
}
}
}
@@ -13623,44 +13018,40 @@ AstNode* Parser::ParseMapLiteral(TokenPosition type_pos,
key_value_array ^= TryCanonicalize(key_value_array, TokenPos());
// Construct the map object.
- const Class& immutable_map_class = Class::Handle(Z,
- Library::LookupCoreClass(Symbols::ImmutableMap()));
+ const Class& immutable_map_class =
+ Class::Handle(Z, Library::LookupCoreClass(Symbols::ImmutableMap()));
ASSERT(!immutable_map_class.IsNull());
// If the immutable map class extends other parameterized classes, we need
// to adjust the type argument vector. This is currently not the case.
ASSERT(immutable_map_class.NumTypeArguments() == 2);
- ArgumentListNode* constr_args = new(Z) ArgumentListNode(TokenPos());
- constr_args->Add(new(Z) LiteralNode(literal_pos, key_value_array));
- const Function& map_constr =
- Function::ZoneHandle(Z, immutable_map_class.LookupConstructor(
- Library::PrivateCoreLibName(Symbols::ImmutableMapConstructor())));
+ ArgumentListNode* constr_args = new (Z) ArgumentListNode(TokenPos());
+ constr_args->Add(new (Z) LiteralNode(literal_pos, key_value_array));
+ const Function& map_constr = Function::ZoneHandle(
+ Z, immutable_map_class.LookupConstructor(Library::PrivateCoreLibName(
+ Symbols::ImmutableMapConstructor())));
ASSERT(!map_constr.IsNull());
- const Object& constructor_result = Object::Handle(Z,
- EvaluateConstConstructorCall(immutable_map_class,
- map_type_arguments,
- map_constr,
- constr_args));
+ const Object& constructor_result = Object::Handle(
+ Z, EvaluateConstConstructorCall(immutable_map_class, map_type_arguments,
+ map_constr, constr_args));
if (constructor_result.IsUnhandledException()) {
- ReportErrors(Error::Cast(constructor_result),
- script_, literal_pos,
+ ReportErrors(Error::Cast(constructor_result), script_, literal_pos,
"error executing const Map constructor");
} else {
const Instance& const_instance = Instance::Cast(constructor_result);
CacheConstantValue(literal_pos, const_instance);
- return new(Z) LiteralNode(
- literal_pos, Instance::ZoneHandle(Z, const_instance.raw()));
+ return new (Z) LiteralNode(literal_pos,
+ Instance::ZoneHandle(Z, const_instance.raw()));
}
} else {
// Factory call at runtime.
const Class& factory_class =
Class::Handle(Z, Library::LookupCoreClass(Symbols::Map()));
ASSERT(!factory_class.IsNull());
- const Function& factory_method = Function::ZoneHandle(Z,
- factory_class.LookupFactory(
- Library::PrivateCoreLibName(Symbols::MapLiteralFactory())));
+ const Function& factory_method = Function::ZoneHandle(
+ Z, factory_class.LookupFactory(
+ Library::PrivateCoreLibName(Symbols::MapLiteralFactory())));
ASSERT(!factory_method.IsNull());
- if (!map_type_arguments.IsNull() &&
- !map_type_arguments.IsInstantiated() &&
+ if (!map_type_arguments.IsNull() && !map_type_arguments.IsInstantiated() &&
(FunctionLevel() > 0)) {
// Make sure that the instantiator is captured.
CaptureInstantiator();
@@ -13671,34 +13062,30 @@ AstNode* Parser::ParseMapLiteral(TokenPosition type_pos,
// type argument vector.
if (!factory_type_args.IsNull() && (factory_class.NumTypeArguments() > 2)) {
ASSERT(factory_type_args.Length() == 2);
- Type& factory_type = Type::Handle(Z, Type::New(
- factory_class, factory_type_args, type_pos, Heap::kOld));
+ Type& factory_type = Type::Handle(
+ Z, Type::New(factory_class, factory_type_args, type_pos, Heap::kOld));
factory_type ^= ClassFinalizer::FinalizeType(
current_class(), factory_type, ClassFinalizer::kFinalize);
factory_type_args = factory_type.arguments();
ASSERT(factory_type_args.Length() == factory_class.NumTypeArguments());
}
factory_type_args = factory_type_args.Canonicalize();
- ArgumentListNode* factory_param = new(Z) ArgumentListNode(literal_pos);
+ ArgumentListNode* factory_param = new (Z) ArgumentListNode(literal_pos);
// The kv_pair array is temporary and of element type dynamic. It is passed
// to the factory to initialize a properly typed map. Pass a pre-allocated
// array for the common empty map literal case.
if (kv_pairs_list.length() == 0) {
LiteralNode* empty_array_literal =
- new(Z) LiteralNode(TokenPos(), Object::empty_array());
+ new (Z) LiteralNode(TokenPos(), Object::empty_array());
factory_param->Add(empty_array_literal);
} else {
- ArrayNode* kv_pairs = new(Z) ArrayNode(
- TokenPos(),
- Type::ZoneHandle(Z, Type::ArrayType()),
- kv_pairs_list);
+ ArrayNode* kv_pairs = new (Z) ArrayNode(
+ TokenPos(), Type::ZoneHandle(Z, Type::ArrayType()), kv_pairs_list);
factory_param->Add(kv_pairs);
}
- return CreateConstructorCallNode(literal_pos,
- factory_type_args,
- factory_method,
- factory_param);
+ return CreateConstructorCallNode(literal_pos, factory_type_args,
+ factory_method, factory_param);
}
UNREACHABLE();
return NULL;
@@ -13713,15 +13100,14 @@ AstNode* Parser::ParseCompoundLiteral() {
ConsumeToken();
}
const TokenPosition type_pos = TokenPos();
- TypeArguments& type_arguments = TypeArguments::Handle(Z,
- ParseTypeArguments(ClassFinalizer::kCanonicalize));
+ TypeArguments& type_arguments = TypeArguments::Handle(
+ Z, ParseTypeArguments(ClassFinalizer::kCanonicalize));
// Malformed type arguments are mapped to dynamic, so we will not encounter
// them here.
// Map and List interfaces do not declare bounds on their type parameters, so
// we will not see malbounded type arguments here.
AstNode* primary = NULL;
- if ((CurrentToken() == Token::kLBRACK) ||
- (CurrentToken() == Token::kINDEX)) {
+ if ((CurrentToken() == Token::kLBRACK) || (CurrentToken() == Token::kINDEX)) {
primary = ParseListLiteral(type_pos, is_const, type_arguments);
} else if (CurrentToken() == Token::kLBRACE) {
primary = ParseMapLiteral(type_pos, is_const, type_arguments);
@@ -13758,35 +13144,32 @@ AstNode* Parser::ParseSymbolLiteral() {
Instance& symbol_instance = Instance::ZoneHandle(Z);
if (GetCachedConstant(symbol_pos, &symbol_instance)) {
- return new(Z) LiteralNode(symbol_pos, symbol_instance);
+ return new (Z) LiteralNode(symbol_pos, symbol_instance);
}
// Call Symbol class constructor to create a symbol instance.
const Class& symbol_class = Class::Handle(I->object_store()->symbol_class());
ASSERT(!symbol_class.IsNull());
- ArgumentListNode* constr_args = new(Z) ArgumentListNode(symbol_pos);
- constr_args->Add(new(Z) LiteralNode(symbol_pos, symbol));
- const Function& constr = Function::ZoneHandle(Z,
- symbol_class.LookupConstructor(Symbols::SymbolCtor()));
+ ArgumentListNode* constr_args = new (Z) ArgumentListNode(symbol_pos);
+ constr_args->Add(new (Z) LiteralNode(symbol_pos, symbol));
+ const Function& constr = Function::ZoneHandle(
+ Z, symbol_class.LookupConstructor(Symbols::SymbolCtor()));
ASSERT(!constr.IsNull());
- const Object& result = Object::Handle(Z,
- EvaluateConstConstructorCall(symbol_class,
- TypeArguments::Handle(Z),
- constr,
- constr_args));
+ const Object& result = Object::Handle(
+ Z, EvaluateConstConstructorCall(symbol_class, TypeArguments::Handle(Z),
+ constr, constr_args));
if (result.IsUnhandledException()) {
- ReportErrors(Error::Cast(result),
- script_, symbol_pos,
+ ReportErrors(Error::Cast(result), script_, symbol_pos,
"error executing const Symbol constructor");
}
symbol_instance ^= result.raw();
CacheConstantValue(symbol_pos, symbol_instance);
- return new(Z) LiteralNode(symbol_pos, symbol_instance);
+ return new (Z) LiteralNode(symbol_pos, symbol_instance);
}
-RawFunction* Parser::BuildConstructorClosureFunction(
- const Function& ctr, TokenPosition token_pos) {
+RawFunction* Parser::BuildConstructorClosureFunction(const Function& ctr,
+ TokenPosition token_pos) {
ASSERT(ctr.kind() == RawFunction::kConstructor);
Function& closure = Function::Handle(Z);
closure = I->LookupClosureFunction(innermost_function(), token_pos);
@@ -13796,12 +13179,11 @@ RawFunction* Parser::BuildConstructorClosureFunction(
}
String& closure_name = String::Handle(Z, ctr.name());
- closure_name = Symbols::FromConcat(T,
- Symbols::ConstructorClosurePrefix(), closure_name);
+ closure_name =
+ Symbols::FromConcat(T, Symbols::ConstructorClosurePrefix(), closure_name);
ParamList params;
- params.AddFinalParameter(token_pos,
- &Symbols::ClosureParameter(),
+ params.AddFinalParameter(token_pos, &Symbols::ClosureParameter(),
&Object::dynamic_type());
ParseFormalParameters(ctr, &params);
@@ -13809,8 +13191,7 @@ RawFunction* Parser::BuildConstructorClosureFunction(
// Replace the types parsed from the constructor.
params.EraseParameterTypes();
- closure = Function::NewClosureFunction(closure_name,
- innermost_function(),
+ closure = Function::NewClosureFunction(closure_name, innermost_function(),
token_pos);
closure.set_is_generated_body(true);
closure.set_is_debuggable(false);
@@ -13837,8 +13218,8 @@ static String& BuildConstructorName(Thread* thread,
// unnamed constructor for class 'A' is labeled 'A.'.
// This convention prevents users from explicitly calling constructors.
Zone* zone = thread->zone();
- String& constructor_name = String::Handle(zone,
- Symbols::FromDot(thread, type_class_name));
+ String& constructor_name =
+ String::Handle(zone, Symbols::FromDot(thread, type_class_name));
if (named_constructor != NULL) {
constructor_name =
Symbols::FromConcat(thread, constructor_name, *named_constructor);
@@ -13861,11 +13242,10 @@ void Parser::ParseConstructorClosurization(Function* constructor,
const bool consume_unresolved_prefix =
(la3 == Token::kLT) || (la3 == Token::kPERIOD) || (la3 == Token::kHASH);
LibraryPrefix& prefix = LibraryPrefix::ZoneHandle(Z);
- AbstractType& type = AbstractType::Handle(Z,
- ParseType(ClassFinalizer::kCanonicalizeWellFormed,
- true, // allow deferred type
- consume_unresolved_prefix,
- &prefix));
+ AbstractType& type =
+ AbstractType::Handle(Z, ParseType(ClassFinalizer::kCanonicalizeWellFormed,
+ true, // allow deferred type
+ consume_unresolved_prefix, &prefix));
// A constructor tear-off closure can only have been created for a
// type that is loaded.
ASSERT(prefix.IsNull() || prefix.is_loaded());
@@ -13880,8 +13260,8 @@ void Parser::ParseConstructorClosurization(Function* constructor,
Class& type_class = Class::Handle(Z, type.type_class());
String& type_class_name = String::Handle(Z, type_class.Name());
*type_arguments = type.arguments();
- String& constructor_name = BuildConstructorName(T,
- type_class_name, named_constructor);
+ String& constructor_name =
+ BuildConstructorName(T, type_class_name, named_constructor);
*constructor = type_class.LookupConstructor(constructor_name);
if (constructor->IsNull()) {
*constructor = type_class.LookupFactory(constructor_name);
@@ -13892,8 +13272,7 @@ void Parser::ParseConstructorClosurization(Function* constructor,
ASSERT(!type.IsMalformedOrMalbounded());
if (!type.IsInstantiated()) {
Error& error = Error::Handle(Z);
- type ^= type.InstantiateFrom(*type_arguments,
- &error,
+ type ^= type.InstantiateFrom(*type_arguments, &error,
NULL, // instantiation_trail
NULL, // bound_trail
Heap::kOld);
@@ -13922,21 +13301,17 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
(la3 == Token::kLT) || (la3 == Token::kPERIOD) || (la3 == Token::kHASH);
LibraryPrefix& prefix = LibraryPrefix::ZoneHandle(Z);
- AbstractType& type = AbstractType::ZoneHandle(Z,
- ParseType(ClassFinalizer::kCanonicalizeWellFormed,
- allow_deferred_type,
- consume_unresolved_prefix,
- &prefix));
-
- if (FLAG_load_deferred_eagerly &&
- !prefix.IsNull() && prefix.is_deferred_load() && !prefix.is_loaded()) {
+ AbstractType& type = AbstractType::ZoneHandle(
+ Z, ParseType(ClassFinalizer::kCanonicalizeWellFormed, allow_deferred_type,
+ consume_unresolved_prefix, &prefix));
+
+ if (FLAG_load_deferred_eagerly && !prefix.IsNull() &&
+ prefix.is_deferred_load() && !prefix.is_loaded()) {
// Add runtime check.
Type& malformed_type = Type::ZoneHandle(Z);
malformed_type = ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- type_pos,
- "deferred type '%s.%s' is not yet loaded",
+ script_, type_pos, "deferred type '%s.%s' is not yet loaded",
String::Handle(Z, prefix.name()).ToCString(),
String::Handle(type.Name()).ToCString());
// Note: Adding a statement to current block is a hack, parsing an
@@ -13950,13 +13325,11 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
// Replace the type with a malformed type.
type = ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- type_pos,
- "%s'%s' cannot be instantiated",
+ script_, type_pos, "%s'%s' cannot be instantiated",
type.IsTypeParameter() ? "type parameter " : "",
- type.IsTypeParameter() ?
- String::Handle(Z, type.UserVisibleName()).ToCString() :
- "dynamic");
+ type.IsTypeParameter()
+ ? String::Handle(Z, type.UserVisibleName()).ToCString()
+ : "dynamic");
}
// Attempting to instantiate an enum type is a compile-time error.
Class& type_class = Class::Handle(Z, type.type_class());
@@ -13994,7 +13367,7 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
} else {
// Allocate dummy node with no arguments so we don't have to deal
// with the NULL corner case below.
- arguments = new(Z) ArgumentListNode(TokenPos());
+ arguments = new (Z) ArgumentListNode(TokenPos());
}
// Parsing is complete, so we can return a throw in case of a malformed or
@@ -14006,7 +13379,7 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
}
if (arguments->length() > 0) {
// Evaluate arguments for side-effects and throw.
- LetNode* error_result = new(Z) LetNode(type_pos);
+ LetNode* error_result = new (Z) LetNode(type_pos);
for (intptr_t i = 0; i < arguments->length(); ++i) {
error_result->AddNode(arguments->NodeAt(i));
}
@@ -14030,10 +13403,10 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
AbstractType& type_bound = AbstractType::ZoneHandle(Z);
// Make sure that an appropriate constructor exists.
- String& constructor_name = BuildConstructorName(T,
- type_class_name, named_constructor);
- Function& constructor = Function::ZoneHandle(Z,
- type_class.LookupConstructor(constructor_name));
+ String& constructor_name =
+ BuildConstructorName(T, type_class_name, named_constructor);
+ Function& constructor =
+ Function::ZoneHandle(Z, type_class.LookupConstructor(constructor_name));
if (constructor.IsNull()) {
constructor = type_class.LookupFactory(constructor_name);
if (constructor.IsNull()) {
@@ -14044,20 +13417,16 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
if (is_const) {
type = ClassFinalizer::NewFinalizedMalformedType(
Error::Handle(Z), // No previous error.
- script_,
- call_pos,
+ script_, call_pos,
"class '%s' has no constructor or factory named '%s'",
String::Handle(Z, type_class.Name()).ToCString(),
external_constructor_name.ToCString());
ReportError(Error::Handle(Z, type.error()));
}
- return ThrowNoSuchMethodError(call_pos,
- type_class,
- external_constructor_name,
- arguments,
- InvocationMirror::kConstructor,
- InvocationMirror::kMethod,
- NULL); // No existing function.
+ return ThrowNoSuchMethodError(
+ call_pos, type_class, external_constructor_name, arguments,
+ InvocationMirror::kConstructor, InvocationMirror::kMethod,
+ NULL); // No existing function.
} else if (constructor.IsRedirectingFactory()) {
ClassFinalizer::ResolveRedirectingFactory(type_class, constructor);
Type& redirect_type = Type::ZoneHandle(Z, constructor.RedirectionType());
@@ -14066,17 +13435,14 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
// The type arguments of the redirection type are instantiated from the
// type arguments of the parsed type of the 'new' or 'const' expression.
Error& error = Error::Handle(Z);
- redirect_type ^= redirect_type.InstantiateFrom(
- type_arguments,
- &error,
- NULL, // instantiation_trail
- NULL, // bound_trail
- Heap::kOld);
+ redirect_type ^=
+ redirect_type.InstantiateFrom(type_arguments, &error,
+ NULL, // instantiation_trail
+ NULL, // bound_trail
+ Heap::kOld);
if (!error.IsNull()) {
redirect_type = ClassFinalizer::NewFinalizedMalformedType(
- error,
- script_,
- call_pos,
+ error, script_, call_pos,
"redirecting factory type '%s' cannot be instantiated",
String::Handle(Z, redirect_type.UserVisibleName()).ToCString());
}
@@ -14097,9 +13463,7 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
parsed_function()->AddDeferredPrefix(prefix);
}
redirect_type = ClassFinalizer::NewFinalizedMalformedType(
- Error::Handle(Z),
- script_,
- call_pos,
+ Error::Handle(Z), script_, call_pos,
"redirection type '%s' is not loaded",
String::Handle(Z, redirect_type.UserVisibleName()).ToCString());
}
@@ -14111,7 +13475,7 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
return ThrowTypeError(redirect_type.token_pos(), redirect_type);
}
if (I->type_checks() &&
- !redirect_type.IsSubtypeOf(type, NULL, NULL, Heap::kOld)) {
+ !redirect_type.IsSubtypeOf(type, NULL, NULL, Heap::kOld)) {
// Additional type checking of the result is necessary.
type_bound = type.raw();
}
@@ -14136,28 +13500,27 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
// a dynamic error to instantiate an abstract class.
if (type_class.is_abstract() && !constructor.IsFactory()) {
// Evaluate arguments before throwing.
- LetNode* result = new(Z) LetNode(call_pos);
+ LetNode* result = new (Z) LetNode(call_pos);
for (intptr_t i = 0; i < arguments->length(); ++i) {
result->AddNode(arguments->NodeAt(i));
}
- ArgumentListNode* error_arguments = new(Z) ArgumentListNode(type_pos);
- error_arguments->Add(new(Z) LiteralNode(
- TokenPos(), Integer::ZoneHandle(Z, Integer::New(type_pos.value(),
- Heap::kOld))));
- error_arguments->Add(new(Z) LiteralNode(
+ ArgumentListNode* error_arguments = new (Z) ArgumentListNode(type_pos);
+ error_arguments->Add(new (Z) LiteralNode(
+ TokenPos(),
+ Integer::ZoneHandle(Z, Integer::New(type_pos.value(), Heap::kOld))));
+ error_arguments->Add(new (Z) LiteralNode(
TokenPos(), String::ZoneHandle(Z, type_class_name.raw())));
- result->AddNode(
- MakeStaticCall(Symbols::AbstractClassInstantiationError(),
- Library::PrivateCoreLibName(Symbols::ThrowNew()),
- error_arguments));
+ result->AddNode(MakeStaticCall(
+ Symbols::AbstractClassInstantiationError(),
+ Library::PrivateCoreLibName(Symbols::ThrowNew()), error_arguments));
return result;
}
type_arguments ^= type_arguments.Canonicalize();
if (is_tearoff_expression) {
- const Function& tearoff_func = Function::ZoneHandle(Z,
- BuildConstructorClosureFunction(constructor, new_pos));
+ const Function& tearoff_func = Function::ZoneHandle(
+ Z, BuildConstructorClosureFunction(constructor, new_pos));
// Local functions normally get parsed when the enclosing function is
// compiled. Since constructor tearoff closures don't get parsed here,
@@ -14167,20 +13530,19 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
OpenFunctionBlock(tearoff_func);
// If there are type arguments in the tearoff expression that are
// not yet instantiated, capture the instantiator.
- if (IsInstantiatorRequired() &&
- !type_arguments.IsNull() && !type_arguments.IsInstantiated()) {
+ if (IsInstantiatorRequired() && !type_arguments.IsNull() &&
+ !type_arguments.IsInstantiated()) {
CaptureInstantiator();
}
SequenceNode* tearoff_body = CloseBlock();
ClosureNode* closure_obj =
- new(Z) ClosureNode(new_pos, tearoff_func, NULL, tearoff_body->scope());
+ new (Z) ClosureNode(new_pos, tearoff_func, NULL, tearoff_body->scope());
return closure_obj;
}
ASSERT(!is_tearoff_expression);
String& error_message = String::Handle(Z);
- if (!constructor.AreValidArguments(arguments_length,
- arguments->names(),
+ if (!constructor.AreValidArguments(arguments_length, arguments->names(),
&error_message)) {
const String& external_constructor_name =
(named_constructor ? constructor_name : type_class_name);
@@ -14192,13 +13554,10 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
String::Handle(Z, type_class.Name()).ToCString(),
error_message.ToCString());
}
- return ThrowNoSuchMethodError(call_pos,
- type_class,
- external_constructor_name,
- arguments,
+ return ThrowNoSuchMethodError(call_pos, type_class,
+ external_constructor_name, arguments,
InvocationMirror::kConstructor,
- InvocationMirror::kMethod,
- &constructor);
+ InvocationMirror::kMethod, &constructor);
}
// Return a throw in case of a malformed or malbounded type or report a
@@ -14216,42 +13575,37 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
if (!constructor.is_const()) {
const String& external_constructor_name =
(named_constructor ? constructor_name : type_class_name);
- ReportError("non-const constructor '%s' cannot be used in "
- "const object creation",
- external_constructor_name.ToCString());
+ ReportError(
+ "non-const constructor '%s' cannot be used in "
+ "const object creation",
+ external_constructor_name.ToCString());
}
Instance& const_instance = Instance::ZoneHandle(Z);
if (GetCachedConstant(new_pos, &const_instance)) {
// Cache hit, nothing else to do.
} else {
- Object& constructor_result = Object::Handle(Z,
- EvaluateConstConstructorCall(type_class,
- type_arguments,
- constructor,
- arguments));
+ Object& constructor_result = Object::Handle(
+ Z, EvaluateConstConstructorCall(type_class, type_arguments,
+ constructor, arguments));
if (constructor_result.IsUnhandledException()) {
// It's a compile-time error if invocation of a const constructor
// call fails.
- ReportErrors(Error::Cast(constructor_result),
- script_, new_pos,
+ ReportErrors(Error::Cast(constructor_result), script_, new_pos,
"error while evaluating const constructor");
}
const_instance ^= constructor_result.raw();
CacheConstantValue(new_pos, const_instance);
}
- new_object = new(Z) LiteralNode(new_pos, const_instance);
+ new_object = new (Z) LiteralNode(new_pos, const_instance);
if (!type_bound.IsNull()) {
ASSERT(!type_bound.IsMalformed());
Error& bound_error = Error::Handle(Z);
ASSERT(!is_top_level_); // We cannot check unresolved types.
- if (!const_instance.IsInstanceOf(type_bound,
- TypeArguments::Handle(Z),
+ if (!const_instance.IsInstanceOf(type_bound, TypeArguments::Handle(Z),
&bound_error)) {
type_bound = ClassFinalizer::NewFinalizedMalformedType(
- bound_error,
- script_,
- new_pos,
+ bound_error, script_, new_pos,
"const factory result is not an instance of '%s'",
String::Handle(Z, type_bound.UserVisibleName()).ToCString());
new_object = ThrowTypeError(new_pos, type_bound);
@@ -14260,20 +13614,19 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
}
} else {
CheckConstructorCallTypeArguments(new_pos, constructor, type_arguments);
- if (!type_arguments.IsNull() &&
- !type_arguments.IsInstantiated() &&
+ if (!type_arguments.IsNull() && !type_arguments.IsInstantiated() &&
(FunctionLevel() > 0)) {
// Make sure that the instantiator is captured.
CaptureInstantiator();
}
// If the type argument vector is not instantiated, we verify in checked
// mode at runtime that it is within its declared bounds.
- new_object = CreateConstructorCallNode(
- new_pos, type_arguments, constructor, arguments);
+ new_object = CreateConstructorCallNode(new_pos, type_arguments, constructor,
+ arguments);
}
if (!type_bound.IsNull()) {
- new_object = new(Z) AssignableNode(
- new_pos, new_object, type_bound, Symbols::FactoryResult());
+ new_object = new (Z) AssignableNode(new_pos, new_object, type_bound,
+ Symbols::FactoryResult());
}
return new_object;
}
@@ -14282,16 +13635,17 @@ AstNode* Parser::ParseNewOperator(Token::Kind op_kind) {
String& Parser::Interpolate(const GrowableArray<AstNode*>& values) {
NoReloadScope no_reload_scope(isolate(), thread());
NoOOBMessageScope no_msg_scope(thread());
- const Class& cls = Class::Handle(
- Z, Library::LookupCoreClass(Symbols::StringBase()));
+ const Class& cls =
+ Class::Handle(Z, Library::LookupCoreClass(Symbols::StringBase()));
ASSERT(!cls.IsNull());
- const Function& func = Function::Handle(Z, cls.LookupStaticFunction(
- Library::PrivateCoreLibName(Symbols::Interpolate())));
+ const Function& func = Function::Handle(
+ Z, cls.LookupStaticFunction(
+ Library::PrivateCoreLibName(Symbols::Interpolate())));
ASSERT(!func.IsNull());
// Build the array of literal values to interpolate.
- const Array& value_arr = Array::Handle(Z,
- Array::New(values.length(), Heap::kOld));
+ const Array& value_arr =
+ Array::Handle(Z, Array::New(values.length(), Heap::kOld));
for (int i = 0; i < values.length(); i++) {
ASSERT(values[i]->IsLiteralNode());
value_arr.SetAt(i, values[i]->AsLiteralNode()->literal());
@@ -14326,11 +13680,10 @@ AstNode* Parser::ParseStringLiteral(bool allow_interpolation) {
const TokenPosition literal_start = TokenPos();
ASSERT(CurrentToken() == Token::kSTRING);
Token::Kind l1_token = LookaheadToken(1);
- if ((l1_token != Token::kSTRING) &&
- (l1_token != Token::kINTERPOL_VAR) &&
+ if ((l1_token != Token::kSTRING) && (l1_token != Token::kINTERPOL_VAR) &&
(l1_token != Token::kINTERPOL_START)) {
// Common case: no interpolation.
- primary = new(Z) LiteralNode(literal_start, *CurrentLiteral());
+ primary = new (Z) LiteralNode(literal_start, *CurrentLiteral());
ConsumeToken();
return primary;
}
@@ -14341,8 +13694,8 @@ AstNode* Parser::ParseStringLiteral(bool allow_interpolation) {
Instance& cached_string = Instance::Handle(Z);
if (GetCachedConstant(literal_start, &cached_string)) {
SkipStringLiteral();
- return new(Z) LiteralNode(literal_start,
- Instance::ZoneHandle(Z, cached_string.raw()));
+ return new (Z) LiteralNode(literal_start,
+ Instance::ZoneHandle(Z, cached_string.raw()));
}
bool is_compiletime_const = true;
@@ -14352,11 +13705,11 @@ AstNode* Parser::ParseStringLiteral(bool allow_interpolation) {
if (CurrentLiteral()->Length() > 0) {
// Only add non-empty string sections to the values list
// that will be concatenated.
- values_list.Add(new(Z) LiteralNode(TokenPos(), *CurrentLiteral()));
+ values_list.Add(new (Z) LiteralNode(TokenPos(), *CurrentLiteral()));
}
ConsumeToken();
while ((CurrentToken() == Token::kINTERPOL_VAR) ||
- (CurrentToken() == Token::kINTERPOL_START)) {
+ (CurrentToken() == Token::kINTERPOL_START)) {
if (!allow_interpolation) {
ReportError("string interpolation not allowed in this context");
}
@@ -14381,13 +13734,11 @@ AstNode* Parser::ParseStringLiteral(bool allow_interpolation) {
if (is_compiletime_const) {
const Object* const_expr = expr->EvalConstExpr();
if ((const_expr != NULL) &&
- (const_expr->IsNumber() ||
- const_expr->IsString() ||
- const_expr->IsBool() ||
- const_expr->IsNull())) {
+ (const_expr->IsNumber() || const_expr->IsString() ||
+ const_expr->IsBool() || const_expr->IsNull())) {
// Change expr into a literal.
- expr = new(Z) LiteralNode(expr_pos,
- EvaluateConstExpr(expr_pos, expr));
+ expr =
+ new (Z) LiteralNode(expr_pos, EvaluateConstExpr(expr_pos, expr));
} else {
is_compiletime_const = false;
}
@@ -14398,7 +13749,7 @@ AstNode* Parser::ParseStringLiteral(bool allow_interpolation) {
if (is_compiletime_const) {
if (has_interpolation) {
const String& interpolated_string = Interpolate(values_list);
- primary = new(Z) LiteralNode(literal_start, interpolated_string);
+ primary = new (Z) LiteralNode(literal_start, interpolated_string);
CacheConstantValue(literal_start, interpolated_string);
} else {
GrowableHandlePtrArray<const String> pieces(Z, values_list.length());
@@ -14407,18 +13758,16 @@ AstNode* Parser::ParseStringLiteral(bool allow_interpolation) {
ASSERT(part.IsString());
pieces.Add(String::Cast(part));
}
- const String& lit = String::ZoneHandle(Z,
- Symbols::FromConcatAll(T, pieces));
- primary = new(Z) LiteralNode(literal_start, lit);
+ const String& lit =
+ String::ZoneHandle(Z, Symbols::FromConcatAll(T, pieces));
+ primary = new (Z) LiteralNode(literal_start, lit);
// Caching of constant not necessary because the symbol lookup will
// find the value next time.
}
} else {
- ArrayNode* values = new(Z) ArrayNode(
- TokenPos(),
- Type::ZoneHandle(Z, Type::ArrayType()),
- values_list);
- primary = new(Z) StringInterpolateNode(TokenPos(), values);
+ ArrayNode* values = new (Z) ArrayNode(
+ TokenPos(), Type::ZoneHandle(Z, Type::ArrayType()), values_list);
+ primary = new (Z) StringInterpolateNode(TokenPos(), values);
}
return primary;
}
@@ -14441,7 +13790,7 @@ AstNode* Parser::ParsePrimary() {
if (!prefix.IsNull()) {
if (CurrentToken() == Token::kHASH) {
// Closurization of top-level entity in prefix scope.
- return new(Z) LiteralNode(qual_ident_pos, prefix);
+ return new (Z) LiteralNode(qual_ident_pos, prefix);
} else {
ExpectToken(Token::kPERIOD);
}
@@ -14450,15 +13799,15 @@ AstNode* Parser::ParsePrimary() {
ConsumeToken();
if (prefix.IsNull()) {
intptr_t primary_func_level = 0;
- ResolveIdentInLocalScope(
- qual_ident_pos, ident, &primary, &primary_func_level);
+ ResolveIdentInLocalScope(qual_ident_pos, ident, &primary,
+ &primary_func_level);
// Check whether the identifier is shadowed by a function type parameter.
if (!innermost_function().IsNull()) {
// TODO(regis): Shortcut this lookup if no generic functions in scope.
intptr_t type_param_func_level = FunctionLevel();
- TypeParameter& type_param = TypeParameter::ZoneHandle(Z,
- innermost_function().LookupTypeParameter(ident,
- &type_param_func_level));
+ TypeParameter& type_param = TypeParameter::ZoneHandle(
+ Z, innermost_function().LookupTypeParameter(
+ ident, &type_param_func_level));
if (!type_param.IsNull()) {
if ((primary == NULL) ||
(primary_func_level < type_param_func_level)) {
@@ -14468,17 +13817,17 @@ AstNode* Parser::ParsePrimary() {
// Make sure that the function instantiator is captured.
CaptureFunctionInstantiator();
}
- return new(Z) PrimaryNode(qual_ident_pos, type_param);
+ return new (Z) PrimaryNode(qual_ident_pos, type_param);
}
}
}
if (primary == NULL) {
// Check whether the identifier is a type parameter.
if (!current_class().IsNull()) {
- TypeParameter& type_param = TypeParameter::ZoneHandle(Z,
- current_class().LookupTypeParameter(ident));
+ TypeParameter& type_param = TypeParameter::ZoneHandle(
+ Z, current_class().LookupTypeParameter(ident));
if (!type_param.IsNull()) {
- return new(Z) PrimaryNode(qual_ident_pos, type_param);
+ return new (Z) PrimaryNode(qual_ident_pos, type_param);
}
}
// This is a non-local unqualified identifier so resolve the
@@ -14497,22 +13846,21 @@ AstNode* Parser::ParsePrimary() {
// interpret the unresolved identifier as an instance method or
// instance getter call when compiling an instance method.
if (primary == NULL) {
- if (prefix.is_deferred_load() &&
- ident.Equals(Symbols::LoadLibrary())) {
+ if (prefix.is_deferred_load() && ident.Equals(Symbols::LoadLibrary())) {
// Hack Alert: recognize special 'loadLibrary' call on the
// prefix object. The prefix is the primary. Rewind parser and
// let ParseSelectors() handle the loadLibrary call.
SetPosition(qual_ident_pos);
ConsumeToken(); // Prefix name.
- primary = new(Z) LiteralNode(qual_ident_pos, prefix);
+ primary = new (Z) LiteralNode(qual_ident_pos, prefix);
} else {
GrowableHandlePtrArray<const String> pieces(Z, 3);
pieces.Add(String::Handle(Z, prefix.name()));
pieces.Add(Symbols::Dot());
pieces.Add(ident);
- const String& qualified_name = String::ZoneHandle(Z,
- Symbols::FromConcatAll(T, pieces));
- primary = new(Z) PrimaryNode(qual_ident_pos, qualified_name);
+ const String& qualified_name =
+ String::ZoneHandle(Z, Symbols::FromConcatAll(T, pieces));
+ primary = new (Z) PrimaryNode(qual_ident_pos, qualified_name);
}
} else if (FLAG_load_deferred_eagerly && prefix.is_deferred_load()) {
// primary != NULL.
@@ -14520,22 +13868,19 @@ AstNode* Parser::ParsePrimary() {
pieces.Add(String::Handle(Z, prefix.name()));
pieces.Add(Symbols::Dot());
pieces.Add(ident);
- const String& qualified_name = String::ZoneHandle(Z,
- Symbols::FromConcatAll(T, pieces));
- InvocationMirror::Type call_type =
- CurrentToken() == Token::kLPAREN ?
- InvocationMirror::kMethod : InvocationMirror::kGetter;
+ const String& qualified_name =
+ String::ZoneHandle(Z, Symbols::FromConcatAll(T, pieces));
+ InvocationMirror::Type call_type = CurrentToken() == Token::kLPAREN
+ ? InvocationMirror::kMethod
+ : InvocationMirror::kGetter;
// Note: Adding a statement to current block is a hack, parsing an
// espression should have no side-effect.
current_block_->statements->Add(ThrowNoSuchMethodError(
- qual_ident_pos,
- current_class(),
- qualified_name,
- NULL, // No arguments.
- InvocationMirror::kTopLevel,
- call_type,
- NULL, // No existing function.
- &prefix));
+ qual_ident_pos, current_class(), qualified_name,
+ NULL, // No arguments.
+ InvocationMirror::kTopLevel, call_type,
+ NULL, // No existing function.
+ &prefix));
}
}
ASSERT(primary != NULL);
@@ -14544,20 +13889,20 @@ AstNode* Parser::ParsePrimary() {
if (local == NULL) {
ReportError("receiver 'this' is not in scope");
}
- primary = new(Z) LoadLocalNode(TokenPos(), local);
+ primary = new (Z) LoadLocalNode(TokenPos(), local);
ConsumeToken();
} else if (token == Token::kINTEGER) {
const Integer& literal = Integer::ZoneHandle(Z, CurrentIntegerLiteral());
- primary = new(Z) LiteralNode(TokenPos(), literal);
+ primary = new (Z) LiteralNode(TokenPos(), literal);
ConsumeToken();
} else if (token == Token::kTRUE) {
- primary = new(Z) LiteralNode(TokenPos(), Bool::True());
+ primary = new (Z) LiteralNode(TokenPos(), Bool::True());
ConsumeToken();
} else if (token == Token::kFALSE) {
- primary = new(Z) LiteralNode(TokenPos(), Bool::False());
+ primary = new (Z) LiteralNode(TokenPos(), Bool::False());
ConsumeToken();
} else if (token == Token::kNULL) {
- primary = new(Z) LiteralNode(TokenPos(), Object::null_instance());
+ primary = new (Z) LiteralNode(TokenPos(), Object::null_instance());
ConsumeToken();
} else if (token == Token::kLPAREN) {
ConsumeToken();
@@ -14570,7 +13915,7 @@ AstNode* Parser::ParsePrimary() {
if (double_value.IsNull()) {
ReportError("invalid double literal");
}
- primary = new(Z) LiteralNode(TokenPos(), double_value);
+ primary = new (Z) LiteralNode(TokenPos(), double_value);
ConsumeToken();
} else if (token == Token::kSTRING) {
primary = ParseStringLiteral(true);
@@ -14587,10 +13932,8 @@ AstNode* Parser::ParsePrimary() {
ConsumeToken();
primary = ParseNewOperator(Token::kCONST);
}
- } else if (token == Token::kLT ||
- token == Token::kLBRACK ||
- token == Token::kINDEX ||
- token == Token::kLBRACE) {
+ } else if (token == Token::kLT || token == Token::kLBRACK ||
+ token == Token::kINDEX || token == Token::kLBRACE) {
primary = ParseCompoundLiteral();
} else if (token == Token::kHASH) {
primary = ParseSymbolLiteral();
@@ -14614,13 +13957,13 @@ AstNode* Parser::ParsePrimary() {
primary = ParseSuperFieldAccess(ident, ident_pos);
}
} else if ((CurrentToken() == Token::kLBRACK) ||
- Token::CanBeOverloaded(CurrentToken()) ||
- (CurrentToken() == Token::kNE)) {
+ Token::CanBeOverloaded(CurrentToken()) ||
+ (CurrentToken() == Token::kNE)) {
primary = ParseSuperOperator();
} else if (CurrentToken() == Token::kQM_PERIOD) {
ReportError("super call or super getter may not use ?.");
} else {
- primary = new(Z) PrimaryNode(super_pos, Symbols::Super());
+ primary = new (Z) PrimaryNode(super_pos, Symbols::Super());
}
} else {
UnexpectedToken();
@@ -14638,7 +13981,7 @@ const Instance& Parser::EvaluateConstExpr(TokenPosition expr_pos,
if (expr->IsLiteralNode()) {
return expr->AsLiteralNode()->literal();
} else if (expr->IsLoadLocalNode() &&
- expr->AsLoadLocalNode()->local().IsConst()) {
+ expr->AsLoadLocalNode()->local().IsConst()) {
return *expr->AsLoadLocalNode()->local().ConstValue();
} else if (expr->IsLoadStaticFieldNode()) {
const Field& field = expr->AsLoadStaticFieldNode()->field();
@@ -14665,18 +14008,17 @@ const Instance& Parser::EvaluateConstExpr(TokenPosition expr_pos,
if (GetCachedConstant(expr_pos, &value)) {
return value;
}
- ReturnNode* ret = new(Z) ReturnNode(expr_pos, expr);
+ ReturnNode* ret = new (Z) ReturnNode(expr_pos, expr);
// Compile time constant expressions cannot reference anything from a
// local scope.
- LocalScope* empty_scope = new(Z) LocalScope(NULL, 0, 0);
- SequenceNode* seq = new(Z) SequenceNode(expr_pos, empty_scope);
+ LocalScope* empty_scope = new (Z) LocalScope(NULL, 0, 0);
+ SequenceNode* seq = new (Z) SequenceNode(expr_pos, empty_scope);
seq->Add(ret);
INC_STAT(thread_, num_execute_const, 1);
Object& result = Object::Handle(Z, Compiler::ExecuteOnce(seq));
if (result.IsError()) {
- ReportErrors(Error::Cast(result),
- script_, expr_pos,
+ ReportErrors(Error::Cast(result), script_, expr_pos,
"error evaluating constant expression");
}
ASSERT(result.IsInstance() || result.IsNull());
@@ -14795,8 +14137,7 @@ void Parser::SkipCompoundLiteral() {
if (CurrentToken() == Token::kLT) {
SkipTypeArguments();
}
- if ((CurrentToken() == Token::kLBRACK) ||
- (CurrentToken() == Token::kINDEX)) {
+ if ((CurrentToken() == Token::kLBRACK) || (CurrentToken() == Token::kINDEX)) {
SkipListLiteral();
} else if (CurrentToken() == Token::kLBRACE) {
SkipMapLiteral();
@@ -14935,7 +14276,7 @@ void Parser::SkipSelectors() {
ExpectIdentifier("identifier or [ expected after ..");
}
} else if ((current_token == Token::kPERIOD) ||
- (current_token == Token::kQM_PERIOD)) {
+ (current_token == Token::kQM_PERIOD)) {
ConsumeToken();
ExpectIdentifier("identifier expected");
} else if (current_token == Token::kLBRACK) {
@@ -14971,8 +14312,7 @@ void Parser::SkipPostfixExpr() {
void Parser::SkipUnaryExpr() {
- if (IsPrefixOperator(CurrentToken()) ||
- IsIncrementOperator(CurrentToken()) ||
+ if (IsPrefixOperator(CurrentToken()) || IsIncrementOperator(CurrentToken()) ||
IsAwaitKeyword()) {
ConsumeToken();
SkipUnaryExpr();
@@ -14987,7 +14327,7 @@ void Parser::SkipBinaryExpr() {
const int min_prec = Token::Precedence(Token::kIFNULL);
const int max_prec = Token::Precedence(Token::kMUL);
while (((min_prec <= Token::Precedence(CurrentToken())) &&
- (Token::Precedence(CurrentToken()) <= max_prec))) {
+ (Token::Precedence(CurrentToken()) <= max_prec))) {
if (CurrentToken() == Token::kIS) {
ConsumeToken();
if (CurrentToken() == Token::kNOT) {
« no previous file with comments | « runtime/vm/parser.h ('k') | runtime/vm/parser_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698