diff options
Diffstat (limited to 'chromium/v8/src/parsing/parser.h')
-rw-r--r-- | chromium/v8/src/parsing/parser.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/chromium/v8/src/parsing/parser.h b/chromium/v8/src/parsing/parser.h index 472c9a71ab4..431ed5a37e9 100644 --- a/chromium/v8/src/parsing/parser.h +++ b/chromium/v8/src/parsing/parser.h @@ -170,10 +170,10 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) { friend class i::ArrowHeadParsingScope<ParserTypes<Parser>>; friend bool v8::internal::parsing::ParseProgram( ParseInfo*, Handle<Script>, MaybeHandle<ScopeInfo> maybe_outer_scope_info, - Isolate*, parsing::ReportErrorsAndStatisticsMode stats_mode); + Isolate*, parsing::ReportStatisticsMode stats_mode); friend bool v8::internal::parsing::ParseFunction( ParseInfo*, Handle<SharedFunctionInfo> shared_info, Isolate*, - parsing::ReportErrorsAndStatisticsMode stats_mode); + parsing::ReportStatisticsMode stats_mode); bool AllowsLazyParsingWithoutUnresolvedVariables() const { return !MaybeParsingArrowhead() && @@ -541,10 +541,14 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) { return property != nullptr && property->obj()->IsThisExpression(); } - // Returns true if the expression is of type "obj.#foo". + // Returns true if the expression is of type "obj.#foo" or "obj?.#foo". V8_INLINE static bool IsPrivateReference(Expression* expression) { DCHECK_NOT_NULL(expression); Property* property = expression->AsProperty(); + if (expression->IsOptionalChain()) { + Expression* expr_inner = expression->AsOptionalChain()->expression(); + property = expr_inner->AsProperty(); + } return property != nullptr && property->IsPrivateReference(); } |