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 "vm/bigint_operations.h" | 7 #include "vm/bigint_operations.h" |
8 #include "vm/class_finalizer.h" | 8 #include "vm/class_finalizer.h" |
9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
10 #include "vm/compiler_stats.h" | 10 #include "vm/compiler_stats.h" |
(...skipping 2931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2942 class_name.ToCString()); | 2942 class_name.ToCString()); |
2943 } | 2943 } |
2944 cls ^= obj.raw(); | 2944 cls ^= obj.raw(); |
2945 if (cls.is_interface()) { | 2945 if (cls.is_interface()) { |
2946 ErrorMsg(classname_pos, "'%s' is already defined as interface", | 2946 ErrorMsg(classname_pos, "'%s' is already defined as interface", |
2947 class_name.ToCString()); | 2947 class_name.ToCString()); |
2948 } else if (cls.functions() != Object::empty_array()) { | 2948 } else if (cls.functions() != Object::empty_array()) { |
2949 ErrorMsg(classname_pos, "class '%s' is already defined", | 2949 ErrorMsg(classname_pos, "class '%s' is already defined", |
2950 class_name.ToCString()); | 2950 class_name.ToCString()); |
2951 } | 2951 } |
| 2952 // Pre-registered classes need their scripts connected at this time. |
| 2953 cls.set_script(script_); |
2952 } | 2954 } |
2953 ASSERT(!cls.IsNull()); | 2955 ASSERT(!cls.IsNull()); |
2954 ASSERT(cls.functions() == Object::empty_array()); | 2956 ASSERT(cls.functions() == Object::empty_array()); |
2955 set_current_class(cls); | 2957 set_current_class(cls); |
2956 ParseTypeParameters(cls); | 2958 ParseTypeParameters(cls); |
2957 Type& super_type = Type::Handle(); | 2959 Type& super_type = Type::Handle(); |
2958 if (CurrentToken() == Token::kEXTENDS) { | 2960 if (CurrentToken() == Token::kEXTENDS) { |
2959 ConsumeToken(); | 2961 ConsumeToken(); |
2960 const intptr_t type_pos = TokenPos(); | 2962 const intptr_t type_pos = TokenPos(); |
2961 const AbstractType& type = AbstractType::Handle( | 2963 const AbstractType& type = AbstractType::Handle( |
(...skipping 6090 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9052 void Parser::SkipQualIdent() { | 9054 void Parser::SkipQualIdent() { |
9053 ASSERT(IsIdentifier()); | 9055 ASSERT(IsIdentifier()); |
9054 ConsumeToken(); | 9056 ConsumeToken(); |
9055 if (CurrentToken() == Token::kPERIOD) { | 9057 if (CurrentToken() == Token::kPERIOD) { |
9056 ConsumeToken(); // Consume the kPERIOD token. | 9058 ConsumeToken(); // Consume the kPERIOD token. |
9057 ExpectIdentifier("identifier expected after '.'"); | 9059 ExpectIdentifier("identifier expected after '.'"); |
9058 } | 9060 } |
9059 } | 9061 } |
9060 | 9062 |
9061 } // namespace dart | 9063 } // namespace dart |
OLD | NEW |