[libcxxabi][ItaniumDemangle] Separate GtIsGt counter into more states #11774
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently
OutputBuffer::GtIsGtis used to tell us if we're inside template arguments and have printed a '(' without a closing ')'. If so, we don't need to quote '<' when printing it as part of a binary expression inside a template argument. Otherwise we need to. E.g.,LLDB's
TrackingOutputBufferhas heuristics that rely on checking whether we are inside template arguments, regardless of the current parentheses depth. We've been usingisGtInsideTemplateArgsfor this, but that isn't correct. Resulting in us incorrectly tracking the basename of function like:Here
GtIsGt > 0despite us being inside template arguments (because we incremented it when seeing '(').This patch adds a
isInsideTemplateArgsAPI which LLDB will use to more accurately track parts of the demangled name.To make sure this API doesn't go untested in the actual libcxxabi test-suite, I changed the existing
GtIsGtlogic to use it. Also renamed the various variables/APIs involved to make it (in my opinion) more straightforward to understand what's going on. But happy to rename it back if people disagree.Also adjusted LLDB to use the newly introduced API (and added a unit-test that would previously fail).
(cherry picked from commit 54c9ddd)