[libclang] Encode InjectedClassNameType in the USR.

llvm-svn: 223634
This commit is contained in:
Argyrios Kyrtzidis 2014-12-08 08:48:43 +00:00
parent 80537a4146
commit 1d5e542fb2
2 changed files with 11 additions and 0 deletions

View File

@ -706,6 +706,10 @@ void USRGenerator::VisitType(QualType T) {
Out << ':' << DNT->getIdentifier()->getName();
return;
}
if (const InjectedClassNameType *InjT = T->getAs<InjectedClassNameType>()) {
T = InjT->getInjectedSpecializationType();
continue;
}
// Unhandled type.
Out << ' ';

View File

@ -90,6 +90,11 @@ void funWithChar(signed char c) {}
struct { int x; } embedS1;
struct { int x; } embedS2;
template <typename T>
class TC1 {
void meth(TC1);
};
// 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]
@ -165,3 +170,5 @@ struct { int x; } embedS2;
// 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]
// CHECK: usrs.cpp c:@ST>1#T@TC1@F@meth#>@ST>1#T@TC11t0.0# Extent=[95:3 - 95:17]