Fix linker setting types as dependencies when they are also dependencies

This commit is contained in:
Sofia 2025-08-12 20:47:27 +03:00
parent 3e85ed2705
commit fe6fe6c435

View File

@ -336,10 +336,16 @@ impl<'map> Pass for LinkerPass<'map> {
} }
for ty in import_type(&func.return_type) { for ty in import_type(&func.return_type) {
if unresolved_types.contains_key(&ty) {
continue;
}
unresolved_types.insert(ty, (meta.clone(), true)); unresolved_types.insert(ty, (meta.clone(), true));
} }
for param in &func.parameters { for param in &func.parameters {
for ty in import_type(&param.ty) { for ty in import_type(&param.ty) {
if unresolved_types.contains_key(&ty) {
continue;
}
unresolved_types.insert(ty, (meta.clone(), true)); unresolved_types.insert(ty, (meta.clone(), true));
} }
} }
@ -372,19 +378,7 @@ impl<'map> Pass for LinkerPass<'map> {
} }
}; };
match resolve_types_recursively( imported_types.insert(CustomTypeKey(ty.0.clone(), importer_module.module_id), ty.1);
&TypeKind::CustomType(CustomTypeKey(ty.0.clone(), importer_module.module_id)),
&modules,
HashSet::new(),
) {
Ok(resolved) => {
imported_types.extend(resolved);
}
Err(e) => {
state.note_errors(&vec![e], meta);
return Ok(());
}
}
let mut imported = modules.get(&imported_ty_key.1).unwrap().module.borrow_mut(); let mut imported = modules.get(&imported_ty_key.1).unwrap().module.borrow_mut();
let imported_module_name = imported.name.clone(); let imported_module_name = imported.name.clone();