Skip to content

Commit c6a9b3b

Browse files
committed
codegen: Fix typedef re-export in namespaces when bindings aren't at the root.
1 parent 615130d commit c6a9b3b

File tree

6 files changed

+15
-8
lines changed

6 files changed

+15
-8
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Cargo
22
target/
33
*~
4+
./bindgen-integration/Cargo.lock
45
#*#

bindgen-integration/build.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ fn main() {
1313

1414
let bindings = Builder::default()
1515
.no_unstable_rust()
16+
.enable_cxx_namespaces()
17+
.raw_line("pub use self::root::*;")
1618
.header("cpp/Test.h")
1719
.clang_arg("-x")
1820
.clang_arg("c++")

bindgen-integration/cpp/Test.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,10 @@ class Test {
99
Test(double foo);
1010
};
1111

12+
namespace testing {
13+
1214
typedef Test TypeAlias;
15+
16+
} // namespace testing
17+
18+
typedef testing::TypeAlias TypeAlias;

src/codegen/mod.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -539,12 +539,10 @@ impl CodeGenerator for Type {
539539
};
540540

541541
let typedef = if let Some(mut p) = simple_enum_path {
542-
if p.segments.len() == 1 {
543-
p.segments.insert(0, ast::PathSegment {
544-
identifier: ctx.ext_cx().ident_of("self"),
545-
parameters: None,
546-
});
547-
}
542+
p.segments.insert(0, ast::PathSegment {
543+
identifier: ctx.ext_cx().ident_of("self"),
544+
parameters: None,
545+
});
548546
typedef.use_().build(p).as_(rust_name)
549547
} else {
550548
let mut generics = typedef.type_(rust_name).generics();

tests/expectations/tests/issue-410.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub mod root {
1010
pub mod JS {
1111
#[allow(unused_imports)]
1212
use self::super::super::root;
13-
pub use root::_bindgen_ty_1 as JSWhyMagic;
13+
pub use self::root::_bindgen_ty_1 as JSWhyMagic;
1414
#[repr(C)]
1515
#[derive(Debug, Copy)]
1616
pub struct Value {

tests/expectations/tests/reparented_replacement.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ pub mod root {
2525
fn clone(&self) -> Self { *self }
2626
}
2727
}
28-
pub use root::foo::Bar as ReferencesBar;
28+
pub use self::root::foo::Bar as ReferencesBar;
2929
}

0 commit comments

Comments
 (0)