Skip to content

Commit

Permalink
chore: cleanup call interfaces and calldata_copy warnings (#8777)
Browse files Browse the repository at this point in the history
Almost ready to compile with warnings, pending
noir-lang/noir#6149
  • Loading branch information
Thunkar authored Sep 25, 2024
1 parent d3c102f commit 633a3a0
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 20 deletions.
80 changes: 64 additions & 16 deletions noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ pub struct PrivateCallInterface<let N: u32, T, Env> {

impl<let N: u32, T, Env> PrivateCallInterface<N, T, Env> {
pub fn call<let M: u32>(self, context: &mut PrivateContext) -> T where T: Deserialize<M> {
assert(self.args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(self.args_hash == packed_args_hash);
let returns = context.call_private_function_with_packed_args(
self.target_contract,
self.selector,
Expand All @@ -66,13 +69,19 @@ impl<let N: u32, T, Env> PrivateCallInterface<N, T, Env> {
}

pub fn view<let M: u32>(self, context: &mut PrivateContext) -> T where T: Deserialize<M> {
assert(self.args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(self.args_hash == packed_args_hash);
let returns = context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, true, false);
returns.unpack_into()
}

pub fn delegate_call<let M: u32>(self, context: &mut PrivateContext) -> T where T: Deserialize<M> {
assert(self.args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(self.args_hash == packed_args_hash);
let returns = context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, false, true);
returns.unpack_into()
}
Expand All @@ -96,7 +105,10 @@ pub struct PrivateVoidCallInterface<let N: u32, Env> {

impl<let N: u32, Env> PrivateVoidCallInterface<N, Env> {
pub fn call(self, context: &mut PrivateContext) {
assert(self.args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(self.args_hash == packed_args_hash);
context.call_private_function_with_packed_args(
self.target_contract,
self.selector,
Expand All @@ -107,12 +119,18 @@ impl<let N: u32, Env> PrivateVoidCallInterface<N, Env> {
}

pub fn view(self, context: &mut PrivateContext) {
assert(self.args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(self.args_hash == packed_args_hash);
context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, true, false).assert_empty();
}

pub fn delegate_call(self, context: &mut PrivateContext) {
assert(self.args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(self.args_hash == packed_args_hash);
context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, false, true).assert_empty();
}
}
Expand All @@ -135,7 +153,10 @@ pub struct PrivateStaticCallInterface<let N: u32, T, Env> {

impl<let N: u32, T, Env> PrivateStaticCallInterface<N, T, Env> {
pub fn view<let M: u32>(self, context: &mut PrivateContext) -> T where T: Deserialize<M> {
assert(self.args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(self.args_hash == packed_args_hash);
let returns = context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, true, false);
returns.unpack_into()
}
Expand All @@ -159,7 +180,10 @@ pub struct PrivateStaticVoidCallInterface<let N: u32, Env> {

impl<let N: u32, Env> PrivateStaticVoidCallInterface<N, Env> {
pub fn view(self, context: &mut PrivateContext) {
assert(self.args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(self.args_hash == packed_args_hash);
context.call_private_function_with_packed_args(self.target_contract, self.selector, self.args_hash, true, false).assert_empty();
}
}
Expand Down Expand Up @@ -203,7 +227,10 @@ impl<let N: u32, T, Env> PublicCallInterface<N, T, Env> {

pub fn enqueue(self, context: &mut PrivateContext) {
let args_hash = hash_args(self.args);
assert(args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(args_hash == packed_args_hash);
context.call_public_function_with_packed_args(
self.target_contract,
self.selector,
Expand All @@ -215,7 +242,10 @@ impl<let N: u32, T, Env> PublicCallInterface<N, T, Env> {

pub fn enqueue_view(self, context: &mut PrivateContext) {
let args_hash = hash_args(self.args);
assert(args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(args_hash == packed_args_hash);
context.call_public_function_with_packed_args(
self.target_contract,
self.selector,
Expand All @@ -227,7 +257,10 @@ impl<let N: u32, T, Env> PublicCallInterface<N, T, Env> {

pub fn delegate_enqueue(self, context: &mut PrivateContext) {
let args_hash = hash_args(self.args);
assert(args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(args_hash == packed_args_hash);
context.call_public_function_with_packed_args(
self.target_contract,
self.selector,
Expand Down Expand Up @@ -277,7 +310,10 @@ impl<let N: u32, Env> PublicVoidCallInterface<N, Env> {

pub fn enqueue(self, context: &mut PrivateContext) {
let args_hash = hash_args(self.args);
assert(args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(args_hash == packed_args_hash);
context.call_public_function_with_packed_args(
self.target_contract,
self.selector,
Expand All @@ -289,7 +325,10 @@ impl<let N: u32, Env> PublicVoidCallInterface<N, Env> {

pub fn enqueue_view(self, context: &mut PrivateContext) {
let args_hash = hash_args(self.args);
assert(args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(args_hash == packed_args_hash);
context.call_public_function_with_packed_args(
self.target_contract,
self.selector,
Expand All @@ -301,7 +340,10 @@ impl<let N: u32, Env> PublicVoidCallInterface<N, Env> {

pub fn delegate_enqueue(self, context: &mut PrivateContext) {
let args_hash = hash_args(self.args);
assert(args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(args_hash == packed_args_hash);
context.call_public_function_with_packed_args(
self.target_contract,
self.selector,
Expand Down Expand Up @@ -342,7 +384,10 @@ impl<let N: u32, T, Env> PublicStaticCallInterface<N, T, Env> {

pub fn enqueue_view(self, context: &mut PrivateContext) {
let args_hash = hash_args(self.args);
assert(args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(args_hash == packed_args_hash);
context.call_public_function_with_packed_args(
self.target_contract,
self.selector,
Expand Down Expand Up @@ -382,7 +427,10 @@ impl<let N: u32, Env> PublicStaticVoidCallInterface<N, Env> {

pub fn enqueue_view(self, context: &mut PrivateContext) {
let args_hash = hash_args(self.args);
assert(args_hash == pack_arguments(self.args));
let packed_args_hash = unsafe {
pack_arguments(self.args)
};
assert(args_hash == packed_args_hash);
context.call_public_function_with_packed_args(
self.target_contract,
self.selector,
Expand Down
2 changes: 1 addition & 1 deletion noir-projects/aztec-nr/aztec/src/context/public_context.nr
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ unconstrained fn call_static<let RET_SIZE: u32>(
call_static_opcode(gas, address, args, function_selector)
}

unconstrained fn calldata_copy<let N: u32>(cdoffset: u32, copy_size: u32) -> [Field; N] {
unconstrained pub fn calldata_copy<let N: u32>(cdoffset: u32, copy_size: u32) -> [Field; N] {
calldata_copy_opcode(cdoffset, copy_size)
}

Expand Down
14 changes: 11 additions & 3 deletions noir-projects/aztec-nr/aztec/src/macros/functions/interfaces.nr
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,17 @@ pub comptime fn stub_fn(f: FunctionDefinition) -> Quoted {
} else {
parameter_names_list.join(quote {,})
};
let original = quote {
| inputs: $input_type | -> $return_type_hint {
$fn_name($parameter_names)
let original = if is_fn_private(f) {
quote {
| inputs: $input_type | -> $return_type_hint {
$fn_name($parameter_names)
}
}
} else {
quote {
| _: $input_type | -> $return_type_hint {
unsafe { $fn_name($parameter_names) }
}
}
};

Expand Down

0 comments on commit 633a3a0

Please sign in to comment.