diff --git a/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr b/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr index 82b3c2d46089..eaaf519b48d6 100644 --- a/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr +++ b/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr @@ -278,7 +278,7 @@ impl LogEncryption for AES128 { let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields); // First byte of the ciphertext represents the ephemeral public key sign - let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) as bool; + let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0; // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool); diff --git a/noir-projects/aztec-nr/aztec/src/note/retrieved_note.nr b/noir-projects/aztec-nr/aztec/src/note/retrieved_note.nr index 67ae239bdec1..7acb3e1990f5 100644 --- a/noir-projects/aztec-nr/aztec/src/note/retrieved_note.nr +++ b/noir-projects/aztec-nr/aztec/src/note/retrieved_note.nr @@ -41,7 +41,7 @@ where { let contract_address = AztecAddress::from_field(packed_retrieved_note[0]); let nonce = packed_retrieved_note[1]; - let nonzero_note_hash_counter = packed_retrieved_note[2] as bool; + let nonzero_note_hash_counter = (packed_retrieved_note[2] as u1) != 0; let packed_note = subarray(packed_retrieved_note, RETRIEVED_NOTE_OVERHEAD); let note = NOTE::unpack(packed_note); diff --git a/noir-projects/aztec-nr/aztec/src/oracle/keys.nr b/noir-projects/aztec-nr/aztec/src/oracle/keys.nr index f29c0e8b2f75..2b14eacc8756 100644 --- a/noir-projects/aztec-nr/aztec/src/oracle/keys.nr +++ b/noir-projects/aztec-nr/aztec/src/oracle/keys.nr @@ -13,16 +13,10 @@ pub unconstrained fn get_public_keys_and_partial_address( let result = get_public_keys_and_partial_address_oracle(address); let keys = PublicKeys { - npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } }, - ivpk_m: IvpkM { - inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool }, - }, - ovpk_m: OvpkM { - inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool }, - }, - tpk_m: TpkM { - inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool }, - }, + npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } }, + ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } }, + ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } }, + tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } }, }; let partial_address = PartialAddress::from_field(result[12]); diff --git a/noir-projects/noir-contracts/contracts/app/token_blacklist_contract/src/types/roles.nr b/noir-projects/noir-contracts/contracts/app/token_blacklist_contract/src/types/roles.nr index 170dfaadff44..e94601b69b53 100644 --- a/noir-projects/noir-contracts/contracts/app/token_blacklist_contract/src/types/roles.nr +++ b/noir-projects/noir-contracts/contracts/app/token_blacklist_contract/src/types/roles.nr @@ -63,11 +63,7 @@ impl Serialize<3> for UserFlags { // after having received the serialized value as a return-value impl Deserialize<3> for UserFlags { fn deserialize(fields: [Field; 3]) -> Self { - Self { - is_admin: fields[0] as bool, - is_minter: fields[1] as bool, - is_blacklisted: fields[2] as bool, - } + Self { is_admin: fields[0] != 0, is_minter: fields[1] != 0, is_blacklisted: fields[2] != 0 } } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/avm_circuit_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/avm_circuit_public_inputs.nr index d308eedaf6d1..d2245e8c6e30 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/avm_circuit_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/avm_circuit_public_inputs.nr @@ -244,7 +244,7 @@ impl Deserialize for AvmCircuitPublicInputs { ), accumulated_data: reader.read_struct(AvmAccumulatedData::deserialize), transaction_fee: reader.read(), - reverted: reader.read() as bool, + reverted: reader.read_bool(), }; reader.finish(); item diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr index b1eded728e59..b4a4b9ddfe77 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr @@ -44,7 +44,7 @@ impl Deserialize for CallContext { msg_sender: AztecAddress::from_field(reader.read()), contract_address: AztecAddress::from_field(reader.read()), function_selector: FunctionSelector::from_field(reader.read()), - is_static_call: reader.read() as bool, + is_static_call: reader.read_bool(), } } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr index 19192d9ff7d0..b71ec8fb968c 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr @@ -28,7 +28,7 @@ impl Deserialize for FunctionData { fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self { Self { selector: FunctionSelector::from_field(serialized[0]), - is_private: serialized[1] as bool, + is_private: serialized[1] != 0, } } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr index 131ca7f90e1c..06d21f1a116c 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr @@ -25,7 +25,7 @@ impl Serialize for MaxBlockNumber { impl Deserialize for MaxBlockNumber { fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber { MaxBlockNumber { - _opt: if serialized[0] as bool { + _opt: if serialized[0] != 0 { Option::some(serialized[1] as u32) } else { Option::none() diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_request.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_request.nr index e7b9828584fb..c60cb98f4243 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_request.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_request.nr @@ -56,7 +56,7 @@ impl Deserialize for PublicCallRequest { let request = PublicCallRequest { msg_sender: AztecAddress::from_field(reader.read()), contract_address: AztecAddress::from_field(reader.read()), - is_static_call: reader.read() as bool, + is_static_call: reader.read_bool(), calldata_hash: reader.read(), }; reader.finish(); @@ -119,7 +119,7 @@ impl Deserialize for PublicCallRequestArrayLengt let item = PublicCallRequestArrayLengths { setup_calls: reader.read_u32(), app_logic_calls: reader.read_u32(), - teardown_call: reader.read() as bool, + teardown_call: reader.read_bool(), }; reader.finish(); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr index 7788f353459f..b8c28ba9be49 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr @@ -91,7 +91,7 @@ impl Deserialize for SpongeBlob { cache: [fields[0], fields[1], fields[2]], state: [fields[3], fields[4], fields[5], fields[6]], cache_size: fields[7] as u32, - squeeze_mode: fields[8] as bool, + squeeze_mode: fields[8] != 0, }, fields: fields[9] as u32, expected_fields: fields[10] as u32, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr index 78ddc929b6b1..80d707f5b4df 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr @@ -27,7 +27,7 @@ impl Serialize for KeyValidationRequest { impl Deserialize for KeyValidationRequest { fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self { Self { - pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, + pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] != 0 }, sk_app: fields[3], } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr b/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr index b56df8609d00..eb46e41f8f7d 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr @@ -111,7 +111,11 @@ pub comptime fn generate_deserialize_from_fields( result = quote { $unpack_method([ $packed_fields ]) }; consumed_counter = packed_len; - } else if typ.is_field() | typ.as_integer().is_some() | typ.is_bool() { + } else if typ.is_bool() { + // The field is a primitive so we just reference it in the field array + result = quote { $field_array_name[$num_already_consumed] != 0 }; + consumed_counter = 1; + } else if typ.is_field() | typ.as_integer().is_some() { // The field is a primitive so we just reference it in the field array result = quote { $field_array_name[$num_already_consumed] as $typ }; consumed_counter = 1; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/point.nr b/noir-projects/noir-protocol-circuits/crates/types/src/point.nr index 589bf00114ea..bcd8225f86dc 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/point.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/point.nr @@ -25,7 +25,7 @@ impl Empty for Point { impl Deserialize for Point { fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point { - Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } + Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 } } } // TODO(#11356): use compact representation here. diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr b/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr index ef369eaf2b5f..0216b8942430 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr @@ -165,28 +165,28 @@ impl Deserialize for PublicKeys { inner: Point { x: serialized[0], y: serialized[1], - is_infinite: serialized[2] as bool, + is_infinite: serialized[2] != 0, }, }, ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], - is_infinite: serialized[5] as bool, + is_infinite: serialized[5] != 0, }, }, ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], - is_infinite: serialized[8] as bool, + is_infinite: serialized[8] != 0, }, }, tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], - is_infinite: serialized[11] as bool, + is_infinite: serialized[11] != 0, }, }, } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/shared_mutable_values.nr b/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/shared_mutable_values.nr index 70e455d26014..64c47888c179 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/shared_mutable_values.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/shared_mutable_values.nr @@ -55,13 +55,13 @@ pub fn unpack_delay_change( let sdc_block_of_change = tmp as u32; tmp = (tmp - sdc_block_of_change as Field) / TWO_POW_32; - let sdc_post_is_some = tmp as bool; + let sdc_post_is_some = (tmp as u1) != 0; tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8; let sdc_post_inner = tmp as u32; tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32; - let sdc_pre_is_some = tmp as bool; + let sdc_pre_is_some = (tmp as u1) != 0; tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8; let sdc_pre_inner = tmp as u32; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr b/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr index 323cf1f41864..c50ae49e8ad4 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr @@ -158,7 +158,7 @@ impl FromField for Field { impl FromField for bool { #[inline_always] fn from_field(value: Field) -> Self { - value as bool + value != 0 } } impl FromField for u1 { diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr b/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr index be32a12cc833..9f736b8d15bd 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr @@ -18,7 +18,7 @@ impl Packable for bool { } fn unpack(fields: [Field; BOOL_PACKED_LEN]) -> bool { - fields[0] as bool + (fields[0] as u1) != 0 } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr b/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr index 1c005aa9675e..92cfc71f8c1c 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr @@ -20,7 +20,7 @@ impl Serialize for bool { impl Deserialize for bool { fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool { - fields[0] as bool + fields[0] != 0 } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr b/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr index 2dfa7dd1a512..1a5531c2c3d1 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr @@ -19,7 +19,7 @@ impl Reader { } pub fn read_bool(&mut self) -> bool { - self.read() as bool + self.read() != 0 } pub fn read_array(&mut self) -> [Field; K] {