forked from OSchip/llvm-project
[libclang] Encode location info for anonymous embedded tag decls.
Otherwise the USR will conflict with different embedded tag decls. llvm-svn: 223633
This commit is contained in:
parent
f66cef7575
commit
80537a4146
|
@ -471,9 +471,13 @@ void USRGenerator::VisitTagDecl(const TagDecl *D) {
|
|||
Buf[off] = 'A';
|
||||
Out << '@' << *TD;
|
||||
}
|
||||
else
|
||||
else {
|
||||
if (D->isEmbeddedInDeclarator() && !D->isFreeStanding()) {
|
||||
printLoc(Out, D->getLocation(), Context->getSourceManager(), true);
|
||||
} else
|
||||
Buf[off] = 'a';
|
||||
}
|
||||
}
|
||||
|
||||
// For a class template specialization, mangle the template arguments.
|
||||
if (const ClassTemplateSpecializationDecl *Spec
|
||||
|
|
|
@ -87,6 +87,9 @@ void funWithChar(char c) {}
|
|||
void funWithChar(unsigned char c) {}
|
||||
void funWithChar(signed char c) {}
|
||||
|
||||
struct { int x; } embedS1;
|
||||
struct { int x; } embedS2;
|
||||
|
||||
// RUN: c-index-test -test-load-source-usrs all %s | FileCheck %s
|
||||
// CHECK: usrs.cpp c:@N@foo Extent=[1:1 - 4:2]
|
||||
// CHECK: usrs.cpp c:@N@foo@x Extent=[2:3 - 2:8]
|
||||
|
@ -159,3 +162,6 @@ void funWithChar(signed char c) {}
|
|||
// CHECK: usrs.cpp c:@F@funWithChar#C# Extent=[86:1 - 86:28]
|
||||
// CHECK: usrs.cpp c:@F@funWithChar#c# Extent=[87:1 - 87:37]
|
||||
// CHECK: usrs.cpp c:@F@funWithChar#r# Extent=[88:1 - 88:35]
|
||||
|
||||
// CHECK: usrs.cpp c:usrs.cpp@S@usrs.cpp@1483@FI@x Extent=[90:10 - 90:15]
|
||||
// CHECK: usrs.cpp c:usrs.cpp@S@usrs.cpp@1510@FI@x Extent=[91:10 - 91:15]
|
||||
|
|
Loading…
Reference in New Issue