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

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

Issue 12827007: Support initialized mixin fields across scripts (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 9 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') | runtime/vm/parser.cc » ('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 #ifndef VM_PARSER_H_ 5 #ifndef VM_PARSER_H_
6 #define VM_PARSER_H_ 6 #define VM_PARSER_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 9
10 #include "lib/invocation_mirror.h" 10 #include "lib/invocation_mirror.h"
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 214
215 // The class being parsed. 215 // The class being parsed.
216 const Class& current_class() const; 216 const Class& current_class() const;
217 void set_current_class(const Class& value); 217 void set_current_class(const Class& value);
218 218
219 // ParsedFunction accessor. 219 // ParsedFunction accessor.
220 ParsedFunction* parsed_function() const { 220 ParsedFunction* parsed_function() const {
221 return parsed_function_; 221 return parsed_function_;
222 } 222 }
223 223
224 const Script& script() const { return script_; }
225 void SetScript(const Script& script, intptr_t token_pos);
226
227 const Library& library() const { return library_; }
228 void set_library(const Library& value) const { library_ = value.raw(); }
229
224 // Parsing a library or a regular source script. 230 // Parsing a library or a regular source script.
225 bool is_library_source() const { 231 bool is_library_source() const {
226 return (script_.kind() == RawScript::kScriptTag) || 232 return (script_.kind() == RawScript::kScriptTag) ||
227 (script_.kind() == RawScript::kLibraryTag); 233 (script_.kind() == RawScript::kLibraryTag);
228 } 234 }
229 235
230 bool is_part_source() const { 236 bool is_part_source() const {
231 return script_.kind() == RawScript::kSourceTag; 237 return script_.kind() == RawScript::kSourceTag;
232 } 238 }
233 239
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 void ParseClassMemberDefinition(ClassDesc* members); 367 void ParseClassMemberDefinition(ClassDesc* members);
362 void ParseFormalParameter(bool allow_explicit_default_value, 368 void ParseFormalParameter(bool allow_explicit_default_value,
363 ParamList* params); 369 ParamList* params);
364 void ParseFormalParameters(bool allow_explicit_default_values, 370 void ParseFormalParameters(bool allow_explicit_default_values,
365 ParamList* params); 371 ParamList* params);
366 void ParseFormalParameterList(bool allow_explicit_default_values, 372 void ParseFormalParameterList(bool allow_explicit_default_values,
367 ParamList* params); 373 ParamList* params);
368 void CheckConstFieldsInitialized(const Class& cls); 374 void CheckConstFieldsInitialized(const Class& cls);
369 void AddImplicitConstructor(const Class& cls); 375 void AddImplicitConstructor(const Class& cls);
370 void CheckConstructors(ClassDesc* members); 376 void CheckConstructors(ClassDesc* members);
377 AstNode* ParseExternalInitializedField(const Field& field);
371 void ParseInitializedInstanceFields( 378 void ParseInitializedInstanceFields(
372 const Class& cls, 379 const Class& cls,
373 LocalVariable* receiver, 380 LocalVariable* receiver,
374 GrowableArray<Field*>* initialized_fields); 381 GrowableArray<Field*>* initialized_fields);
375 void CheckDuplicateFieldInit(intptr_t init_pos, 382 void CheckDuplicateFieldInit(intptr_t init_pos,
376 GrowableArray<Field*>* initialized_fields, 383 GrowableArray<Field*>* initialized_fields,
377 Field* field); 384 Field* field);
378 void GenerateSuperConstructorCall(const Class& cls, 385 void GenerateSuperConstructorCall(const Class& cls,
379 LocalVariable* receiver); 386 LocalVariable* receiver);
380 AstNode* ParseSuperInitializer(const Class& cls, LocalVariable* receiver); 387 AstNode* ParseSuperInitializer(const Class& cls, LocalVariable* receiver);
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 AstNode* InsertClosureCallNodes(AstNode* condition); 627 AstNode* InsertClosureCallNodes(AstNode* condition);
621 628
622 ConstructorCallNode* CreateConstructorCallNode( 629 ConstructorCallNode* CreateConstructorCallNode(
623 intptr_t token_pos, 630 intptr_t token_pos,
624 const AbstractTypeArguments& type_arguments, 631 const AbstractTypeArguments& type_arguments,
625 const Function& constructor, 632 const Function& constructor,
626 ArgumentListNode* arguments); 633 ArgumentListNode* arguments);
627 634
628 LocalVariable* BuildArrayTempLocal(intptr_t token_pos); 635 LocalVariable* BuildArrayTempLocal(intptr_t token_pos);
629 636
630 const Script& script_; 637 Script& script_;
631 TokenStream::Iterator tokens_iterator_; 638 TokenStream::Iterator tokens_iterator_;
632 Token::Kind token_kind_; // Cached token kind for current token. 639 Token::Kind token_kind_; // Cached token kind for current token.
633 Block* current_block_; 640 Block* current_block_;
634 641
635 // is_top_level_ is true if parsing the "top level" of a compilation unit, 642 // is_top_level_ is true if parsing the "top level" of a compilation unit,
636 // that is class definitions, function type aliases, global functions, 643 // that is class definitions, function type aliases, global functions,
637 // global variables. 644 // global variables.
638 bool is_top_level_; 645 bool is_top_level_;
639 646
640 // The member currently being parsed during "top level" parsing. 647 // The member currently being parsed during "top level" parsing.
(...skipping 11 matching lines...) Expand all
652 Function& innermost_function_; 659 Function& innermost_function_;
653 660
654 // The class currently being parsed, or the owner class of the 661 // The class currently being parsed, or the owner class of the
655 // function currently being parsed. It is used for primary identifier lookups. 662 // function currently being parsed. It is used for primary identifier lookups.
656 Class& current_class_; 663 Class& current_class_;
657 664
658 // The current library (and thus class dictionary) used to resolve names. 665 // The current library (and thus class dictionary) used to resolve names.
659 // When parsing a function, this is the library in which the function 666 // When parsing a function, this is the library in which the function
660 // is defined. This can be the library in which the current_class_ is 667 // is defined. This can be the library in which the current_class_ is
661 // defined, or the library of a mixin class where the function originates. 668 // defined, or the library of a mixin class where the function originates.
662 const Library& library_; 669 Library& library_;
663 670
664 // List of try blocks seen so far, this is used to generate inlined finally 671 // List of try blocks seen so far, this is used to generate inlined finally
665 // code at all points in the try block where an exit from the block is 672 // code at all points in the try block where an exit from the block is
666 // done using 'return', 'break' or 'continue' statements. 673 // done using 'return', 'break' or 'continue' statements.
667 TryBlocks* try_blocks_list_; 674 TryBlocks* try_blocks_list_;
668 675
669 DISALLOW_COPY_AND_ASSIGN(Parser); 676 DISALLOW_COPY_AND_ASSIGN(Parser);
670 }; 677 };
671 678
672 } // namespace dart 679 } // namespace dart
673 680
674 #endif // VM_PARSER_H_ 681 #endif // VM_PARSER_H_
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698