From 85165ed8c07d516601d6924cb297111db6bdb9fb Mon Sep 17 00:00:00 2001 From: Willem Wyndham Date: Tue, 10 Sep 2024 16:44:40 -0400 Subject: [PATCH] fix: fail to generate help for recursive custom types Initial minimal failing example --- .../tests/fixtures/test-wasms/custom_type/src/lib.rs | 10 ++++++++++ cmd/crates/soroban-test/tests/it/help.rs | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/cmd/crates/soroban-test/tests/fixtures/test-wasms/custom_type/src/lib.rs b/cmd/crates/soroban-test/tests/fixtures/test-wasms/custom_type/src/lib.rs index 9e4b442b5..4258975af 100644 --- a/cmd/crates/soroban-test/tests/fixtures/test-wasms/custom_type/src/lib.rs +++ b/cmd/crates/soroban-test/tests/fixtures/test-wasms/custom_type/src/lib.rs @@ -45,6 +45,12 @@ pub enum ComplexEnum { Void, } +#[contracttype] +pub enum RecursiveEnum { + Vec(Vec), + Void, +} + #[contracterror] #[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] #[repr(u32)] @@ -103,6 +109,10 @@ impl Contract { complex } + pub fn recursive_enum(_env: Env, recursive: RecursiveEnum) -> RecursiveEnum { + recursive + } + pub fn addresse(_env: Env, addresse: Address) -> Address { addresse } diff --git a/cmd/crates/soroban-test/tests/it/help.rs b/cmd/crates/soroban-test/tests/it/help.rs index ef84a361b..cf28a22f2 100644 --- a/cmd/crates/soroban-test/tests/it/help.rs +++ b/cmd/crates/soroban-test/tests/it/help.rs @@ -51,6 +51,13 @@ async fn complex_enum_help() { assert!(output.contains(r#""Void"'"#)); } +#[tokio::test] +async fn recursive_enum_help() { + let output = invoke_custom("recursive_enum", "--help").await.unwrap(); + assert!(output.contains(r#"--complex"#,)); + assert!(output.contains(r#""Void"'"#)); +} + #[tokio::test] async fn multi_arg_failure() { assert!(matches!(