diff options
author | Pavel Labath <pavel@labath.sk> | 2024-05-10 08:34:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-10 08:34:42 +0200 |
commit | 5bde2aa1080ba90021f8f5e0c48744ddfc0d6f15 (patch) | |
tree | f83a498ee294d00ecafac355189b250cfb8a5d59 /clang/lib/CodeGen/CoverageMappingGen.cpp | |
parent | 0ebe48f068c0ca69f76ed68b621c9294acd75f76 (diff) | |
download | llvm-5bde2aa1080ba90021f8f5e0c48744ddfc0d6f15.zip llvm-5bde2aa1080ba90021f8f5e0c48744ddfc0d6f15.tar.gz llvm-5bde2aa1080ba90021f8f5e0c48744ddfc0d6f15.tar.bz2 |
[lldb] Improve type name parsing (#91586)
Parsing of '::' scopes in TypeQuery was very naive and failed for names
with '::''s in template arguments. Interestingly, one of the functions
it was calling (Type::GetTypeScopeAndBasename) was already doing the
same thing, and getting it (mostly (*)) right. This refactors the
function so that it can return the scope results, fixing the parsing of
names like std::vector<int, std::allocator<int>>::iterator.
Two callers of GetTypeScopeAndBasename are deleted as the functions are
not used (I presume they stopped being used once we started pruning type
search results more eagerly).
(*) This implementation is still not correct when one takes c++
operators into account -- e.g., something like `X<&A::operator<>::T` is
a legitimate type name. We do have an implementation that is able to
handle names like these (CPlusPlusLanguage::MethodName), but using it is
not trivial, because it is hidden in a language plugin and specific to
method name parsing.
---------
Co-authored-by: Michael Buch <michaelbuch12@gmail.com>
Diffstat (limited to 'clang/lib/CodeGen/CoverageMappingGen.cpp')
0 files changed, 0 insertions, 0 deletions