From 086c044dc34dfc0f74fbe41f4ecb402b2cd34884 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 03:13:33 +0200 Subject: Merging upstream version 125.0.1. Signed-off-by: Daniel Baumann --- js/src/frontend/ParseContext.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'js/src/frontend/ParseContext.h') diff --git a/js/src/frontend/ParseContext.h b/js/src/frontend/ParseContext.h index 8124073bf9..796b776d85 100644 --- a/js/src/frontend/ParseContext.h +++ b/js/src/frontend/ParseContext.h @@ -661,8 +661,12 @@ class ParseContext : public Nestable { bool hasUsedName(const UsedNameTracker& usedNames, TaggedParserAtomIndex name); + bool hasClosedOverName(const UsedNameTracker& usedNames, + TaggedParserAtomIndex name); bool hasUsedFunctionSpecialName(const UsedNameTracker& usedNames, TaggedParserAtomIndex name); + bool hasClosedOverFunctionSpecialName(const UsedNameTracker& usedNames, + TaggedParserAtomIndex name); bool declareFunctionThis(const UsedNameTracker& usedNames, bool canSkipLazyClosedOverBindings); @@ -673,6 +677,13 @@ class ParseContext : public Nestable { bool declareDotGeneratorName(); bool declareTopLevelDotGeneratorName(); + // Used to determine if we have non-length uses of the arguments binding. + // This works by incrementing this counter each time we encounter the + // arguments name, and decrementing each time it is combined into + // arguments.length; as a result, if this is non-zero at the end of parsing, + // we have identified a non-length use of the arguments binding. + size_t numberOfArgumentsNames = 0; + private: [[nodiscard]] bool isVarRedeclaredInInnermostScope( TaggedParserAtomIndex name, ParserBase* parser, DeclarationKind kind, -- cgit v1.2.3