Browse Source

Fixed parser bug when dealing with DependentTemplateSpecializationTypeLoc.

pull/966/head
Joao Matos 8 years ago
parent
commit
dac3753c0c
  1. 9
      src/CppParser/Parser.cpp
  2. 3
      src/CppParser/Parser.h

9
src/CppParser/Parser.cpp

@ -1220,9 +1220,10 @@ NonTypeTemplateParameter* Parser::WalkNonTypeTemplateParameter(const clang::NonT @@ -1220,9 +1220,10 @@ NonTypeTemplateParameter* Parser::WalkNonTypeTemplateParameter(const clang::NonT
//-----------------------------------//
template<typename TypeLoc>
std::vector<CppSharp::CppParser::TemplateArgument>
Parser::WalkTemplateArgumentList(const clang::TemplateArgumentList* TAL,
clang::TemplateSpecializationTypeLoc* TSTL)
TypeLoc* TSTL)
{
using namespace clang;
@ -2433,11 +2434,11 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL, @@ -2433,11 +2434,11 @@ Type* Parser::WalkType(clang::QualType QualType, const clang::TypeLoc* TL,
assert(TL->getTypeLocClass() == TypeLoc::DependentTemplateSpecialization);
}
TemplateSpecializationTypeLoc TSpecTL;
TemplateSpecializationTypeLoc *TSTL = 0;
DependentTemplateSpecializationTypeLoc TSpecTL;
DependentTemplateSpecializationTypeLoc *TSTL = 0;
if (LocValid)
{
TSpecTL = TL->getAs<TemplateSpecializationTypeLoc>();
TSpecTL = TL->getAs<DependentTemplateSpecializationTypeLoc>();
TSTL = &TSpecTL;
}

3
src/CppParser/Parser.h

@ -101,7 +101,8 @@ private: @@ -101,7 +101,8 @@ private:
WalkVarTemplateSpecialization(const clang::VarTemplateSpecializationDecl* VTS);
VarTemplatePartialSpecialization*
WalkVarTemplatePartialSpecialization(const clang::VarTemplatePartialSpecializationDecl* VTS);
std::vector<TemplateArgument> WalkTemplateArgumentList(const clang::TemplateArgumentList* TAL, clang::TemplateSpecializationTypeLoc* TSTL);
template<typename TypeLoc>
std::vector<TemplateArgument> WalkTemplateArgumentList(const clang::TemplateArgumentList* TAL, TypeLoc* TSTL);
std::vector<TemplateArgument> WalkTemplateArgumentList(const clang::TemplateArgumentList* TAL, const clang::ASTTemplateArgumentListInfo* TSTL);
void WalkVTable(const clang::CXXRecordDecl* RD, Class* C);
QualifiedType GetQualifiedType(const clang::QualType& qual, const clang::TypeLoc* TL = 0);

Loading…
Cancel
Save