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

Side by Side Diff: runtime/vm/parser.cc

Issue 1376183002: VM: Replace CheckedHandle with Cast/Handle in some places. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/dart_entry.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 11191 matching lines...) Expand 10 before | Expand all | Expand 10 after
11202 } 11202 }
11203 PrimaryNode* primary = node->AsPrimaryNode(); 11203 PrimaryNode* primary = node->AsPrimaryNode();
11204 if (primary->primary().IsString()) { 11204 if (primary->primary().IsString()) {
11205 if (primary->IsSuper()) { 11205 if (primary->IsSuper()) {
11206 return primary; 11206 return primary;
11207 } 11207 }
11208 // In a static method, evaluation of an unresolved identifier causes a 11208 // In a static method, evaluation of an unresolved identifier causes a
11209 // NoSuchMethodError to be thrown. 11209 // NoSuchMethodError to be thrown.
11210 // In an instance method, we convert this into a getter call 11210 // In an instance method, we convert this into a getter call
11211 // for a field (which may be defined in a subclass.) 11211 // for a field (which may be defined in a subclass.)
11212 String& name = String::CheckedZoneHandle(primary->primary().raw()); 11212 const String& name =
11213 String::Cast(Object::ZoneHandle(primary->primary().raw()));
11213 if (current_function().is_static() || 11214 if (current_function().is_static() ||
11214 current_function().IsInFactoryScope()) { 11215 current_function().IsInFactoryScope()) {
11215 StaticGetterNode* getter = new(Z) StaticGetterNode( 11216 StaticGetterNode* getter = new(Z) StaticGetterNode(
11216 primary->token_pos(), 11217 primary->token_pos(),
11217 NULL, // No receiver. 11218 NULL, // No receiver.
11218 Class::ZoneHandle(Z, current_class().raw()), 11219 Class::ZoneHandle(Z, current_class().raw()),
11219 name); 11220 name);
11220 getter->set_is_deferred(primary->is_deferred_reference()); 11221 getter->set_is_deferred(primary->is_deferred_reference());
11221 return getter; 11222 return getter;
11222 } else { 11223 } else {
11223 AstNode* receiver = LoadReceiver(primary->token_pos()); 11224 AstNode* receiver = LoadReceiver(primary->token_pos());
11224 return CallGetter(node->token_pos(), receiver, name); 11225 return CallGetter(node->token_pos(), receiver, name);
11225 } 11226 }
11226 } 11227 }
11227 return primary; 11228 return primary;
11228 } 11229 }
11229 11230
11230 11231
11231 AstNode* Parser::LoadClosure(PrimaryNode* primary) { 11232 AstNode* Parser::LoadClosure(PrimaryNode* primary) {
11232 ASSERT(primary->primary().IsFunction()); 11233 ASSERT(primary->primary().IsFunction());
11233 const Function& func = 11234 const Function& func =
11234 Function::CheckedZoneHandle(primary->primary().raw()); 11235 Function::Cast(Object::ZoneHandle(primary->primary().raw()));
11235 const String& funcname = String::ZoneHandle(Z, func.name()); 11236 const String& funcname = String::ZoneHandle(Z, func.name());
11236 if (func.is_static()) { 11237 if (func.is_static()) {
11237 // Static function access. 11238 // Static function access.
11238 ClosureNode* closure = 11239 ClosureNode* closure =
11239 CreateImplicitClosureNode(func, primary->token_pos(), NULL); 11240 CreateImplicitClosureNode(func, primary->token_pos(), NULL);
11240 closure->set_is_deferred(primary->is_deferred_reference()); 11241 closure->set_is_deferred(primary->is_deferred_reference());
11241 return closure; 11242 return closure;
11242 } else { 11243 } else {
11243 // Instance function access. 11244 // Instance function access.
11244 if (current_function().is_static() || 11245 if (current_function().is_static() ||
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
11413 selector = ParseInstanceCall(LoadReceiver(primary_pos), 11414 selector = ParseInstanceCall(LoadReceiver(primary_pos),
11414 func_name, 11415 func_name,
11415 primary_pos, 11416 primary_pos,
11416 false /* is_conditional */); 11417 false /* is_conditional */);
11417 } 11418 }
11418 } else if (primary_node->primary().IsString()) { 11419 } else if (primary_node->primary().IsString()) {
11419 // Primary is an unresolved name. 11420 // Primary is an unresolved name.
11420 if (primary_node->IsSuper()) { 11421 if (primary_node->IsSuper()) {
11421 ReportError(primary_pos, "illegal use of super"); 11422 ReportError(primary_pos, "illegal use of super");
11422 } 11423 }
11423 String& name = 11424 const String& name =
11424 String::CheckedZoneHandle(primary_node->primary().raw()); 11425 String::Cast(Object::ZoneHandle(primary_node->primary().raw()));
11425 if (current_function().is_static()) { 11426 if (current_function().is_static()) {
11426 // The static call will be converted to throwing a NSM error. 11427 // The static call will be converted to throwing a NSM error.
11427 selector = ParseStaticCall(current_class(), name, primary_pos); 11428 selector = ParseStaticCall(current_class(), name, primary_pos);
11428 } else { 11429 } else {
11429 // Treat as call to unresolved (instance) method. 11430 // Treat as call to unresolved (instance) method.
11430 selector = ParseInstanceCall(LoadReceiver(primary_pos), 11431 selector = ParseInstanceCall(LoadReceiver(primary_pos),
11431 name, 11432 name,
11432 primary_pos, 11433 primary_pos,
11433 false /* is_conditional */); 11434 false /* is_conditional */);
11434 } 11435 }
(...skipping 2847 matching lines...) Expand 10 before | Expand all | Expand 10 after
14282 void Parser::SkipQualIdent() { 14283 void Parser::SkipQualIdent() {
14283 ASSERT(IsIdentifier()); 14284 ASSERT(IsIdentifier());
14284 ConsumeToken(); 14285 ConsumeToken();
14285 if (CurrentToken() == Token::kPERIOD) { 14286 if (CurrentToken() == Token::kPERIOD) {
14286 ConsumeToken(); // Consume the kPERIOD token. 14287 ConsumeToken(); // Consume the kPERIOD token.
14287 ExpectIdentifier("identifier expected after '.'"); 14288 ExpectIdentifier("identifier expected after '.'");
14288 } 14289 }
14289 } 14290 }
14290 14291
14291 } // namespace dart 14292 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart_entry.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698