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 4438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4449 names_field.RecordStore(names_array); | 4449 names_field.RecordStore(names_array); |
4450 | 4450 |
4451 // Clone the toString() function from the helper class. | 4451 // Clone the toString() function from the helper class. |
4452 Function& to_string_func = Function::Handle(I, | 4452 Function& to_string_func = Function::Handle(I, |
4453 helper_class.LookupDynamicFunctionAllowPrivate(Symbols::toString())); | 4453 helper_class.LookupDynamicFunctionAllowPrivate(Symbols::toString())); |
4454 ASSERT(!to_string_func.IsNull()); | 4454 ASSERT(!to_string_func.IsNull()); |
4455 to_string_func = to_string_func.Clone(cls); | 4455 to_string_func = to_string_func.Clone(cls); |
4456 to_string_func.set_is_visible(false); | 4456 to_string_func.set_is_visible(false); |
4457 enum_members.AddFunction(to_string_func); | 4457 enum_members.AddFunction(to_string_func); |
4458 | 4458 |
| 4459 // Clone the hashCode getter function from the helper class. |
| 4460 Function& hash_code_func = Function::Handle(I, |
| 4461 helper_class.LookupDynamicFunctionAllowPrivate(Symbols::hashCode())); |
| 4462 ASSERT(!hash_code_func.IsNull()); |
| 4463 hash_code_func = hash_code_func.Clone(cls); |
| 4464 hash_code_func.set_is_visible(false); |
| 4465 enum_members.AddFunction(hash_code_func); |
| 4466 |
4459 cls.AddFields(enum_members.fields()); | 4467 cls.AddFields(enum_members.fields()); |
4460 const Array& functions = | 4468 const Array& functions = |
4461 Array::Handle(I, Array::MakeArray(enum_members.functions())); | 4469 Array::Handle(I, Array::MakeArray(enum_members.functions())); |
4462 cls.SetFunctions(functions); | 4470 cls.SetFunctions(functions); |
4463 } | 4471 } |
4464 | 4472 |
4465 | 4473 |
4466 // Add an implicit constructor to the given class. | 4474 // Add an implicit constructor to the given class. |
4467 void Parser::AddImplicitConstructor(const Class& cls) { | 4475 void Parser::AddImplicitConstructor(const Class& cls) { |
4468 // The implicit constructor is unnamed, has no explicit parameter. | 4476 // The implicit constructor is unnamed, has no explicit parameter. |
(...skipping 7649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12118 void Parser::SkipQualIdent() { | 12126 void Parser::SkipQualIdent() { |
12119 ASSERT(IsIdentifier()); | 12127 ASSERT(IsIdentifier()); |
12120 ConsumeToken(); | 12128 ConsumeToken(); |
12121 if (CurrentToken() == Token::kPERIOD) { | 12129 if (CurrentToken() == Token::kPERIOD) { |
12122 ConsumeToken(); // Consume the kPERIOD token. | 12130 ConsumeToken(); // Consume the kPERIOD token. |
12123 ExpectIdentifier("identifier expected after '.'"); | 12131 ExpectIdentifier("identifier expected after '.'"); |
12124 } | 12132 } |
12125 } | 12133 } |
12126 | 12134 |
12127 } // namespace dart | 12135 } // namespace dart |
OLD | NEW |