From e231cb76b302bbe0a2731c55990695f3b115ac73 Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Wed, 28 Feb 2024 11:49:46 -0300 Subject: [PATCH] Do not insert init check if contract has no initializer --- .../contracts/avm_test_contract/src/main.nr | 1 - .../contracts/benchmarking_contract/src/main.nr | 1 - .../contracts/card_game_contract/src/main.nr | 1 - .../contracts/child_contract/src/main.nr | 1 - .../src/main.nr | 1 - .../src/main.nr | 1 - .../contracts/delegated_on_contract/src/main.nr | 1 - .../contracts/delegator_contract/src/main.nr | 1 - .../contracts/docs_example_contract/src/main.nr | 1 - .../contracts/gas_token_contract/src/main.nr | 1 - .../contracts/parent_contract/src/main.nr | 1 - .../pending_commitments_contract/src/main.nr | 1 - .../contracts/price_feed_contract/src/main.nr | 1 - .../contracts/reader_contract/src/main.nr | 1 - .../src/main.nr | 1 - .../src/main.nr | 1 - .../contracts/slow_tree_contract/src/main.nr | 1 - .../contracts/uniswap_contract/src/main.nr | 1 - noir/aztec_macros/src/lib.rs | 15 +++++++++------ 19 files changed, 9 insertions(+), 24 deletions(-) diff --git a/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr index 21875088c49..3e466334e0c 100644 --- a/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr @@ -6,7 +6,6 @@ contract AvmTest { use dep::aztec::avm::hash::{keccak256, poseidon, sha256}; #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // Public-vm macro will prefix avm to the function name for transpilation diff --git a/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr b/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr index fdb88976111..4044cdd6920 100644 --- a/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr @@ -20,7 +20,6 @@ contract Benchmarking { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // Creates a new value note for the target owner. Use this method to seed an initial set of notes. diff --git a/noir-projects/noir-contracts/contracts/card_game_contract/src/main.nr b/noir-projects/noir-contracts/contracts/card_game_contract/src/main.nr index 86906f98764..930215d7802 100644 --- a/noir-projects/noir-contracts/contracts/card_game_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/card_game_contract/src/main.nr @@ -20,7 +20,6 @@ contract CardGame { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(private)] diff --git a/noir-projects/noir-contracts/contracts/child_contract/src/main.nr b/noir-projects/noir-contracts/contracts/child_contract/src/main.nr index 98711eaa6c5..315c4c7ec34 100644 --- a/noir-projects/noir-contracts/contracts/child_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/child_contract/src/main.nr @@ -16,7 +16,6 @@ contract Child { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // Returns a sum of the input and the chain id and version of the contract in private circuit public input's return_values. diff --git a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr index b5aebdecf8c..760b4e5ff64 100644 --- a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr @@ -23,7 +23,6 @@ contract ContractClassRegisterer { use crate::capsule::pop_capsule; #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(private)] diff --git a/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr b/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr index 2ecaccd7b25..aceccc3ab11 100644 --- a/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr @@ -13,7 +13,6 @@ contract ContractInstanceDeployer { use crate::events::{instance_deployed::ContractInstanceDeployed}; #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(private)] diff --git a/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr b/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr index 2055db147eb..928760f048f 100644 --- a/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr @@ -19,7 +19,6 @@ contract DelegatedOn { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(private)] diff --git a/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr b/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr index 9c1afd67e88..d93629e4fea 100644 --- a/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr @@ -15,7 +15,6 @@ contract Delegator { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(private)] diff --git a/noir-projects/noir-contracts/contracts/docs_example_contract/src/main.nr b/noir-projects/noir-contracts/contracts/docs_example_contract/src/main.nr index e419f535779..d78408256a1 100644 --- a/noir-projects/noir-contracts/contracts/docs_example_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/docs_example_contract/src/main.nr @@ -89,7 +89,6 @@ contract DocsExample { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(public)] diff --git a/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr b/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr index b04e7ea448d..663c2cfbde2 100644 --- a/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/gas_token_contract/src/main.nr @@ -11,7 +11,6 @@ contract GasToken { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(public)] diff --git a/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr b/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr index b4a97ad7971..b89dcb83d39 100644 --- a/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr @@ -3,7 +3,6 @@ contract Parent { use dep::aztec::protocol_types::{address::AztecAddress, abis::function_selector::FunctionSelector}; #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // Private function to call another private function in the targetContract using the provided selector diff --git a/noir-projects/noir-contracts/contracts/pending_commitments_contract/src/main.nr b/noir-projects/noir-contracts/contracts/pending_commitments_contract/src/main.nr index 79213f0dca8..fae26b23fc9 100644 --- a/noir-projects/noir-contracts/contracts/pending_commitments_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/pending_commitments_contract/src/main.nr @@ -21,7 +21,6 @@ contract PendingCommitments { // (once Noir's support for this is more robust) #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // Confirm can access pending note hashes by creating / inserting a note and then diff --git a/noir-projects/noir-contracts/contracts/price_feed_contract/src/main.nr b/noir-projects/noir-contracts/contracts/price_feed_contract/src/main.nr index c9af402ffb4..afd14a72400 100644 --- a/noir-projects/noir-contracts/contracts/price_feed_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/price_feed_contract/src/main.nr @@ -12,7 +12,6 @@ contract PriceFeed { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(public)] diff --git a/noir-projects/noir-contracts/contracts/reader_contract/src/main.nr b/noir-projects/noir-contracts/contracts/reader_contract/src/main.nr index b43e2f98316..cfe709c3ee8 100644 --- a/noir-projects/noir-contracts/contracts/reader_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/reader_contract/src/main.nr @@ -4,7 +4,6 @@ contract Reader { use dep::compressed_string::FieldCompressedString; #[aztec(private)] - #[aztec(initializer)] fn constructor() {} #[aztec(public)] diff --git a/noir-projects/noir-contracts/contracts/schnorr_hardcoded_account_contract/src/main.nr b/noir-projects/noir-contracts/contracts/schnorr_hardcoded_account_contract/src/main.nr index 4b2fadad181..88f6b7cf5e7 100644 --- a/noir-projects/noir-contracts/contracts/schnorr_hardcoded_account_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/schnorr_hardcoded_account_contract/src/main.nr @@ -15,7 +15,6 @@ contract SchnorrHardcodedAccount { global ACCOUNT_ACTIONS_STORAGE_SLOT = 1; #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts diff --git a/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr b/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr index 3f5996207d0..b5633b70009 100644 --- a/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr @@ -12,7 +12,6 @@ contract SchnorrSingleKeyAccount { global ACCOUNT_ACTIONS_STORAGE_SLOT = 1; #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts diff --git a/noir-projects/noir-contracts/contracts/slow_tree_contract/src/main.nr b/noir-projects/noir-contracts/contracts/slow_tree_contract/src/main.nr index a0b12eedcc4..5161f7b04db 100644 --- a/noir-projects/noir-contracts/contracts/slow_tree_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/slow_tree_contract/src/main.nr @@ -36,7 +36,6 @@ contract SlowTree { // docs:end:constants_and_storage #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // docs:start:initialize #[aztec(public)] diff --git a/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr b/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr index d721082ac7a..f92dddff2f2 100644 --- a/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr @@ -23,7 +23,6 @@ contract Uniswap { } #[aztec(private)] - #[aztec(initializer)] fn constructor() {} // docs:end:uniswap_setup diff --git a/noir/aztec_macros/src/lib.rs b/noir/aztec_macros/src/lib.rs index 038dc92dd68..b4e2d7f7ea6 100644 --- a/noir/aztec_macros/src/lib.rs +++ b/noir/aztec_macros/src/lib.rs @@ -435,23 +435,26 @@ fn transform_module( } } + let has_initializer = module.functions.iter().any(|func| func.def.attributes.secondary.iter().any(|attr| is_custom_attribute(&attr, "aztec(initializer)"))); + for func in module.functions.iter_mut() { let mut is_private = false; let mut is_public = false; let mut is_public_vm = false; let mut is_initializer = false; - let mut skip_init_check = false; + let mut insert_init_check = has_initializer; for secondary_attribute in func.def.attributes.secondary.clone() { if is_custom_attribute(&secondary_attribute, "aztec(private)") { is_private = true; } else if is_custom_attribute(&secondary_attribute, "aztec(initializer)") { is_initializer = true; + insert_init_check = false; } else if is_custom_attribute(&secondary_attribute, "aztec(noinitcheck)") { - skip_init_check = true; + insert_init_check = false; } else if is_custom_attribute(&secondary_attribute, "aztec(public)") { is_public = true; - skip_init_check = true; + insert_init_check = false; } else if is_custom_attribute(&secondary_attribute, "aztec(public-vm)") { is_public_vm = true; } @@ -464,7 +467,7 @@ fn transform_module( func, storage_defined, is_initializer, - skip_init_check, + insert_init_check, ) .map_err(|err| (err, crate_graph.root_file_id))?; has_transformed_module = true; @@ -656,14 +659,14 @@ fn transform_function( func: &mut NoirFunction, storage_defined: bool, is_initializer: bool, - skip_init_check: bool, + insert_init_check: bool, ) -> Result<(), AztecMacroError> { let context_name = format!("{}Context", ty); let inputs_name = format!("{}ContextInputs", ty); let return_type_name = format!("{}CircuitPublicInputs", ty); // Add initialization check - if !skip_init_check { + if insert_init_check { if ty == "Public" { let error = AztecMacroError::UnsupportedAttributes { span: func.def.name.span(),