Browse Source

Check if a function already exists before adding a new one.

pull/1/head
triton 13 years ago
parent
commit
953779d0ed
  1. 16
      src/Parser/Parser.cpp

16
src/Parser/Parser.cpp

@ -969,8 +969,18 @@ Cxxi::Function^ Parser::WalkFunction(clang::FunctionDecl* FD, bool IsDependent)
using namespace clang; using namespace clang;
using namespace clix; using namespace clix;
auto F = gcnew Cxxi::Function(); auto NS = GetNamespace(FD);
assert(NS && "Expected a valid namespace");
auto Name = marshalString<E_UTF8>(FD->getNameAsString());
Cxxi::Function^ F = NS->FindFunction(Name, /*Create=*/ false);
if (F != nullptr)
return F;
F = gcnew Cxxi::Function();
WalkFunction(FD, F, IsDependent); WalkFunction(FD, F, IsDependent);
NS->Functions->Add(F);
return F; return F;
} }
@ -1235,10 +1245,6 @@ Cxxi::Declaration^ Parser::WalkDeclaration(clang::Decl* D,
auto F = WalkFunction(FD); auto F = WalkFunction(FD);
HandleComments(FD, F); HandleComments(FD, F);
auto NS = GetNamespace(FD);
F->Namespace = NS;
NS->Functions->Add(F);
Decl = F; Decl = F;
break; break;

Loading…
Cancel
Save