| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/parser.h" | 5 #include "vm/parser.h" |
| 6 | 6 |
| 7 #include "lib/invocation_mirror.h" | 7 #include "lib/invocation_mirror.h" |
| 8 #include "platform/utils.h" | 8 #include "platform/utils.h" |
| 9 #include "vm/ast_transformer.h" | 9 #include "vm/ast_transformer.h" |
| 10 #include "vm/bootstrap.h" | 10 #include "vm/bootstrap.h" |
| (...skipping 1041 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1052 intptr_t expr_pos = TokenPos(); | 1052 intptr_t expr_pos = TokenPos(); |
| 1053 AstNode* expr = ParseExpr(kAllowConst, kConsumeCascades); | 1053 AstNode* expr = ParseExpr(kAllowConst, kConsumeCascades); |
| 1054 ReturnNode* ret = new(Z) ReturnNode(expr_pos, expr); | 1054 ReturnNode* ret = new(Z) ReturnNode(expr_pos, expr); |
| 1055 current_block_->statements->Add(ret); | 1055 current_block_->statements->Add(ret); |
| 1056 return CloseBlock(); | 1056 return CloseBlock(); |
| 1057 } | 1057 } |
| 1058 | 1058 |
| 1059 | 1059 |
| 1060 ParsedFunction* Parser::ParseStaticFieldInitializer(const Field& field) { | 1060 ParsedFunction* Parser::ParseStaticFieldInitializer(const Field& field) { |
| 1061 ASSERT(field.is_static()); | 1061 ASSERT(field.is_static()); |
| 1062 ASSERT(field.value() == Object::transition_sentinel().raw()); | |
| 1063 Thread* thread = Thread::Current(); | 1062 Thread* thread = Thread::Current(); |
| 1064 // TODO(koda): Should there be a StackZone here? | 1063 // TODO(koda): Should there be a StackZone here? |
| 1065 Zone* zone = thread->zone(); | 1064 Zone* zone = thread->zone(); |
| 1066 | 1065 |
| 1067 const Class& script_cls = Class::Handle(zone, field.origin()); | 1066 const Class& script_cls = Class::Handle(zone, field.origin()); |
| 1068 const Script& script = Script::Handle(zone, script_cls.script()); | 1067 const Script& script = Script::Handle(zone, script_cls.script()); |
| 1069 | 1068 |
| 1070 const String& field_name = String::Handle(zone, field.name()); | 1069 const String& field_name = String::Handle(zone, field.name()); |
| 1071 String& init_name = String::Handle(zone, | 1070 String& init_name = String::Handle(zone, |
| 1072 String::Concat(Symbols::InitPrefix(), field_name)); | 1071 String::Concat(Symbols::InitPrefix(), field_name)); |
| (...skipping 4229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5302 } | 5301 } |
| 5303 if (CurrentToken() == Token::kASSIGN) { | 5302 if (CurrentToken() == Token::kASSIGN) { |
| 5304 ConsumeToken(); | 5303 ConsumeToken(); |
| 5305 Instance& field_value = Instance::Handle(Z, Object::sentinel().raw()); | 5304 Instance& field_value = Instance::Handle(Z, Object::sentinel().raw()); |
| 5306 bool has_simple_literal = false; | 5305 bool has_simple_literal = false; |
| 5307 if (LookaheadToken(1) == Token::kSEMICOLON) { | 5306 if (LookaheadToken(1) == Token::kSEMICOLON) { |
| 5308 has_simple_literal = IsSimpleLiteral(type, &field_value); | 5307 has_simple_literal = IsSimpleLiteral(type, &field_value); |
| 5309 } | 5308 } |
| 5310 SkipExpr(); | 5309 SkipExpr(); |
| 5311 field.set_value(field_value); | 5310 field.set_value(field_value); |
| 5311 field.set_has_initializer(true); |
| 5312 |
| 5312 if (!has_simple_literal) { | 5313 if (!has_simple_literal) { |
| 5313 // Create a static final getter. | 5314 // Create a static final getter. |
| 5314 String& getter_name = String::Handle(Z, Field::GetterSymbol(var_name)); | 5315 String& getter_name = String::Handle(Z, Field::GetterSymbol(var_name)); |
| 5315 getter = Function::New(getter_name, | 5316 getter = Function::New(getter_name, |
| 5316 RawFunction::kImplicitStaticFinalGetter, | 5317 RawFunction::kImplicitStaticFinalGetter, |
| 5317 is_static, | 5318 is_static, |
| 5318 is_const, | 5319 is_const, |
| 5319 /* is_abstract = */ false, | 5320 /* is_abstract = */ false, |
| 5320 /* is_external = */ false, | 5321 /* is_external = */ false, |
| 5321 /* is_native = */ false, | 5322 /* is_native = */ false, |
| (...skipping 8489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13811 void Parser::SkipQualIdent() { | 13812 void Parser::SkipQualIdent() { |
| 13812 ASSERT(IsIdentifier()); | 13813 ASSERT(IsIdentifier()); |
| 13813 ConsumeToken(); | 13814 ConsumeToken(); |
| 13814 if (CurrentToken() == Token::kPERIOD) { | 13815 if (CurrentToken() == Token::kPERIOD) { |
| 13815 ConsumeToken(); // Consume the kPERIOD token. | 13816 ConsumeToken(); // Consume the kPERIOD token. |
| 13816 ExpectIdentifier("identifier expected after '.'"); | 13817 ExpectIdentifier("identifier expected after '.'"); |
| 13817 } | 13818 } |
| 13818 } | 13819 } |
| 13819 | 13820 |
| 13820 } // namespace dart | 13821 } // namespace dart |
| OLD | NEW |