From 9ca72f9514323248dc2fac8d8dabae14ce701082 Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 9 Sep 2024 16:13:28 -0700 Subject: [PATCH 1/7] fix: log decoding in libaries --- .../should_pass/unit_tests/lib_multi_test/test.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_multi_test/test.toml b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_multi_test/test.toml index 0f3f6d7e866..92a1a1377dc 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_multi_test/test.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_multi_test/test.toml @@ -1 +1,2 @@ category = "unit_tests_pass" +expected_decoded_test_logs = ["4"] From cf61fb5a79e5a1a249b273f39009eaf4d419bdc3 Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 9 Sep 2024 16:31:19 -0700 Subject: [PATCH 2/7] add failing test --- .../{log_decode => lib_log_decode}/.gitignore | 0 .../should_pass/unit_tests/lib_log_decode/Forc.lock | 13 +++++++++++++ .../should_pass/unit_tests/lib_log_decode/Forc.toml | 8 ++++++++ .../unit_tests/lib_log_decode/src/lib.sw | 10 ++++++++++ .../{log_decode => lib_log_decode}/test.toml | 0 .../unit_tests/script_log_decode/.gitignore | 2 ++ .../{log_decode => script_log_decode}/Forc.lock | 0 .../{log_decode => script_log_decode}/Forc.toml | 2 +- .../{log_decode => script_log_decode}/src/main.sw | 0 .../unit_tests/script_log_decode/test.toml | 3 +++ 10 files changed, 37 insertions(+), 1 deletion(-) rename test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/{log_decode => lib_log_decode}/.gitignore (100%) create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.lock create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.toml create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/src/lib.sw rename test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/{log_decode => lib_log_decode}/test.toml (100%) create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/.gitignore rename test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/{log_decode => script_log_decode}/Forc.lock (100%) rename test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/{log_decode => script_log_decode}/Forc.toml (86%) rename test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/{log_decode => script_log_decode}/src/main.sw (100%) create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/test.toml diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/.gitignore b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/.gitignore similarity index 100% rename from test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/.gitignore rename to test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/.gitignore diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.lock b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.lock new file mode 100644 index 00000000000..70b69e79183 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.lock @@ -0,0 +1,13 @@ +[[package]] +name = "core" +source = "path+from-root-A1A671B3B44F9A9A" + +[[package]] +name = "lib_log_decode" +source = "member" +dependencies = ["std"] + +[[package]] +name = "std" +source = "path+from-root-A1A671B3B44F9A9A" +dependencies = ["core"] diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.toml b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.toml new file mode 100644 index 00000000000..c0270bb5fd6 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.toml @@ -0,0 +1,8 @@ +[project] +authors = ["Fuel Labs "] +entry = "lib.sw" +license = "Apache-2.0" +name = "lib_log_decode" + +[dependencies] +std = { path = "../../../../reduced_std_libs/sway-lib-std-assert" } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/src/lib.sw b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/src/lib.sw new file mode 100644 index 00000000000..8904a76f6c2 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/src/lib.sw @@ -0,0 +1,10 @@ +library; + +#[test] +fn test_fn() { + let a = 10; + log(a); + let b = 30; + log(b); + assert_eq(a, 10) +} diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/test.toml b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/test.toml similarity index 100% rename from test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/test.toml rename to test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/test.toml diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/.gitignore b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/.gitignore new file mode 100644 index 00000000000..77d3844f58c --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/.gitignore @@ -0,0 +1,2 @@ +out +target diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/Forc.lock b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.lock similarity index 100% rename from test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/Forc.lock rename to test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.lock diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/Forc.toml b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.toml similarity index 86% rename from test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/Forc.toml rename to test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.toml index 63d055cdfb9..c8de77afce9 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/Forc.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.toml @@ -2,7 +2,7 @@ authors = ["Fuel Labs "] entry = "main.sw" license = "Apache-2.0" -name = "log_decode" +name = "script_log_decode" [dependencies] std = { path = "../../../../reduced_std_libs/sway-lib-std-assert" } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/src/main.sw similarity index 100% rename from test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/log_decode/src/main.sw rename to test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/src/main.sw diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/test.toml b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/test.toml new file mode 100644 index 00000000000..024d6051871 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/test.toml @@ -0,0 +1,3 @@ +category = "unit_tests_pass" +expected_decoded_test_logs = ["10", "30"] +experimental_new_encoding = true From c43ff3d10c2640f9a9ea4afa09893174edcb82c3 Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 9 Sep 2024 16:33:52 -0700 Subject: [PATCH 3/7] fix in fuel_abi.rs --- sway-core/src/abi_generation/fuel_abi.rs | 29 +++++++++++++++--------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/sway-core/src/abi_generation/fuel_abi.rs b/sway-core/src/abi_generation/fuel_abi.rs index 447d29341cb..7fdd704155d 100644 --- a/sway-core/src/abi_generation/fuel_abi.rs +++ b/sway-core/src/abi_generation/fuel_abi.rs @@ -181,17 +181,24 @@ pub fn generate_program_abi( configurables: Some(configurables), } } - TyProgramKind::Library { .. } => program_abi::ProgramABI { - program_type: "library".to_string(), - spec_version, - encoding_version, - metadata_types: vec![], - concrete_types: vec![], - functions: vec![], - logged_types: None, - messages_types: None, - configurables: None, - }, + TyProgramKind::Library { .. } => { + let logged_types = + generate_logged_types(handler, ctx, engines, metadata_types, concrete_types)?; + let messages_types = + generate_messages_types(handler, ctx, engines, metadata_types, concrete_types)?; + + program_abi::ProgramABI { + program_type: "library".to_string(), + spec_version, + encoding_version, + metadata_types: metadata_types.to_vec(), + concrete_types: concrete_types.to_vec(), + functions: vec![], + logged_types: Some(logged_types), + messages_types: Some(messages_types), + configurables: None, + } + } }; standardize_json_abi_types(&mut program_abi); From da3aa995b891aa3aad5592a407eb0aa65b581559 Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 9 Sep 2024 16:36:32 -0700 Subject: [PATCH 4/7] revert lib_multi_test --- .../should_pass/unit_tests/lib_multi_test/test.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_multi_test/test.toml b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_multi_test/test.toml index 92a1a1377dc..0f3f6d7e866 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_multi_test/test.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_multi_test/test.toml @@ -1,2 +1 @@ category = "unit_tests_pass" -expected_decoded_test_logs = ["4"] From e7f890a8ce16017544747e8df43dbbfe37166627 Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 9 Sep 2024 16:39:26 -0700 Subject: [PATCH 5/7] update lock file --- .../should_pass/unit_tests/script_log_decode/Forc.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.lock b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.lock index 196dae73163..ff4f7f79e7f 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.lock +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/script_log_decode/Forc.lock @@ -1,13 +1,13 @@ [[package]] name = "core" -source = "path+from-root-A2C6CB9CD0980A06" +source = "path+from-root-2988E4B52C5E1B31" [[package]] -name = "log_decode" +name = "script_log_decode" source = "member" dependencies = ["std"] [[package]] name = "std" -source = "path+from-root-A2C6CB9CD0980A06" +source = "path+from-root-2988E4B52C5E1B31" dependencies = ["core"] From 122a1ef0a535661e3cedef638ba4675a57a53d3c Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 9 Sep 2024 17:24:51 -0700 Subject: [PATCH 6/7] add tests from original repro --- .../unit_tests/lib_log_decode/Forc.toml | 2 +- .../unit_tests/lib_log_decode/src/lib.sw | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.toml b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.toml index c0270bb5fd6..ec2c43496a9 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/Forc.toml @@ -5,4 +5,4 @@ license = "Apache-2.0" name = "lib_log_decode" [dependencies] -std = { path = "../../../../reduced_std_libs/sway-lib-std-assert" } +std = { path = "../../../../../../../sway-lib-std" } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/src/lib.sw b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/src/lib.sw index 8904a76f6c2..bd0e79fc596 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/src/lib.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/src/lib.sw @@ -1,5 +1,7 @@ library; +use std::flags::disable_panic_on_overflow; + #[test] fn test_fn() { let a = 10; @@ -8,3 +10,25 @@ fn test_fn() { log(b); assert_eq(a, 10) } + +#[test] +fn math_u16_overflow_mul() { + disable_panic_on_overflow(); + + let a = (u16::max() / 2 ) + 1; + let b = a * 2; + + log(b); + assert(b == 0_u16) +} + +#[test] +fn math_u32_overflow_mul() { + disable_panic_on_overflow(); + + let a = (u32::max() / 2 ) + 1; + let b = a * 2; + + log(b); + assert(b == 0_u32) +} \ No newline at end of file From e9451a9614ede7c7e0e36f71de58cf2f9bad747a Mon Sep 17 00:00:00 2001 From: Sophie Date: Mon, 9 Sep 2024 17:27:45 -0700 Subject: [PATCH 7/7] update test.toml --- .../should_pass/unit_tests/lib_log_decode/test.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/test.toml b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/test.toml index 024d6051871..5161cc99146 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/test.toml +++ b/test/src/e2e_vm_tests/test_programs/should_pass/unit_tests/lib_log_decode/test.toml @@ -1,3 +1,3 @@ category = "unit_tests_pass" -expected_decoded_test_logs = ["10", "30"] +expected_decoded_test_logs = ["10", "30", "0", "0"] experimental_new_encoding = true