|
|
|
@ -2640,6 +2640,8 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
@@ -2640,6 +2640,8 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
|
|
|
|
|
|
|
|
|
|
TemplateArgumentList TArgs(TemplateArgumentList::OnStack, TS->template_arguments()); |
|
|
|
|
|
|
|
|
|
do |
|
|
|
|
{ |
|
|
|
|
if (LocValid) |
|
|
|
|
{ |
|
|
|
|
TypeLoc UTL, ETL, ITL; |
|
|
|
@ -2659,21 +2661,17 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
@@ -2659,21 +2661,17 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
|
|
|
|
|
{ |
|
|
|
|
DependentTemplateSpecializationTypeLoc TSpecTL = TL->getAs<DependentTemplateSpecializationTypeLoc>(); |
|
|
|
|
TST->Arguments = WalkTemplateArgumentList(&TArgs, &TSpecTL); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
else if (TL->getTypeLocClass() == TypeLoc::TemplateSpecialization) |
|
|
|
|
{ |
|
|
|
|
TemplateSpecializationTypeLoc TSpecTL = TL->getAs<TemplateSpecializationTypeLoc>(); |
|
|
|
|
TST->Arguments = WalkTemplateArgumentList(&TArgs, &TSpecTL); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
llvm_unreachable("Unexpected semantics"); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
TST->Arguments = WalkTemplateArgumentList(&TArgs, (TemplateSpecializationTypeLoc*)nullptr); |
|
|
|
|
} |
|
|
|
|
} while (false); |
|
|
|
|
|
|
|
|
|
Ty = TST; |
|
|
|
|
break; |
|
|
|
@ -2688,6 +2686,8 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
@@ -2688,6 +2686,8 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
|
|
|
|
|
|
|
|
|
|
TemplateArgumentList TArgs(TemplateArgumentList::OnStack, TS->template_arguments()); |
|
|
|
|
|
|
|
|
|
do |
|
|
|
|
{ |
|
|
|
|
if (LocValid) |
|
|
|
|
{ |
|
|
|
|
TypeLoc UTL, ETL, ITL; |
|
|
|
@ -2707,21 +2707,17 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
@@ -2707,21 +2707,17 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
|
|
|
|
|
{ |
|
|
|
|
DependentTemplateSpecializationTypeLoc TSpecTL = TL->getAs<DependentTemplateSpecializationTypeLoc>(); |
|
|
|
|
TST->Arguments = WalkTemplateArgumentList(&TArgs, &TSpecTL); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
else if (TL->getTypeLocClass() == TypeLoc::TemplateSpecialization) |
|
|
|
|
{ |
|
|
|
|
TemplateSpecializationTypeLoc TSpecTL = TL->getAs<TemplateSpecializationTypeLoc>(); |
|
|
|
|
TST->Arguments = WalkTemplateArgumentList(&TArgs, &TSpecTL); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
llvm_unreachable("Unexpected semantics"); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
TST->Arguments = WalkTemplateArgumentList(&TArgs, (DependentTemplateSpecializationTypeLoc*)nullptr); |
|
|
|
|
} |
|
|
|
|
} while (false); |
|
|
|
|
|
|
|
|
|
Ty = TST; |
|
|
|
|
break; |
|
|
|
|