mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-22 07:35:08 +00:00
indexer: fix getAdjustedDecl for explicit instantiations; fix incorrect short_offset_size=1 when name is empty
Fix #516
This commit is contained in:
parent
7e795e9b9e
commit
0a1e08a8ca
@ -358,7 +358,7 @@ const Decl *getAdjustedDecl(const Decl *d) {
|
||||
while (d) {
|
||||
if (auto *r = dyn_cast<CXXRecordDecl>(d)) {
|
||||
if (auto *s = dyn_cast<ClassTemplateSpecializationDecl>(r)) {
|
||||
if (!s->getTypeAsWritten()) {
|
||||
if (!s->isExplicitSpecialization()) {
|
||||
llvm::PointerUnion<ClassTemplateDecl *,
|
||||
ClassTemplatePartialSpecializationDecl *>
|
||||
result = s->getSpecializedTemplateOrPartial();
|
||||
@ -534,7 +534,8 @@ public:
|
||||
name.replace(i, short_name.size(), qualified);
|
||||
def.short_name_offset = i + qualified.size() - short_name.size();
|
||||
}
|
||||
def.short_name_size = short_name.size();
|
||||
// name may be empty while short_name is not.
|
||||
def.short_name_size = name.empty() ? 0 : short_name.size();
|
||||
for (int paren = 0; i; i--) {
|
||||
// Skip parentheses in "(anon struct)::name"
|
||||
if (name[i - 1] == ')')
|
||||
|
Loading…
Reference in New Issue
Block a user