| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index 9724ec74c59f008b65b99ab1fcca5bc0adeb28a4..56eec541eba6534b77f2aa59ebec00fc414d11ba 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -893,7 +893,7 @@ FunctionLiteral* Parser::DoParseProgram(CompilationInfo* info,
|
| CheckOctalLiteral(beg_pos, scanner()->location().end_pos, &ok);
|
| }
|
|
|
| - if (ok && FLAG_harmony_scoping && strict_mode() == STRICT) {
|
| + if (ok && allow_harmony_scoping() && strict_mode() == STRICT) {
|
| CheckConflictingVarDeclarations(scope_, &ok);
|
| }
|
|
|
| @@ -1698,7 +1698,7 @@ void Parser::Declare(Declaration* declaration, bool resolve, bool* ok) {
|
| // because the var declaration is hoisted to the function scope where 'x'
|
| // is already bound.
|
| ASSERT(IsDeclaredVariableMode(var->mode()));
|
| - if (FLAG_harmony_scoping && strict_mode() == STRICT) {
|
| + if (allow_harmony_scoping() && strict_mode() == STRICT) {
|
| // In harmony we treat re-declarations as early errors. See
|
| // ES5 16 for a definition of early errors.
|
| SmartArrayPointer<char> c_string = name->ToCString(DISALLOW_NULLS);
|
| @@ -1876,7 +1876,7 @@ Statement* Parser::ParseFunctionDeclaration(ZoneStringList* names, bool* ok) {
|
| // In extended mode, a function behaves as a lexical binding, except in the
|
| // global scope.
|
| VariableMode mode =
|
| - FLAG_harmony_scoping &&
|
| + allow_harmony_scoping() &&
|
| strict_mode() == STRICT && !scope_->is_global_scope() ? LET : VAR;
|
| VariableProxy* proxy = NewUnresolved(name, mode, Interface::NewValue());
|
| Declaration* declaration =
|
| @@ -1888,7 +1888,7 @@ Statement* Parser::ParseFunctionDeclaration(ZoneStringList* names, bool* ok) {
|
|
|
|
|
| Block* Parser::ParseBlock(ZoneStringList* labels, bool* ok) {
|
| - if (FLAG_harmony_scoping && strict_mode() == STRICT) {
|
| + if (allow_harmony_scoping() && strict_mode() == STRICT) {
|
| return ParseScopedBlock(labels, ok);
|
| }
|
|
|
| @@ -2016,7 +2016,7 @@ Block* Parser::ParseVariableDeclarations(
|
| init_op = Token::INIT_CONST_LEGACY;
|
| break;
|
| case STRICT:
|
| - if (FLAG_harmony_scoping) {
|
| + if (allow_harmony_scoping()) {
|
| if (var_context == kStatement) {
|
| // In strict mode 'const' declarations are only allowed in source
|
| // element positions.
|
| @@ -2043,7 +2043,7 @@ Block* Parser::ParseVariableDeclarations(
|
| // contained in extended code.
|
| //
|
| // TODO(rossberg): make 'let' a legal identifier in sloppy mode.
|
| - if (!FLAG_harmony_scoping || strict_mode() == SLOPPY) {
|
| + if (!allow_harmony_scoping() || strict_mode() == SLOPPY) {
|
| ReportMessage("illegal_let", Vector<const char*>::empty());
|
| *ok = false;
|
| return NULL;
|
| @@ -2670,7 +2670,7 @@ TryStatement* Parser::ParseTryStatement(bool* ok) {
|
|
|
| Target target(&this->target_stack_, &catch_collector);
|
| VariableMode mode =
|
| - FLAG_harmony_scoping && strict_mode() == STRICT ? LET : VAR;
|
| + allow_harmony_scoping() && strict_mode() == STRICT ? LET : VAR;
|
| catch_variable =
|
| catch_scope->DeclareLocal(name, mode, kCreatedInitialized);
|
|
|
| @@ -3181,7 +3181,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
|
| Scope* original_declaration_scope = original_scope_->DeclarationScope();
|
| Scope* scope =
|
| function_type == FunctionLiteral::DECLARATION &&
|
| - (!FLAG_harmony_scoping || strict_mode() == SLOPPY) &&
|
| + (!allow_harmony_scoping() || strict_mode() == SLOPPY) &&
|
| (original_scope_ == original_declaration_scope ||
|
| declaration_scope != original_declaration_scope)
|
| ? NewScope(declaration_scope, FUNCTION_SCOPE)
|
| @@ -3272,11 +3272,12 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
|
| Variable* fvar = NULL;
|
| Token::Value fvar_init_op = Token::INIT_CONST_LEGACY;
|
| if (function_type == FunctionLiteral::NAMED_EXPRESSION) {
|
| - if (FLAG_harmony_scoping && strict_mode() == STRICT) {
|
| + if (allow_harmony_scoping() && strict_mode() == STRICT) {
|
| fvar_init_op = Token::INIT_CONST;
|
| }
|
| - VariableMode fvar_mode = FLAG_harmony_scoping && strict_mode() == STRICT
|
| - ? CONST : CONST_LEGACY;
|
| + VariableMode fvar_mode =
|
| + allow_harmony_scoping() && strict_mode() == STRICT ? CONST
|
| + : CONST_LEGACY;
|
| fvar = new(zone()) Variable(scope_,
|
| function_name, fvar_mode, true /* is valid LHS */,
|
| Variable::NORMAL, kCreatedInitialized, Interface::NewConst());
|
| @@ -3498,7 +3499,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
|
| dont_optimize_reason = factory()->visitor()->dont_optimize_reason();
|
| }
|
|
|
| - if (FLAG_harmony_scoping && strict_mode() == STRICT) {
|
| + if (allow_harmony_scoping() && strict_mode() == STRICT) {
|
| CheckConflictingVarDeclarations(scope, CHECK_OK);
|
| }
|
|
|
|
|