From 672b74066530791a5f7b8cea1e09337fbdafa127 Mon Sep 17 00:00:00 2001 From: Holger Rapp Date: Tue, 4 Jul 2017 20:55:35 +0200 Subject: [PATCH] Remove Type::detect_has_vtable_cycle. After some discussion in #765 we do not think anymore this it can ever be true. --- src/ir/ty.rs | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/src/ir/ty.rs b/src/ir/ty.rs index d19a488983..5ab7cf082f 100644 --- a/src/ir/ty.rs +++ b/src/ir/ty.rs @@ -14,7 +14,6 @@ use super::template::{AsTemplateParam, TemplateInstantiation, TemplateParameters use super::traversal::{EdgeKind, Trace, Tracer}; use clang::{self, Cursor}; use parse::{ClangItemParser, ParseError, ParseResult}; -use std::cell::Cell; use std::io; use std::mem; @@ -33,9 +32,6 @@ pub struct Type { kind: TypeKind, /// Whether this type is const-qualified. is_const: bool, - /// Don't go into an infinite loop when detecting if we have a vtable or - /// not. - detect_has_vtable_cycle: Cell, } /// The maximum number of items in an array for which Rust implements common @@ -75,7 +71,6 @@ impl Type { layout: layout, kind: kind, is_const: is_const, - detect_has_vtable_cycle: Cell::new(false), } } @@ -244,25 +239,15 @@ impl Type { /// Whether this type has a vtable. pub fn has_vtable(&self, ctx: &BindgenContext) -> bool { - if self.detect_has_vtable_cycle.get() { - return false; - } - - self.detect_has_vtable_cycle.set(true); - // FIXME: Can we do something about template parameters? Huh... - let result = match self.kind { + match self.kind { TypeKind::TemplateAlias(t, _) | TypeKind::Alias(t) | TypeKind::ResolvedTypeRef(t) => ctx.resolve_type(t).has_vtable(ctx), TypeKind::Comp(ref info) => info.has_vtable(ctx), TypeKind::TemplateInstantiation(ref inst) => inst.has_vtable(ctx), _ => false, - }; - - self.detect_has_vtable_cycle.set(false); - - result + } } /// Returns whether this type has a destructor.