Fix struct fields not being linked correctly for foreign types
This commit is contained in:
parent
1275063dc2
commit
b93b7aa52b
@ -12,7 +12,7 @@ use crate::{
|
|||||||
error_raporting::{ErrorModules, ReidError},
|
error_raporting::{ErrorModules, ReidError},
|
||||||
mir::{
|
mir::{
|
||||||
pass::BinopKey, BinopDefinition, CustomTypeKey, FunctionDefinitionKind, FunctionParam, SourceModuleId,
|
pass::BinopKey, BinopDefinition, CustomTypeKey, FunctionDefinitionKind, FunctionParam, SourceModuleId,
|
||||||
TypeDefinition, TypeKind,
|
StructType, TypeDefinition, TypeDefinitionKind, TypeKind,
|
||||||
},
|
},
|
||||||
parse_module,
|
parse_module,
|
||||||
};
|
};
|
||||||
@ -441,6 +441,22 @@ impl<'map> Pass for LinkerPass<'map> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn module(&mut self, module: &mut Module, mut state: PassState<Self::Data, Self::TError>) -> PassResult {
|
||||||
|
let extern_types = &state.scope.data.extern_imported_types.get(&module.module_id);
|
||||||
|
if let Some(extern_types) = extern_types {
|
||||||
|
for ty in &mut module.typedefs {
|
||||||
|
match &mut ty.kind {
|
||||||
|
TypeDefinitionKind::Struct(StructType(fields)) => {
|
||||||
|
for field in fields {
|
||||||
|
field.1 = field.1.update_imported(extern_types, module.module_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn function(
|
fn function(
|
||||||
&mut self,
|
&mut self,
|
||||||
function: &mut FunctionDefinition,
|
function: &mut FunctionDefinition,
|
||||||
|
Loading…
Reference in New Issue
Block a user