summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbindgen/src/codegen/mod.rs24
-rw-r--r--libbindgen/src/ir/context.rs4
-rw-r--r--libbindgen/src/ir/function.rs3
-rw-r--r--libbindgen/src/ir/item.rs59
4 files changed, 59 insertions, 31 deletions
diff --git a/libbindgen/src/codegen/mod.rs b/libbindgen/src/codegen/mod.rs
index a522d887..c8cd4cdf 100644
--- a/libbindgen/src/codegen/mod.rs
+++ b/libbindgen/src/codegen/mod.rs
@@ -33,7 +33,8 @@ fn root_import(ctx: &BindgenContext) -> P<ast::Item> {
assert!(ctx.options().enable_cxx_namespaces, "Somebody messed it up");
let root = ctx.root_module().canonical_name(ctx);
let root_ident = ctx.rust_ident(&root);
- quote_item!(ctx.ext_cx(), #[allow(unused_imports)] use $root_ident;).unwrap()
+ quote_item!(ctx.ext_cx(), #[allow(unused_imports)] use $root_ident;)
+ .unwrap()
}
struct CodegenResult {
@@ -276,7 +277,7 @@ impl CodeGenerator for Module {
if !ctx.options().enable_cxx_namespaces {
for child in self.children() {
ctx.resolve_item(*child)
- .codegen(ctx, result, whitelisted_items, &());
+ .codegen(ctx, result, whitelisted_items, &());
}
return;
}
@@ -286,7 +287,7 @@ impl CodeGenerator for Module {
for child in self.children() {
if whitelisted_items.contains(child) {
ctx.resolve_item(*child)
- .codegen(ctx, result, whitelisted_items, &());
+ .codegen(ctx, result, whitelisted_items, &());
}
}
});
@@ -424,12 +425,15 @@ impl CodeGenerator for Type {
// converted to rust types in fields, arguments, and such.
return;
}
- TypeKind::Comp(ref ci) => ci.codegen(ctx, result, whitelisted_items, item),
+ TypeKind::Comp(ref ci) => {
+ ci.codegen(ctx, result, whitelisted_items, item)
+ }
TypeKind::TemplateAlias(inner, _) => {
// NB: The inner Alias will pick the correct
// applicable_template_args.
let inner_item = ctx.resolve_item(inner);
- inner_item.expect_type().codegen(ctx, result, whitelisted_items, inner_item);
+ inner_item.expect_type()
+ .codegen(ctx, result, whitelisted_items, inner_item);
}
TypeKind::Alias(ref spelling, inner) => {
let inner_item = ctx.resolve_item(inner);
@@ -487,7 +491,9 @@ impl CodeGenerator for Type {
let typedef = generics.build().build_ty(inner_rust_type);
result.push(typedef)
}
- TypeKind::Enum(ref ei) => ei.codegen(ctx, result, whitelisted_items, item),
+ TypeKind::Enum(ref ei) => {
+ ei.codegen(ctx, result, whitelisted_items, item)
+ }
ref u @ TypeKind::UnresolvedTypeRef(..) => {
unreachable!("Should have been resolved after parsing {:?}!", u)
}
@@ -1075,7 +1081,8 @@ impl CodeGenerator for CompInfo {
if applicable_template_args.is_empty() && !self.found_unknown_attr() {
for var in self.inner_vars() {
- ctx.resolve_item(*var).codegen(ctx, result, whitelisted_items, &());
+ ctx.resolve_item(*var)
+ .codegen(ctx, result, whitelisted_items, &());
}
if let Some(layout) = layout {
@@ -1177,7 +1184,8 @@ impl MethodCodegen for Method {
return; // FIXME
}
// First of all, output the actual function.
- ctx.resolve_item(self.signature()).codegen(ctx, result, whitelisted_items, &());
+ ctx.resolve_item(self.signature())
+ .codegen(ctx, result, whitelisted_items, &());
let function_item = ctx.resolve_item(self.signature());
let function = function_item.expect_function();
diff --git a/libbindgen/src/ir/context.rs b/libbindgen/src/ir/context.rs
index b7754a40..7c643f04 100644
--- a/libbindgen/src/ir/context.rs
+++ b/libbindgen/src/ir/context.rs
@@ -938,7 +938,9 @@ impl<'ctx> BindgenContext<'ctx> {
let name = item.canonical_name(self);
match *item.kind() {
- ItemKind::Module(..) => self.options().enable_cxx_namespaces,
+ ItemKind::Module(..) => {
+ self.options().enable_cxx_namespaces
+ }
ItemKind::Function(_) => {
self.options().whitelisted_functions.matches(&name)
}
diff --git a/libbindgen/src/ir/function.rs b/libbindgen/src/ir/function.rs
index 60bd1e5b..5a864cfc 100644
--- a/libbindgen/src/ir/function.rs
+++ b/libbindgen/src/ir/function.rs
@@ -150,7 +150,8 @@ impl FunctionSig {
CXCursor_CXXMethod => {
// For CXCursor_FunctionDecl, cursor.args() is the reliable way
// to get parameter names and types.
- cursor.args().expect("It cannot be None because we are in a method/function")
+ cursor.args()
+ .unwrap()
.iter()
.map(|arg| {
let arg_ty = arg.cur_type();
diff --git a/libbindgen/src/ir/item.rs b/libbindgen/src/ir/item.rs
index 176eca14..c370c8b0 100644
--- a/libbindgen/src/ir/item.rs
+++ b/libbindgen/src/ir/item.rs
@@ -527,7 +527,10 @@ impl Item {
}
/// Get the target item id for name generation.
- fn name_target(&self, ctx: &BindgenContext, for_name_checking: bool) -> ItemId {
+ fn name_target(&self,
+ ctx: &BindgenContext,
+ for_name_checking: bool)
+ -> ItemId {
let mut item = self;
loop {
match *item.kind() {
@@ -535,24 +538,31 @@ impl Item {
match *ty.kind() {
// If we're a template specialization, our name is our
// parent's name.
- TypeKind::Comp(ref ci) if ci.is_template_specialization() => {
- item = ctx.resolve_item(ci.specialized_template().unwrap());
- },
+ TypeKind::Comp(ref ci)
+ if ci.is_template_specialization() => {
+ let specialized =
+ ci.specialized_template().unwrap();
+ item = ctx.resolve_item(specialized);
+ }
// Same as above.
TypeKind::ResolvedTypeRef(inner) |
TypeKind::TemplateRef(inner, _) => {
item = ctx.resolve_item(inner);
}
- // Template aliases use their inner alias type's name if we
- // are checking names for whitelisting/replacement/etc.
- TypeKind::TemplateAlias(inner, _) if for_name_checking => {
+ // Template aliases use their inner alias type's name if
+ // we are checking names for
+ // whitelisting/replacement/etc.
+ TypeKind::TemplateAlias(inner, _)
+ if for_name_checking => {
item = ctx.resolve_item(inner);
- assert_eq!(item.id(), item.name_target(ctx, for_name_checking));
+ assert_eq!(item.id(),
+ item.name_target(ctx,
+ for_name_checking));
return item.id();
}
_ => return item.id(),
}
- },
+ }
_ => return item.id(),
}
}
@@ -580,9 +590,7 @@ impl Item {
let func = item.expect_function();
func.name() == func_name
})
- .enumerate()
- .find(|&(_, ref method)| method.signature() == self.id())
- .map(|(idx, _)| idx);
+ .position(|method| method.signature() == self.id());
}
}
@@ -595,24 +603,33 @@ impl Item {
/// The `for_name_checking` boolean parameter informs us whether we are
/// asking for the name in order to do a whitelisting/replacement/etc check
/// or if we are instead using it for code generation.
- fn base_name(&self, ctx: &BindgenContext, for_name_checking: bool) -> String {
+ fn base_name(&self,
+ ctx: &BindgenContext,
+ for_name_checking: bool)
+ -> String {
match *self.kind() {
ItemKind::Var(ref var) => var.name().to_owned(),
ItemKind::Module(ref module) => {
module.name()
.map(ToOwned::to_owned)
- .unwrap_or_else(|| format!("_bindgen_mod_{}", self.exposed_id(ctx)))
- },
+ .unwrap_or_else(|| {
+ format!("_bindgen_mod_{}", self.exposed_id(ctx))
+ })
+ }
ItemKind::Type(ref ty) => {
let name = match *ty.kind() {
- TypeKind::ResolvedTypeRef(..) =>
- panic!("should have resolved this in name_target()"),
- TypeKind::TemplateAlias(..) if !for_name_checking => Some(""),
- TypeKind::TemplateAlias(..) => None,
+ TypeKind::ResolvedTypeRef(..) => {
+ panic!("should have resolved this in name_target()")
+ }
+ TypeKind::TemplateAlias(..) => {
+ if for_name_checking { None } else { Some("") }
+ }
_ => ty.name(),
};
name.map(ToOwned::to_owned)
- .unwrap_or_else(|| format!("_bindgen_ty_{}", self.exposed_id(ctx)))
+ .unwrap_or_else(|| {
+ format!("_bindgen_ty_{}", self.exposed_id(ctx))
+ })
}
ItemKind::Function(ref fun) => {
let mut name = fun.name().to_owned();
@@ -624,7 +641,7 @@ impl Item {
}
name
- },
+ }
}
}