Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index 26771e4e347830c81c13377cbd24c7d1d5897213..877435a773f067706158468c55b68845a19a8abe 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -741,9 +741,7 @@ const AstRawString* ParserTraits::GetNextSymbol(Scanner* scanner) { |
Expression* ParserTraits::ThisExpression(Scope* scope, AstNodeFactory* factory, |
int pos) { |
- return scope->NewUnresolved(factory, |
- parser_->ast_value_factory()->this_string(), |
- Variable::THIS, pos, pos + 4); |
+ return factory->NewVariableProxy(scope->receiver(), pos); |
} |
Expression* ParserTraits::SuperReference(Scope* scope, AstNodeFactory* factory, |
@@ -791,8 +789,7 @@ Expression* ParserTraits::ExpressionFromIdentifier(const AstRawString* name, |
Scope* scope, |
AstNodeFactory* factory) { |
if (parser_->fni_ != NULL) parser_->fni_->PushVariableName(name); |
- return scope->NewUnresolved(factory, name, Variable::NORMAL, start_position, |
- end_position); |
+ return scope->NewUnresolved(factory, name, start_position, end_position); |
} |
@@ -971,8 +968,6 @@ FunctionLiteral* Parser::DoParseProgram(ParseInfo* info) { |
FunctionLiteral* result = NULL; |
{ |
- // TODO(wingo): Add an outer GLOBAL_SCOPE corresponding to the native |
- // context, which will have the "this" binding for script scopes. |
Scope* scope = NewScope(scope_, SCRIPT_SCOPE); |
info->set_script_scope(scope); |
if (!info->context().is_null() && !info->context()->IsNativeContext()) { |
@@ -1925,9 +1920,9 @@ VariableProxy* Parser::NewUnresolved(const AstRawString* name, |
// scope. |
// Let/const variables in harmony mode are always added to the immediately |
// enclosing scope. |
- return DeclarationScope(mode)->NewUnresolved( |
- factory(), name, Variable::NORMAL, scanner()->location().beg_pos, |
- scanner()->location().end_pos); |
+ return DeclarationScope(mode)->NewUnresolved(factory(), name, |
+ scanner()->location().beg_pos, |
+ scanner()->location().end_pos); |
} |
@@ -3440,8 +3435,8 @@ Statement* Parser::ParseForStatement(ZoneList<const AstRawString*>* labels, |
Expression* enumerable = ParseExpression(true, CHECK_OK); |
Expect(Token::RPAREN, CHECK_OK); |
- VariableProxy* each = scope_->NewUnresolved( |
- factory(), name, Variable::NORMAL, each_beg_pos, each_end_pos); |
+ VariableProxy* each = |
+ scope_->NewUnresolved(factory(), name, each_beg_pos, each_end_pos); |
Statement* body = ParseSubStatement(NULL, CHECK_OK); |
InitializeForEachStatement(loop, each, enumerable, body); |
Block* result = |
@@ -3522,8 +3517,8 @@ Statement* Parser::ParseForStatement(ZoneList<const AstRawString*>* labels, |
scope_ = for_scope; |
Expect(Token::RPAREN, CHECK_OK); |
- VariableProxy* each = scope_->NewUnresolved( |
- factory(), name, Variable::NORMAL, each_beg_pos, each_end_pos); |
+ VariableProxy* each = |
+ scope_->NewUnresolved(factory(), name, each_beg_pos, each_end_pos); |
Statement* body = ParseSubStatement(NULL, CHECK_OK); |
Block* body_block = |
factory()->NewBlock(NULL, 3, false, RelocInfo::kNoPosition); |