summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/codegen/mod.rs2
-rw-r--r--src/ir/enum_ty.rs14
2 files changed, 7 insertions, 9 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 784613ba..db8fc4dd 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -2419,8 +2419,6 @@ impl CodeGenerator for Enum {
}
};
- // FIXME(emilio): These should probably use the path so it can
- // disambiguate between namespaces, just like is_opaque etc.
let variation = if self.is_bitfield(ctx, item) {
EnumVariation::Bitfield
} else if self.is_rustified_enum(ctx, item) {
diff --git a/src/ir/enum_ty.rs b/src/ir/enum_ty.rs
index d0968515..4df9fa3e 100644
--- a/src/ir/enum_ty.rs
+++ b/src/ir/enum_ty.rs
@@ -5,7 +5,7 @@ use super::item::Item;
use super::ty::TypeKind;
use clang;
use ir::annotations::Annotations;
-use ir::item::ItemCanonicalName;
+use ir::item::ItemCanonicalPath;
use parse::{ClangItemParser, ParseError};
/// An enum representing custom handling that can be given to a variant.
@@ -130,10 +130,10 @@ impl Enum {
/// Whether the enum should be a bitfield
pub fn is_bitfield(&self, ctx: &BindgenContext, item: &Item) -> bool {
- let name = item.canonical_name(ctx);
+ let path = item.canonical_path(ctx);
let enum_ty = item.expect_type();
- ctx.options().bitfield_enums.matches(&name) ||
+ ctx.options().bitfield_enums.matches(&path[1..].join("::")) ||
(enum_ty.name().is_none() &&
self.variants().iter().any(|v| {
ctx.options().bitfield_enums.matches(&v.name())
@@ -146,10 +146,10 @@ impl Enum {
ctx: &BindgenContext,
item: &Item,
) -> bool {
- let name = item.canonical_name(ctx);
+ let path = item.canonical_path(ctx);
let enum_ty = item.expect_type();
- ctx.options().constified_enum_modules.matches(&name) ||
+ ctx.options().constified_enum_modules.matches(&path[1..].join("::")) ||
(enum_ty.name().is_none() &&
self.variants().iter().any(|v| {
ctx.options().constified_enum_modules.matches(&v.name())
@@ -158,10 +158,10 @@ impl Enum {
/// Whether the enum should be a Rust enum
pub fn is_rustified_enum(&self, ctx: &BindgenContext, item: &Item) -> bool {
- let name = item.canonical_name(ctx);
+ let path = item.canonical_path(ctx);
let enum_ty = item.expect_type();
- ctx.options().rustified_enums.matches(&name) ||
+ ctx.options().rustified_enums.matches(&path[1..].join("::")) ||
(enum_ty.name().is_none() &&
self.variants().iter().any(|v| {
ctx.options().rustified_enums.matches(&v.name())