diff options
author | Chris Mihelich <cmihelic@google.com> | 2024-06-07 09:25:38 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-06-07 09:26:29 -0700 |
commit | 61e721f41f3e9de4e3a9ef97b32700f84d26ea3b (patch) | |
tree | 32fc318979c74ec1ae6361fe09a52959fb9d8551 /absl/debugging/internal/demangle.cc | |
parent | 59d0a7d141084dbec666b6f05ffa8c4210d61956 (diff) | |
download | abseil-61e721f41f3e9de4e3a9ef97b32700f84d26ea3b.tar.gz abseil-61e721f41f3e9de4e3a9ef97b32700f84d26ea3b.tar.bz2 abseil-61e721f41f3e9de4e3a9ef97b32700f84d26ea3b.zip |
Demangle fully general vendor extended types (any <template-args>).
PiperOrigin-RevId: 641271471
Change-Id: Ibeedb4dea3b961955d073f048d293b19aa917792
Diffstat (limited to 'absl/debugging/internal/demangle.cc')
-rw-r--r-- | absl/debugging/internal/demangle.cc | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/absl/debugging/internal/demangle.cc b/absl/debugging/internal/demangle.cc index 9f4a8352..46a63964 100644 --- a/absl/debugging/internal/demangle.cc +++ b/absl/debugging/internal/demangle.cc @@ -1444,8 +1444,6 @@ static bool ParseCVQualifiers(State *state) { // // Not supported: // ::= DF <number> _ # _FloatN (N bits) -// -// NOTE: [I <type> E] is a vendor extension (http://shortn/_FrINpH1XC5). static bool ParseBuiltinType(State *state) { ComplexityGuard guard(state); if (guard.IsTooComplex()) return false; @@ -1466,22 +1464,15 @@ static bool ParseBuiltinType(State *state) { return ParseVendorExtendedType(state); } -// <vendor-extended-type> ::= u <source-name> [I <type> E] -// -// NOTE: [I <type> E] is a vendor extension (http://shortn/_FrINpH1XC5). +// <vendor-extended-type> ::= u <source-name> [<template-args>] static bool ParseVendorExtendedType(State *state) { ComplexityGuard guard(state); if (guard.IsTooComplex()) return false; ParseState copy = state->parse_state; - if (ParseOneCharToken(state, 'u') && ParseSourceName(state)) { - copy = state->parse_state; - if (ParseOneCharToken(state, 'I') && ParseType(state) && - ParseOneCharToken(state, 'E')) { - return true; // ::= u <source-name> I <type> E - } - state->parse_state = copy; - return true; // ::= u <source-name> + if (ParseOneCharToken(state, 'u') && ParseSourceName(state) && + Optional(ParseTemplateArgs(state))) { + return true; } state->parse_state = copy; return false; |