new_path = format!("{}::{}{}", crate_name, $ident, $path_suffix);
let crate_name_ident = format_ident!("{}", crate_name);
path.push(parse_quote!(#crate_name_ident));
+ } else if format!("{}", $ident) == "self" {
+ let mut path_iter = partial_path.rsplitn(2, "::");
+ path_iter.next().unwrap();
+ new_path = path_iter.next().unwrap().to_owned();
} else {
new_path = format!("{}{}{}", partial_path, $ident, $path_suffix);
}
},
syn::UseTree::Name(n) => {
push_path!(n.ident, "");
- imports.insert(n.ident.clone(), (new_path, syn::Path { leading_colon: Some(syn::Token![::](Span::call_site())), segments: path }));
+ let imported_ident = syn::Ident::new(new_path.rsplitn(2, "::").next().unwrap(), Span::call_site());
+ imports.insert(imported_ident, (new_path, syn::Path { leading_colon: Some(syn::Token![::](Span::call_site())), segments: path }));
},
syn::UseTree::Group(g) => {
for i in g.items.iter() {
if let Some(t) = single_contained {
match t {
- syn::Type::Reference(_)|syn::Type::Path(_)|syn::Type::Slice(_) => {
+ syn::Type::Reference(_)|syn::Type::Path(_)|syn::Type::Slice(_)|syn::Type::Array(_) => {
let mut v = Vec::new();
let ret_ref = self.write_empty_rust_val_check_suffix(generics, &mut v, t);
let s = String::from_utf8(v).unwrap();
syn::Type::Path(p) => {
let resolved = self.resolve_path(&p.path, generics);
if let Some(arr_ty) = self.is_real_type_array(&resolved) {
- write!(w, ".data").unwrap();
return self.write_empty_rust_val_check_suffix(generics, w, &arr_ty);
}
if self.crate_types.opaques.get(&resolved).is_some() {
syn::Type::Array(a) => {
if let syn::Expr::Lit(l) = &a.len {
if let syn::Lit::Int(i) = &l.lit {
- write!(w, " == [0; {}]", i.base10_digits()).unwrap();
+ write!(w, ".data == [0; {}]", i.base10_digits()).unwrap();
EmptyValExpectedTy::NonPointer
} else { unimplemented!(); }
} else { unimplemented!(); }