Skip to content

Commit 63334ee

Browse files
committed
Re-use generate_type_metadata_declaration in generate_concrete_type_declaration.
1 parent e4cabdd commit 63334ee

File tree

1 file changed

+14
-32
lines changed

1 file changed

+14
-32
lines changed

sway-core/src/abi_generation/fuel_abi.rs

Lines changed: 14 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -601,34 +601,17 @@ fn generate_concrete_type_declaration(
601601
type_id: TypeId,
602602
resolved_type_id: TypeId,
603603
) -> Result<ConcreteTypeId, ErrorEmitted> {
604-
let mut new_metadata_types_to_add = Vec::<program_abi::TypeMetadataDeclaration>::new();
605-
let type_metadata_decl = program_abi::TypeMetadataDeclaration {
606-
metadata_type_id: MetadataTypeId(type_id.index()),
607-
type_field: type_id.get_abi_type_str(
608-
handler,
609-
&ctx.to_str_context(),
610-
engines,
611-
resolved_type_id,
612-
)?,
613-
components: type_id.get_abi_type_components(
614-
handler,
615-
ctx,
616-
engines,
617-
metadata_types,
618-
concrete_types,
619-
resolved_type_id,
620-
&mut new_metadata_types_to_add,
621-
)?,
622-
type_parameters: type_id.get_abi_type_parameters(
623-
handler,
624-
ctx,
625-
engines,
626-
metadata_types,
627-
concrete_types,
628-
resolved_type_id,
629-
&mut new_metadata_types_to_add,
630-
)?,
631-
};
604+
let mut metadata_types_to_add = Vec::<program_abi::TypeMetadataDeclaration>::new();
605+
let type_metadata_decl = generate_type_metadata_declaration(
606+
handler,
607+
ctx,
608+
engines,
609+
metadata_types,
610+
concrete_types,
611+
type_id,
612+
resolved_type_id,
613+
&mut metadata_types_to_add,
614+
)?;
632615

633616
let metadata_type_id = if type_metadata_decl.type_parameters.is_some()
634617
|| type_metadata_decl.components.is_some()
@@ -653,8 +636,7 @@ fn generate_concrete_type_declaration(
653636
Ok(type_arguments)
654637
})?;
655638

656-
metadata_types.push(type_metadata_decl);
657-
metadata_types.extend(new_metadata_types_to_add);
639+
metadata_types.extend(metadata_types_to_add);
658640

659641
let (type_field, concrete_type_id) =
660642
type_id.get_abi_type_field_and_concrete_id(handler, ctx, engines, resolved_type_id)?;
@@ -681,7 +663,7 @@ fn generate_type_metadata_declaration(
681663
type_id: TypeId,
682664
resolved_type_id: TypeId,
683665
metadata_types_to_add: &mut Vec<program_abi::TypeMetadataDeclaration>,
684-
) -> Result<(), ErrorEmitted> {
666+
) -> Result<program_abi::TypeMetadataDeclaration, ErrorEmitted> {
685667
let mut new_metadata_types_to_add = Vec::<program_abi::TypeMetadataDeclaration>::new();
686668
let components = type_id.get_abi_type_components(
687669
handler,
@@ -716,7 +698,7 @@ fn generate_type_metadata_declaration(
716698
metadata_types_to_add.push(type_metadata_decl.clone());
717699
metadata_types_to_add.extend(new_metadata_types_to_add);
718700

719-
Ok(())
701+
Ok(type_metadata_decl)
720702
}
721703

722704
fn generate_logged_types(

0 commit comments

Comments
 (0)