Browse Source

Parser.cpp: fix TypeLoc::Elaborated wrapped inside TypeLoc::Qualified

pull/1819/head
Deadlocklogic 1 year ago
parent
commit
3a202a8517
  1. 12
      src/CppParser/Parser.cpp

12
src/CppParser/Parser.cpp

@ -2643,13 +2643,12 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
if (LocValid) if (LocValid)
{ {
TypeLoc UTL, ETL, ITL; TypeLoc UTL, ETL, ITL;
auto TypeLocClass = TL->getTypeLocClass(); if (TL->getTypeLocClass() == TypeLoc::Qualified)
if (TypeLocClass == TypeLoc::Qualified)
{ {
UTL = TL->getUnqualifiedLoc(); UTL = TL->getUnqualifiedLoc();
TL = &UTL; TL = &UTL;
} }
else if (TypeLocClass == TypeLoc::Elaborated) if (TL->getTypeLocClass() == TypeLoc::Elaborated)
{ {
ETL = TL->getAs<ElaboratedTypeLoc>(); ETL = TL->getAs<ElaboratedTypeLoc>();
ITL = ETL.getNextTypeLoc(); ITL = ETL.getNextTypeLoc();
@ -2692,13 +2691,12 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
if (LocValid) if (LocValid)
{ {
TypeLoc UTL, ETL, ITL; TypeLoc UTL, ETL, ITL;
auto TypeLocClass = TL->getTypeLocClass(); if (TL->getTypeLocClass() == TypeLoc::Qualified)
if (TypeLocClass == TypeLoc::Qualified)
{ {
UTL = TL->getUnqualifiedLoc(); UTL = TL->getUnqualifiedLoc();
TL = &UTL; TL = &UTL;
} }
else if (TypeLocClass == TypeLoc::Elaborated) if (TL->getTypeLocClass() == TypeLoc::Elaborated)
{ {
ETL = TL->getAs<ElaboratedTypeLoc>(); ETL = TL->getAs<ElaboratedTypeLoc>();
ITL = ETL.getNextTypeLoc(); ITL = ETL.getNextTypeLoc();
@ -2747,7 +2745,7 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
UTL = TL->getUnqualifiedLoc(); UTL = TL->getUnqualifiedLoc();
TL = &UTL; TL = &UTL;
} }
else if (TypeLocClass == TypeLoc::Elaborated) if (TypeLocClass == TypeLoc::Elaborated)
{ {
ETL = TL->getAs<ElaboratedTypeLoc>(); ETL = TL->getAs<ElaboratedTypeLoc>();
ITL = ETL.getNextTypeLoc(); ITL = ETL.getNextTypeLoc();

Loading…
Cancel
Save