Browse Source

Add template functions to their context

This also fixes a minor memory leak.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1362/head
Dimitar Dobrev 5 years ago
parent
commit
a1dc53c03c
  1. 9
      src/CppParser/Parser.cpp
  2. 2
      src/CppParser/Parser.h

9
src/CppParser/Parser.cpp

@ -1571,7 +1571,7 @@ FunctionTemplate* Parser::WalkFunctionTemplate(const clang::FunctionTemplateDecl @@ -1571,7 +1571,7 @@ FunctionTemplate* Parser::WalkFunctionTemplate(const clang::FunctionTemplateDecl
if (auto MD = dyn_cast<CXXMethodDecl>(TemplatedDecl))
Function = WalkMethodCXX(MD);
else
Function = WalkFunction(TemplatedDecl, /*AddToNamespace=*/false);
Function = WalkFunction(TemplatedDecl);
FT = new FunctionTemplate();
HandleDeclaration(TD, FT);
@ -3304,7 +3304,7 @@ void Parser::WalkFunction(const clang::FunctionDecl* FD, Function* F) @@ -3304,7 +3304,7 @@ void Parser::WalkFunction(const clang::FunctionDecl* FD, Function* F)
F->qualifiedType = GetQualifiedType(FD->getType(), &FTL);
}
Function* Parser::WalkFunction(const clang::FunctionDecl* FD, bool AddToNamespace)
Function* Parser::WalkFunction(const clang::FunctionDecl* FD)
{
using namespace clang;
@ -3320,10 +3320,7 @@ Function* Parser::WalkFunction(const clang::FunctionDecl* FD, bool AddToNamespac @@ -3320,10 +3320,7 @@ Function* Parser::WalkFunction(const clang::FunctionDecl* FD, bool AddToNamespac
F = new Function();
HandleDeclaration(FD, F);
if (AddToNamespace)
NS->Functions.push_back(F);
NS->Functions.push_back(F);
WalkFunction(FD, F);
return F;

2
src/CppParser/Parser.h

@ -73,7 +73,7 @@ private: @@ -73,7 +73,7 @@ private:
Declaration* WalkDeclarationDef(clang::Decl* D);
Enumeration* WalkEnum(const clang::EnumDecl* ED);
Enumeration::Item* WalkEnumItem(clang::EnumConstantDecl* ECD);
Function* WalkFunction(const clang::FunctionDecl* FD, bool AddToNamespace = true);
Function* WalkFunction(const clang::FunctionDecl* FD);
void EnsureCompleteRecord(const clang::RecordDecl* Record, DeclarationContext* NS, Class* RC);
Class* GetRecord(const clang::RecordDecl* Record, bool& IsComplete);
Class* WalkRecord(const clang::RecordDecl* Record);

Loading…
Cancel
Save