diff options
author | Chris Mihelich <cmihelic@google.com> | 2024-05-23 14:45:31 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-05-23 14:46:26 -0700 |
commit | b3cd02500c67749ee7441987cb7d37c89aead79b (patch) | |
tree | 3e815489d9dbedac4a55ecd9f7f39b150cf934e4 /absl/debugging/internal/demangle.cc | |
parent | a7d70c872aaf5bfa8efcdb2814e914a7eabbe7d5 (diff) | |
download | abseil-b3cd02500c67749ee7441987cb7d37c89aead79b.tar.gz abseil-b3cd02500c67749ee7441987cb7d37c89aead79b.tar.bz2 abseil-b3cd02500c67749ee7441987cb7d37c89aead79b.zip |
Stop eating an extra E in ParseTemplateArg for some L<type><value>E literals.
PiperOrigin-RevId: 636682763
Change-Id: I9e5fd6827cb780c288ff5af54643ee4fbbaca6d5
Diffstat (limited to 'absl/debugging/internal/demangle.cc')
-rw-r--r-- | absl/debugging/internal/demangle.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/absl/debugging/internal/demangle.cc b/absl/debugging/internal/demangle.cc index e9c8d176..6d24f8ed 100644 --- a/absl/debugging/internal/demangle.cc +++ b/absl/debugging/internal/demangle.cc @@ -585,7 +585,7 @@ static bool ParseFunctionParam(State* state); static bool ParseBracedExpression(State *state); static bool ParseExpression(State *state); static bool ParseExprPrimary(State *state); -static bool ParseExprCastValue(State *state); +static bool ParseExprCastValueAndTrailingE(State *state); static bool ParseQRequiresClauseExpr(State *state); static bool ParseLocalName(State *state); static bool ParseLocalNameSuffix(State *state); @@ -1633,7 +1633,7 @@ static bool ParseTemplateArg(State *state) { // ::= L <source-name> [<template-args>] [<expr-cast-value> E] if (ParseLocalSourceName(state) && Optional(ParseTemplateArgs(state))) { copy = state->parse_state; - if (ParseExprCastValue(state) && ParseOneCharToken(state, 'E')) { + if (ParseExprCastValueAndTrailingE(state)) { return true; } state->parse_state = copy; @@ -2005,7 +2005,7 @@ static bool ParseExprPrimary(State *state) { // The merged cast production. if (ParseOneCharToken(state, 'L') && ParseType(state) && - ParseExprCastValue(state)) { + ParseExprCastValueAndTrailingE(state)) { return true; } state->parse_state = copy; @@ -2020,7 +2020,7 @@ static bool ParseExprPrimary(State *state) { } // <number> or <float>, followed by 'E', as described above ParseExprPrimary. -static bool ParseExprCastValue(State *state) { +static bool ParseExprCastValueAndTrailingE(State *state) { ComplexityGuard guard(state); if (guard.IsTooComplex()) return false; // We have to be able to backtrack after accepting a number because we could |