Chromium Code Reviews| 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 9535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 9546 | 9546 |
| 9547 | 9547 |
| 9548 // Do a lookup for the identifier in the scope of the specified | 9548 // Do a lookup for the identifier in the scope of the specified |
| 9549 // library prefix. This means trying to resolve it locally in all of the | 9549 // library prefix. This means trying to resolve it locally in all of the |
| 9550 // libraries present in the library prefix. | 9550 // libraries present in the library prefix. |
| 9551 AstNode* Parser::ResolveIdentInPrefixScope(intptr_t ident_pos, | 9551 AstNode* Parser::ResolveIdentInPrefixScope(intptr_t ident_pos, |
| 9552 const LibraryPrefix& prefix, | 9552 const LibraryPrefix& prefix, |
| 9553 const String& ident) { | 9553 const String& ident) { |
| 9554 TRACE_PARSER("ResolveIdentInPrefixScope"); | 9554 TRACE_PARSER("ResolveIdentInPrefixScope"); |
| 9555 HANDLESCOPE(I); | 9555 HANDLESCOPE(I); |
| 9556 if (ident.CharAt(0) == '_') { | |
|
srdjan
2014/08/21 17:02:21
Should we use Library::kPrivateIdentifierStart?
hausner
2014/08/21 17:06:20
Done.
| |
| 9557 // Private names are not exported by libraries. The name mangling | |
| 9558 // of private names with a library-specific suffix usually ensures | |
| 9559 // that _x in library A is not found when looked up from library B. | |
| 9560 // In the pathological case where a library includes itself with | |
| 9561 // a prefix, the name mangling would not help in hiding the private | |
| 9562 // name, so we need to explicitly reject private names here. | |
| 9563 return NULL; | |
| 9564 } | |
| 9556 Object& obj = Object::Handle(I); | 9565 Object& obj = Object::Handle(I); |
| 9557 if (prefix.is_loaded()) { | 9566 if (prefix.is_loaded()) { |
| 9558 obj = prefix.LookupObject(ident); | 9567 obj = prefix.LookupObject(ident); |
| 9559 } else { | 9568 } else { |
| 9560 // Remember that this function depends on an import prefix of an | 9569 // Remember that this function depends on an import prefix of an |
| 9561 // unloaded deferred library. Note that parsed_function() can be | 9570 // unloaded deferred library. Note that parsed_function() can be |
| 9562 // NULL when parsing expressions outside the scope of a function. | 9571 // NULL when parsing expressions outside the scope of a function. |
| 9563 if (parsed_function() != NULL) { | 9572 if (parsed_function() != NULL) { |
| 9564 parsed_function()->AddDeferredPrefix(prefix); | 9573 parsed_function()->AddDeferredPrefix(prefix); |
| 9565 } | 9574 } |
| (...skipping 1691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11257 void Parser::SkipQualIdent() { | 11266 void Parser::SkipQualIdent() { |
| 11258 ASSERT(IsIdentifier()); | 11267 ASSERT(IsIdentifier()); |
| 11259 ConsumeToken(); | 11268 ConsumeToken(); |
| 11260 if (CurrentToken() == Token::kPERIOD) { | 11269 if (CurrentToken() == Token::kPERIOD) { |
| 11261 ConsumeToken(); // Consume the kPERIOD token. | 11270 ConsumeToken(); // Consume the kPERIOD token. |
| 11262 ExpectIdentifier("identifier expected after '.'"); | 11271 ExpectIdentifier("identifier expected after '.'"); |
| 11263 } | 11272 } |
| 11264 } | 11273 } |
| 11265 | 11274 |
| 11266 } // namespace dart | 11275 } // namespace dart |
| OLD | NEW |