Skip to content

Commit d2cedee

Browse files
authored
Merge pull request aldanor#17 from magnusuMET/bugfix/crate_name_assumption
Fix hdf5 derive name on crate rename
2 parents 41d0221 + 456ee92 commit d2cedee

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
## hdf5 unreleased
44
## hdf5-sys unreleased
55
## hdf5-src unreleased
6+
67
## hdf5-derive unreleased
8+
- Fixed crate name assumption
9+
710
## hdf5-types unreleased
811

12+
913
## hdf5-src v0.9.2
1014

1115
Release date: Aug 14, 2024.

hdf5-derive/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ edition.workspace = true
1616
proc-macro = true
1717

1818
[dependencies]
19+
proc-macro-crate = "3.2.0"
1920
proc-macro-error = { version = "1.0", default-features = false }
2021
proc-macro2 = "1.0"
2122
quote = "1.0"

hdf5-derive/src/lib.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,19 @@ pub fn derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
2020
let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
2121
let body = impl_trait(&name, &input.data, &input.attrs, &ty_generics);
2222
let dummy = Ident::new(&format!("_IMPL_H5TYPE_FOR_{}", name), Span::call_site());
23+
24+
// Determine name of parent crate, even if renamed using "package"
25+
let crate_name = match proc_macro_crate::crate_name("hdf5-metno").unwrap() {
26+
proc_macro_crate::FoundCrate::Itself => quote!(::hdf5_metno),
27+
proc_macro_crate::FoundCrate::Name(name) => {
28+
let ident = Ident::new(&name, Span::call_site());
29+
quote!( ::#ident )
30+
}
31+
};
2332
let expanded = quote! {
2433
#[allow(dead_code, unused_variables, unused_attributes)]
2534
const #dummy: () = {
26-
use ::hdf5_metno as _h5;
35+
use #crate_name as _h5;
2736

2837
#[automatically_derived]
2938
unsafe impl #impl_generics _h5::types::H5Type for #name #ty_generics #where_clause {

0 commit comments

Comments
 (0)