- writeln!(w, "impl lightning::{} for {} {{", s, trait_name).unwrap(); // TODO: Drop hard-coded crate name here
- impl_trait_for_c!(supertrait, format!(".{}", i));
+ let mut module_iter = s.rsplitn(2, "::");
+ module_iter.next().unwrap();
+ let supertrait_module = module_iter.next().unwrap();
+ let imports = ImportResolver::new(supertrait_module.splitn(2, "::").next().unwrap(), &types.crate_types.lib_ast.dependencies,
+ supertrait_module, &types.crate_types.lib_ast.modules.get(supertrait_module).unwrap().items);
+ let resolver = TypeResolver::new(&supertrait_module, imports, types.crate_types);
+ writeln!(w, "impl {} for {} {{", s, trait_name).unwrap();
+ impl_trait_for_c!(supertrait, format!(".{}", i), &resolver);