fix(abigen): dont generate empty shared_types module (#965)

This commit is contained in:
Matthias Seitz 2022-02-24 23:13:06 +01:00 committed by GitHub
parent f5ef8149e5
commit b6c22e9bcc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 5 deletions

View File

@ -113,11 +113,13 @@ impl MultiExpansionResult {
let Self { contracts, shared_types, .. } = self;
tokens.extend(quote! {
pub mod #shared_types_module {
#( #shared_types )*
}
});
if !shared_types.is_empty() {
tokens.extend(quote! {
pub mod #shared_types_module {
#( #shared_types )*
}
});
}
tokens.extend(contracts.into_iter().map(|(exp, _)| exp.into_tokens()));
@ -977,6 +979,22 @@ mod tests {
})
}
#[test]
fn does_not_generate_shared_types_if_empty() {
let gen = Abigen::new(
"Greeter",
r#"[
struct Inner {bool a;}
greet1() (uint256)
greet2(Inner inner) (string)
]"#,
)
.unwrap();
let tokens = MultiExpansion::new(vec![gen.expand().unwrap()]).expand_inplace().to_string();
assert!(!tokens.contains("mod __shared_types"));
}
#[test]
fn can_deduplicate_types() {
let tmp = TempProject::dapptools().unwrap();