| Index: src/ast/scopes.h
|
| diff --git a/src/ast/scopes.h b/src/ast/scopes.h
|
| index b25440b7b0b3318a5d27928d932a30a67f8cafac..0e4da9a301c13854fafc71e70eb0ad5b2ad9905e 100644
|
| --- a/src/ast/scopes.h
|
| +++ b/src/ast/scopes.h
|
| @@ -236,6 +236,14 @@ class Scope: public ZoneObject {
|
| // scope over a let binding of the same name.
|
| Declaration* CheckConflictingVarDeclarations();
|
|
|
| + // Check if the scope has a conflicting lexical declaration that has a name in
|
| + // the given list. This is used to catch patterns like
|
| + // `try{}catch(e){let e;}`,
|
| + // which is an error even though the two 'e's are declared in different
|
| + // scopes.
|
| + Declaration* CheckLexDeclarationsConflictingWith(
|
| + const ZoneList<const AstRawString*>& names);
|
| +
|
| // ---------------------------------------------------------------------------
|
| // Scope-specific info.
|
|
|
| @@ -491,6 +499,12 @@ class Scope: public ZoneObject {
|
| // The ModuleDescriptor for this scope; only for module scopes.
|
| ModuleDescriptor* module() const { return module_descriptor_; }
|
|
|
| + const AstRawString* catch_variable_name() const {
|
| + DCHECK(is_catch_scope());
|
| + DCHECK(num_var() == 1);
|
| + return static_cast<AstRawString*>(variables_.Start()->key);
|
| + }
|
| +
|
| // ---------------------------------------------------------------------------
|
| // Variable allocation.
|
|
|
| @@ -501,8 +515,8 @@ class Scope: public ZoneObject {
|
| ZoneList<Variable*>* context_locals,
|
| ZoneList<Variable*>* context_globals);
|
|
|
| - // Current number of var or const locals.
|
| - int num_var_or_const() { return num_var_or_const_; }
|
| + // Current number of var locals.
|
| + int num_var() const { return num_var_; }
|
|
|
| // Result of variable allocation.
|
| int num_stack_slots() const { return num_stack_slots_; }
|
| @@ -673,7 +687,7 @@ class Scope: public ZoneObject {
|
| bool is_declaration_scope_;
|
|
|
| // Computed as variables are declared.
|
| - int num_var_or_const_;
|
| + int num_var_;
|
|
|
| // Computed via AllocateVariables; function, block and catch scopes only.
|
| int num_stack_slots_;
|
|
|