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

Side by Side Diff: src/parser.h

Issue 722793005: Classes: Implement correct name binding (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: git rebase Created 6 years, 1 month 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 | « src/full-codegen.cc ('k') | src/parser.cc » ('j') | src/parser.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_PARSER_H_ 5 #ifndef V8_PARSER_H_
6 #define V8_PARSER_H_ 6 #define V8_PARSER_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/ast.h" 9 #include "src/ast.h"
10 #include "src/compiler.h" // For CachedDataMode 10 #include "src/compiler.h" // For CachedDataMode
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 531
532 // Producing data during the recursive descent. 532 // Producing data during the recursive descent.
533 const AstRawString* GetSymbol(Scanner* scanner); 533 const AstRawString* GetSymbol(Scanner* scanner);
534 const AstRawString* GetNextSymbol(Scanner* scanner); 534 const AstRawString* GetNextSymbol(Scanner* scanner);
535 const AstRawString* GetNumberAsSymbol(Scanner* scanner); 535 const AstRawString* GetNumberAsSymbol(Scanner* scanner);
536 536
537 Expression* ThisExpression(Scope* scope, AstNodeFactory* factory, 537 Expression* ThisExpression(Scope* scope, AstNodeFactory* factory,
538 int pos = RelocInfo::kNoPosition); 538 int pos = RelocInfo::kNoPosition);
539 Expression* SuperReference(Scope* scope, AstNodeFactory* factory, 539 Expression* SuperReference(Scope* scope, AstNodeFactory* factory,
540 int pos = RelocInfo::kNoPosition); 540 int pos = RelocInfo::kNoPosition);
541 Expression* ClassExpression(const AstRawString* name, Expression* extends,
542 Expression* constructor,
543 ZoneList<ObjectLiteral::Property*>* properties,
544 int start_position, int end_position,
545 AstNodeFactory* factory);
546
547 Expression* DefaultConstructor(bool call_super, Scope* scope, int pos, 541 Expression* DefaultConstructor(bool call_super, Scope* scope, int pos,
548 int end_pos); 542 int end_pos);
549 Literal* ExpressionFromLiteral(Token::Value token, int pos, Scanner* scanner, 543 Literal* ExpressionFromLiteral(Token::Value token, int pos, Scanner* scanner,
550 AstNodeFactory* factory); 544 AstNodeFactory* factory);
551 Expression* ExpressionFromIdentifier(const AstRawString* name, int pos, 545 Expression* ExpressionFromIdentifier(const AstRawString* name, int pos,
552 Scope* scope, AstNodeFactory* factory); 546 Scope* scope, AstNodeFactory* factory);
553 Expression* ExpressionFromString(int pos, Scanner* scanner, 547 Expression* ExpressionFromString(int pos, Scanner* scanner,
554 AstNodeFactory* factory); 548 AstNodeFactory* factory);
555 Expression* GetIterator(Expression* iterable, AstNodeFactory* factory); 549 Expression* GetIterator(Expression* iterable, AstNodeFactory* factory);
556 ZoneList<v8::internal::Expression*>* NewExpressionList(int size, Zone* zone) { 550 ZoneList<v8::internal::Expression*>* NewExpressionList(int size, Zone* zone) {
(...skipping 19 matching lines...) Expand all
576 const AstRawString* name, Scanner::Location function_name_location, 570 const AstRawString* name, Scanner::Location function_name_location,
577 bool name_is_strict_reserved, FunctionKind kind, 571 bool name_is_strict_reserved, FunctionKind kind,
578 int function_token_position, FunctionLiteral::FunctionType type, 572 int function_token_position, FunctionLiteral::FunctionType type,
579 FunctionLiteral::ArityRestriction arity_restriction, bool* ok); 573 FunctionLiteral::ArityRestriction arity_restriction, bool* ok);
580 V8_INLINE void SkipLazyFunctionBody(const AstRawString* name, 574 V8_INLINE void SkipLazyFunctionBody(const AstRawString* name,
581 int* materialized_literal_count, 575 int* materialized_literal_count,
582 int* expected_property_count, bool* ok); 576 int* expected_property_count, bool* ok);
583 V8_INLINE ZoneList<Statement*>* ParseEagerFunctionBody( 577 V8_INLINE ZoneList<Statement*>* ParseEagerFunctionBody(
584 const AstRawString* name, int pos, Variable* fvar, 578 const AstRawString* name, int pos, Variable* fvar,
585 Token::Value fvar_init_op, bool is_generator, bool* ok); 579 Token::Value fvar_init_op, bool is_generator, bool* ok);
580
581 ClassLiteral* ParseClassLiteral(const AstRawString* name,
582 Scanner::Location class_name_location,
583 bool name_is_strict_reserved, int pos,
584 bool* ok);
585
586 V8_INLINE void CheckConflictingVarDeclarations(v8::internal::Scope* scope, 586 V8_INLINE void CheckConflictingVarDeclarations(v8::internal::Scope* scope,
587 bool* ok); 587 bool* ok);
588 588
589 private: 589 private:
590 Parser* parser_; 590 Parser* parser_;
591 }; 591 };
592 592
593 593
594 class Parser : public ParserBase<ParserTraits> { 594 class Parser : public ParserBase<ParserTraits> {
595 public: 595 public:
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 Scope* inner_scope, ZoneList<const AstRawString*>* names, 756 Scope* inner_scope, ZoneList<const AstRawString*>* names,
757 ForStatement* loop, Statement* init, Expression* cond, Statement* next, 757 ForStatement* loop, Statement* init, Expression* cond, Statement* next,
758 Statement* body, bool* ok); 758 Statement* body, bool* ok);
759 759
760 FunctionLiteral* ParseFunctionLiteral( 760 FunctionLiteral* ParseFunctionLiteral(
761 const AstRawString* name, Scanner::Location function_name_location, 761 const AstRawString* name, Scanner::Location function_name_location,
762 bool name_is_strict_reserved, FunctionKind kind, 762 bool name_is_strict_reserved, FunctionKind kind,
763 int function_token_position, FunctionLiteral::FunctionType type, 763 int function_token_position, FunctionLiteral::FunctionType type,
764 FunctionLiteral::ArityRestriction arity_restriction, bool* ok); 764 FunctionLiteral::ArityRestriction arity_restriction, bool* ok);
765 765
766
767 ClassLiteral* ParseClassLiteral(const AstRawString* name,
768 Scanner::Location class_name_location,
769 bool name_is_strict_reserved, int pos,
770 bool* ok);
771
766 // Magical syntax support. 772 // Magical syntax support.
767 Expression* ParseV8Intrinsic(bool* ok); 773 Expression* ParseV8Intrinsic(bool* ok);
768 774
769 bool CheckInOrOf(bool accept_OF, ForEachStatement::VisitMode* visit_mode); 775 bool CheckInOrOf(bool accept_OF, ForEachStatement::VisitMode* visit_mode);
770 776
771 // Get odd-ball literals. 777 // Get odd-ball literals.
772 Literal* GetLiteralUndefined(int position); 778 Literal* GetLiteralUndefined(int position);
773 779
774 // For harmony block scoping mode: Check if the scope has conflicting var/let 780 // For harmony block scoping mode: Check if the scope has conflicting var/let
775 // declarations from different scopes. It covers for example 781 // declarations from different scopes. It covers for example
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 private: 921 private:
916 static const int kLiteralTypeSlot = 0; 922 static const int kLiteralTypeSlot = 0;
917 static const int kElementsSlot = 1; 923 static const int kElementsSlot = 1;
918 924
919 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); 925 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue);
920 }; 926 };
921 927
922 } } // namespace v8::internal 928 } } // namespace v8::internal
923 929
924 #endif // V8_PARSER_H_ 930 #endif // V8_PARSER_H_
OLDNEW
« no previous file with comments | « src/full-codegen.cc ('k') | src/parser.cc » ('j') | src/parser.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698