Browse Source

Parser.cpp: use nullptr TypeLoc fallthrough when semantics are unexpected

pull/1819/head
Deadlocklogic 2 years ago
parent
commit
b3b04e5a7e
  1. 24
      src/CppParser/Parser.cpp

24
src/CppParser/Parser.cpp

@ -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;

Loading…
Cancel
Save