Browse Source

Removed the visitors when checking for incomplete declarations and types.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/510/head
Dimitar Dobrev 10 years ago
parent
commit
b7204777b7
  1. 27
      src/Generator/Passes/CheckIgnoredDecls.cs

27
src/Generator/Passes/CheckIgnoredDecls.cs

@ -1,5 +1,4 @@
using System; using CppSharp.AST;
using CppSharp.AST;
using CppSharp.AST.Extensions; using CppSharp.AST.Extensions;
using CppSharp.Types; using CppSharp.Types;
@ -322,7 +321,7 @@ namespace CppSharp.Passes
/// reasons: incomplete definitions, being explicitly ignored, or also /// reasons: incomplete definitions, being explicitly ignored, or also
/// by being a type we do not know how to handle. /// by being a type we do not know how to handle.
/// </remarks> /// </remarks>
bool HasInvalidType(AST.Type type, out string msg) bool HasInvalidType(Type type, out string msg)
{ {
if (type == null) if (type == null)
{ {
@ -364,7 +363,7 @@ namespace CppSharp.Passes
return true; return true;
} }
if (!IsDeclComplete(decl)) if (decl.IsIncomplete)
{ {
msg = "incomplete"; msg = "incomplete";
return true; return true;
@ -380,19 +379,21 @@ namespace CppSharp.Passes
return false; return false;
} }
static bool IsTypeComplete(AST.Type type) private static bool IsTypeComplete(Type type)
{ {
var checker = new TypeCompletionChecker(); var desugared = type.Desugar();
return type.Visit(checker); var finalType = (desugared.GetFinalPointee() ?? desugared).Desugar();
}
static bool IsDeclComplete(Declaration decl) var templateSpecializationType = finalType as TemplateSpecializationType;
{ if (templateSpecializationType != null)
var checker = new TypeCompletionChecker(); finalType = templateSpecializationType.Desugared;
return decl.Visit(checker);
Declaration decl;
if (!finalType.TryGetDeclaration(out decl)) return true;
return !decl.IsIncomplete;
} }
bool IsTypeIgnored(AST.Type type) bool IsTypeIgnored(Type type)
{ {
var checker = new TypeIgnoreChecker(Driver.TypeDatabase); var checker = new TypeIgnoreChecker(Driver.TypeDatabase);
type.Visit(checker); type.Visit(checker);

Loading…
Cancel
Save