summaryrefslogtreecommitdiff
path: root/src/codegen/mod.rs
diff options
context:
space:
mode:
authorNikhil Shagrithaya <nikhilshagri@gmail.com>2017-02-27 16:01:15 +0530
committerEmilio Cobos Álvarez <emilio@crisal.io>2017-04-04 01:05:34 +0200
commit1714f947e062a7b90ebda71d190daccba87ab32d (patch)
tree22b835655de2263098f7d4f5d08f9d8f90b96bcd /src/codegen/mod.rs
parent8f1e5f5ad4fff230b06cdfca868266a28ada3881 (diff)
Add codegen for destructors.
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r--src/codegen/mod.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index fb6c839d..d1523273 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -1597,6 +1597,20 @@ impl CodeGenerator for CompInfo {
self);
}
}
+
+ if ctx.options().codegen_config.destructor {
+ if let Some(destructor) = *self.destructor() {
+ Method::new(MethodKind::Destructor,
+ destructor,
+ false)
+ .codegen_method(ctx,
+ &mut methods,
+ &mut method_names,
+ result,
+ whitelisted_items,
+ self);
+ }
+ }
}
// NB: We can't use to_rust_ty here since for opaque types this tries to
@@ -1701,6 +1715,7 @@ impl MethodCodegen for Method {
let signature_item = ctx.resolve_item(function.signature());
let mut name = match self.kind() {
MethodKind::Constructor => "new".into(),
+ MethodKind::Destructor => "__bindgen_destructor__".into(),
_ => function.name().to_owned(),
};