From 332a240dcf3ad6706818778fe89c06739820e2e2 Mon Sep 17 00:00:00 2001 From: Anton Trunov Date: Sat, 12 Nov 2022 23:37:26 +0400 Subject: [PATCH] test: left-to-right function/tuple/struct arguments evaluation --- .../Forc.lock | 8 ++ .../Forc.toml | 8 ++ .../json_abi_oracle.json | 22 ++++++ .../src/main.sw | 75 +++++++++++++++++++ .../test.toml | 3 + 5 files changed, 116 insertions(+) create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/Forc.lock create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/Forc.toml create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/json_abi_oracle.json create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/src/main.sw create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/test.toml diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/Forc.lock b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/Forc.lock new file mode 100644 index 00000000000..9a43568d665 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/Forc.lock @@ -0,0 +1,8 @@ +[[package]] +name = 'core' +source = 'path+from-root-88DBE1D69186ED7B' + +[[package]] +name = 'left_to_right_arg_evaluation' +source = 'member' +dependencies = ['core'] diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/Forc.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/Forc.toml new file mode 100644 index 00000000000..5bad3931891 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/Forc.toml @@ -0,0 +1,8 @@ +[project] +authors = ["Fuel Labs "] +license = "Apache-2.0" +name = "left_to_right_arg_evaluation" +entry = "main.sw" + +[dependencies] +core = { path = "../../../../../../../sway-lib-core" } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/json_abi_oracle.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/json_abi_oracle.json new file mode 100644 index 00000000000..563d0f990c4 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/json_abi_oracle.json @@ -0,0 +1,22 @@ +{ + "functions": [ + { + "inputs": [], + "name": "main", + "output": { + "name": "", + "type": 0, + "typeArguments": null + } + } + ], + "loggedTypes": [], + "types": [ + { + "components": null, + "type": "bool", + "typeId": 0, + "typeParameters": null + } + ] +} \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/src/main.sw new file mode 100644 index 00000000000..e7ffd304753 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/src/main.sw @@ -0,0 +1,75 @@ +script; +// This tests function, tuple, struct arguments are evaluated from left to right + +fn func(a: u64, b: u64, c: u64, d: u64) -> u64 { + d +} + +struct MyStruct { + a: u64, + b: u64, + c: u64, + d: u64, +} + +fn main() -> bool { + let mut x: u64 = 0; + + // function arguments evaluation + let func_res = + func( + { + x = 1; + 0 + }, + { + x = 2; + 0 + }, + { + x = 3; + 0 + }, + x + ); + + // tuple evaluation + x = 0; + let tuple_res = + ( + { + x = 1; + 0 + }, + { + x = 2; + 1 + }, + { + x = 3; + 2 + }, + x + ); + + // struct evaluation + x = 0; + let struct_res = + MyStruct { + a: { + x = 1; + 0 + }, + b: { + x = 2; + 1 + }, + c: { + x = 3; + 2 + }, + d: x + }; + + return (func_res == 3) && (tuple_res.3 == 3) && (struct_res.d == 3); +} \ No newline at end of file diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/test.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/test.toml new file mode 100644 index 00000000000..ace9e6f3186 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/left_to_right_func_args_evaluation/test.toml @@ -0,0 +1,3 @@ +category = "run" +expected_result = { action = "return", value = 1 } +validate_abi = true