Browse Source

Marked incomplete declarations even if their completions cannot be found.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/661/head
Dimitar Dobrev 9 years ago
parent
commit
7f93b4a5bd
  1. 12
      src/CppParser/Parser.cpp
  2. 2
      src/Generator/Passes/ResolveIncompleteDeclsPass.cs

12
src/CppParser/Parser.cpp

@ -1148,11 +1148,11 @@ ClassTemplate* Parser::WalkClassTemplate(const clang::ClassTemplateDecl* TD) @@ -1148,11 +1148,11 @@ ClassTemplate* Parser::WalkClassTemplate(const clang::ClassTemplateDecl* TD)
return CT;
CT = new ClassTemplate();
if (!TD->isThisDeclarationADefinition() &&
TD->getCanonicalDecl()->isThisDeclarationADefinition())
if (!TD->isThisDeclarationADefinition())
{
CT->IsIncomplete = true;
CT->CompleteDeclaration = WalkClassTemplate(TD->getCanonicalDecl());
if (TD->getCanonicalDecl()->isThisDeclarationADefinition())
CT->CompleteDeclaration = WalkClassTemplate(TD->getCanonicalDecl());
}
HandleDeclaration(TD, CT);
@ -1374,11 +1374,11 @@ FunctionTemplate* Parser::WalkFunctionTemplate(const clang::FunctionTemplateDecl @@ -1374,11 +1374,11 @@ FunctionTemplate* Parser::WalkFunctionTemplate(const clang::FunctionTemplateDecl
/*AddToNamespace=*/false);
FT = new FunctionTemplate();
if (!TD->isThisDeclarationADefinition() &&
TD->getCanonicalDecl()->isThisDeclarationADefinition())
if (!TD->isThisDeclarationADefinition())
{
FT->IsIncomplete = true;
FT->CompleteDeclaration = WalkFunctionTemplate(TD->getCanonicalDecl());
if (TD->getCanonicalDecl()->isThisDeclarationADefinition())
FT->CompleteDeclaration = WalkFunctionTemplate(TD->getCanonicalDecl());
}
HandleDeclaration(TD, FT);

2
src/Generator/Passes/ResolveIncompleteDeclsPass.cs

@ -20,7 +20,7 @@ namespace CppSharp.Passes @@ -20,7 +20,7 @@ namespace CppSharp.Passes
if (!base.VisitClassTemplateDecl(template))
return false;
if (template.IsIncomplete)
if (template.IsIncomplete && template.CompleteDeclaration != null)
{
var completeDeclaration = (ClassTemplate) template.CompleteDeclaration;
foreach (var specialization in template.Specializations.Where(

Loading…
Cancel
Save