diff --git a/compiler/noirc_frontend/src/tests/unused_items.rs b/compiler/noirc_frontend/src/tests/unused_items.rs index 582f4ab20d1..2b0077b4889 100644 --- a/compiler/noirc_frontend/src/tests/unused_items.rs +++ b/compiler/noirc_frontend/src/tests/unused_items.rs @@ -332,13 +332,15 @@ fn considers_struct_as_constructed_if_trait_method_is_called() { #[test] fn considers_struct_as_constructed_if_mentioned_in_let_type() { let src = " - pub struct Bar {} + struct Bar {} - pub fn foo(array: [Bar; 1]) { + fn foo(array: [Bar; 1]) { let _: Bar = array[0]; } - fn main() {} + fn main() { + let _ = foo; + } "; assert_no_errors!(src); } @@ -347,13 +349,15 @@ fn considers_struct_as_constructed_if_mentioned_in_let_type() { #[test] fn considers_struct_as_constructed_if_mentioned_in_return_type() { let src = " - pub struct Bar {} + struct Bar {} - pub fn foo(array: [Bar; 1]) -> Bar { + fn foo(array: [Bar; 1]) -> Bar { array[0] } - fn main() {} + fn main() { + let _ = foo; + } "; assert_no_errors!(src); } @@ -387,3 +391,21 @@ fn considers_struct_as_constructed_if_passed_in_generic_args_in_function_call() "; assert_no_errors!(src); } + +#[named] +#[test] +fn does_not_consider_struct_as_constructed_if_mentioned_in_function_argument() { + let src = " + struct Bar {} + ^^^ struct `Bar` is never constructed + ~~~ struct is never constructed + + fn foo(_: [Bar; 1]) {} + + fn main() { + foo(); + ^^^^^ Function expects 1 parameter but 0 were given + } + "; + check_errors!(src); +} diff --git a/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/Nargo.toml b/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/Nargo.toml new file mode 100644 index 00000000000..13eb250ab1d --- /dev/null +++ b/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/Nargo.toml @@ -0,0 +1,7 @@ + + [package] + name = "noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument" + type = "bin" + authors = [""] + + [dependencies] \ No newline at end of file diff --git a/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/src/main.nr b/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/src/main.nr new file mode 100644 index 00000000000..be4973f8003 --- /dev/null +++ b/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/src/main.nr @@ -0,0 +1,9 @@ + + struct Bar {} + + fn foo(_: [Bar; 1]) {} + + fn main() { + foo(); + } + \ No newline at end of file diff --git a/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/src_hash.txt b/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/src_hash.txt new file mode 100644 index 00000000000..65f46c436aa --- /dev/null +++ b/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/src_hash.txt @@ -0,0 +1 @@ +6625675327575863409 \ No newline at end of file diff --git a/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/stderr.txt b/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/stderr.txt new file mode 100644 index 00000000000..2b04902692e --- /dev/null +++ b/test_programs/compile_failure/noirc_frontend_tests_unused_items_does_not_consider_struct_as_constructed_if_mentioned_in_function_argument/stderr.txt @@ -0,0 +1,15 @@ +warning: struct `Bar` is never constructed + ┌─ src/main.nr:2:12 + │ +2 │ struct Bar {} + │ --- struct is never constructed + │ + +error: Function expects 1 parameter but 0 were given + ┌─ src/main.nr:7:9 + │ +7 │ foo(); + │ ----- + │ + +Aborting due to 1 previous error diff --git a/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_let_type/src/main.nr b/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_let_type/src/main.nr index 0a80bc16cfa..0f454ec2309 100644 --- a/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_let_type/src/main.nr +++ b/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_let_type/src/main.nr @@ -1,9 +1,11 @@ - pub struct Bar {} + struct Bar {} - pub fn foo(array: [Bar; 1]) { + fn foo(array: [Bar; 1]) { let _: Bar = array[0]; } - fn main() {} + fn main() { + let _ = foo; + } \ No newline at end of file diff --git a/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_let_type/src_hash.txt b/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_let_type/src_hash.txt index ae21a3c7a72..0adba06d0da 100644 --- a/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_let_type/src_hash.txt +++ b/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_let_type/src_hash.txt @@ -1 +1 @@ -38851938633219158 \ No newline at end of file +12368942904043175809 \ No newline at end of file diff --git a/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_return_type/src/main.nr b/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_return_type/src/main.nr index 1c4112035fe..e517a41cf3b 100644 --- a/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_return_type/src/main.nr +++ b/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_return_type/src/main.nr @@ -1,9 +1,11 @@ - pub struct Bar {} + struct Bar {} - pub fn foo(array: [Bar; 1]) -> Bar { + fn foo(array: [Bar; 1]) -> Bar { array[0] } - fn main() {} + fn main() { + let _ = foo; + } \ No newline at end of file diff --git a/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_return_type/src_hash.txt b/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_return_type/src_hash.txt index 0a00fa978d8..b2eca9e7f4c 100644 --- a/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_return_type/src_hash.txt +++ b/test_programs/compile_success_no_bug/noirc_frontend_tests_unused_items_considers_struct_as_constructed_if_mentioned_in_return_type/src_hash.txt @@ -1 +1 @@ -2517654725056587726 \ No newline at end of file +1898526012180092460 \ No newline at end of file