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

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

Issue 10377095: Implement latest rules prohibiting some self referencing typedefs. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/object.cc ('k') | tests/language/function_type_alias5_test.dart » ('j') | 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 "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 2944 matching lines...) Expand 10 before | Expand all | Expand 10 after
2955 ErrorMsg(alias_name_pos, 2955 ErrorMsg(alias_name_pos,
2956 "'%s' is already defined", alias_name->ToCString()); 2956 "'%s' is already defined", alias_name->ToCString());
2957 } 2957 }
2958 2958
2959 // Create the function type alias, but share the signature function of the 2959 // Create the function type alias, but share the signature function of the
2960 // canonical signature class. 2960 // canonical signature class.
2961 Class& function_type_alias = Class::Handle( 2961 Class& function_type_alias = Class::Handle(
2962 Class::NewSignatureClass(*alias_name, 2962 Class::NewSignatureClass(*alias_name,
2963 signature_function, 2963 signature_function,
2964 script_)); 2964 script_));
2965 // This alias should not be marked as finalized yet, since it needs to be
2966 // checked in the class finalizer for illegal self references.
2967 ASSERT(!function_type_alias.IsCanonicalSignatureClass());
2968 ASSERT(!function_type_alias.is_finalized());
2965 library_.AddClass(function_type_alias); 2969 library_.AddClass(function_type_alias);
2966 ExpectSemicolon(); 2970 ExpectSemicolon();
2967 pending_classes.Add(function_type_alias, Heap::kOld); 2971 pending_classes.Add(function_type_alias, Heap::kOld);
2968 } 2972 }
2969 2973
2970 2974
2971 void Parser::ParseInterfaceDefinition( 2975 void Parser::ParseInterfaceDefinition(
2972 const GrowableObjectArray& pending_classes) { 2976 const GrowableObjectArray& pending_classes) {
2973 TRACE_PARSER("ParseInterfaceDefinition"); 2977 TRACE_PARSER("ParseInterfaceDefinition");
2974 const intptr_t interface_pos = token_index_; 2978 const intptr_t interface_pos = token_index_;
(...skipping 5466 matching lines...) Expand 10 before | Expand all | Expand 10 after
8441 void Parser::SkipQualIdent() { 8445 void Parser::SkipQualIdent() {
8442 ASSERT(IsIdentifier()); 8446 ASSERT(IsIdentifier());
8443 ConsumeToken(); 8447 ConsumeToken();
8444 if (CurrentToken() == Token::kPERIOD) { 8448 if (CurrentToken() == Token::kPERIOD) {
8445 ConsumeToken(); // Consume the kPERIOD token. 8449 ConsumeToken(); // Consume the kPERIOD token.
8446 ExpectIdentifier("identifier expected after '.'"); 8450 ExpectIdentifier("identifier expected after '.'");
8447 } 8451 }
8448 } 8452 }
8449 8453
8450 } // namespace dart 8454 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | tests/language/function_type_alias5_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698