Check that finalize block does not return a value

This commit is contained in:
Pranav Gaddamadugu 2023-04-15 16:16:39 -07:00
parent 0b99135962
commit a613f35c07
4 changed files with 60 additions and 44 deletions

81
Cargo.lock generated
View File

@ -2311,7 +2311,7 @@ dependencies = [
[[package]]
name = "snarkvm"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"anyhow",
"clap",
@ -2337,7 +2337,7 @@ dependencies = [
[[package]]
name = "snarkvm-algorithms"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"aleo-std",
"anyhow",
@ -2363,7 +2363,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-account",
"snarkvm-circuit-algorithms",
@ -2377,7 +2377,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-account"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-algorithms",
"snarkvm-circuit-network",
@ -2388,7 +2388,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-algorithms"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-types",
"snarkvm-console-algorithms",
@ -2398,7 +2398,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-collections"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-algorithms",
"snarkvm-circuit-types",
@ -2408,7 +2408,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-environment"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"indexmap",
"itertools",
@ -2426,12 +2426,12 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-environment-witness"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
[[package]]
name = "snarkvm-circuit-network"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-algorithms",
"snarkvm-circuit-collections",
@ -2442,7 +2442,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-program"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-account",
"snarkvm-circuit-collections",
@ -2455,7 +2455,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-address",
@ -2470,7 +2470,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-address"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@ -2483,7 +2483,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-boolean"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-console-types-boolean",
@ -2492,7 +2492,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-field"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@ -2502,7 +2502,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-group"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@ -2514,7 +2514,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-integers"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@ -2525,7 +2525,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-scalar"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@ -2536,7 +2536,7 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-string"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@ -2548,7 +2548,7 @@ dependencies = [
[[package]]
name = "snarkvm-console"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-account",
"snarkvm-console-algorithms",
@ -2561,7 +2561,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-account"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"bs58",
"snarkvm-console-network",
@ -2571,7 +2571,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-algorithms"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"blake2s_simd",
"smallvec",
@ -2583,7 +2583,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-collections"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"aleo-std",
"rayon",
@ -2594,7 +2594,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-network"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"anyhow",
"indexmap",
@ -2617,7 +2617,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-network-environment"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"anyhow",
"bech32",
@ -2634,7 +2634,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-program"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"enum_index",
"enum_index_derive",
@ -2653,7 +2653,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-types"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-address",
@ -2668,7 +2668,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-address"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@ -2679,7 +2679,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-boolean"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-network-environment",
]
@ -2687,7 +2687,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-field"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@ -2696,7 +2696,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-group"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@ -2707,7 +2707,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-integers"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@ -2717,7 +2717,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-scalar"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@ -2727,7 +2727,7 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-string"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@ -2738,7 +2738,7 @@ dependencies = [
[[package]]
name = "snarkvm-curves"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"rand",
"rayon",
@ -2752,7 +2752,7 @@ dependencies = [
[[package]]
name = "snarkvm-fields"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"aleo-std",
"anyhow",
@ -2769,7 +2769,7 @@ dependencies = [
[[package]]
name = "snarkvm-parameters"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"aleo-std",
"anyhow",
@ -2794,7 +2794,7 @@ dependencies = [
[[package]]
name = "snarkvm-r1cs"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"anyhow",
"cfg-if",
@ -2810,10 +2810,11 @@ dependencies = [
[[package]]
name = "snarkvm-synthesizer"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"aleo-std",
"anyhow",
"bincode",
"blake2",
"colored",
"indexmap",
@ -2838,7 +2839,7 @@ dependencies = [
[[package]]
name = "snarkvm-utilities"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"aleo-std",
"anyhow",
@ -2857,7 +2858,7 @@ dependencies = [
[[package]]
name = "snarkvm-utilities-derives"
version = "0.9.16"
source = "git+https://github.com/AleoHQ/snarkVM?rev=b6ea332#b6ea33292e7da45c3464ef7ce264fbc457c65b96"
source = "git+https://github.com/AleoHQ/snarkVM?rev=9b6395c#9b6395c6a18ef98733e18d774ee61058ddf4cb2d"
dependencies = [
"proc-macro2 1.0.56",
"quote 1.0.26",

View File

@ -33,12 +33,12 @@ members = [
[workspace.dependencies.snarkvm]
# version = "0.9.15"
git = "https://github.com/AleoHQ/snarkVM"
rev = "b6ea332"
rev = "9b6395c"
[workspace.dependencies.snarkvm-console]
# version = "0.9.15"
git = "https://github.com/AleoHQ/snarkVM"
rev = "b6ea332"
rev = "9b6395c"
[lib]
path = "leo/lib.rs"

View File

@ -351,7 +351,15 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
}
});
// Type check the function's return type.
// Check that the finalize block's return type is a unit type.
// Note: This is a temporary restriction to be compatible with the current version of snarkVM.
// Note: This restriction may be lifted in the future.
// Note: This check is still compatible with the other checks below.
if finalize.output_type != Type::Unit {
self.emit_err(TypeCheckerError::finalize_cannot_return_value(finalize.span));
}
// Type check the finalize block's return type.
// Note that checking that each of the component types are defined is sufficient to guarantee that the `output_type` is defined.
finalize.output.iter().for_each(|output_type| {
// Check that the type of output is defined.

View File

@ -584,7 +584,14 @@ create_messages!(
@formatted
finalize_cannot_output_record {
args: (),
msg: format!("A finalize block cannot output a record."),
msg: format!("A finalize block cannot return a record."),
help: None,
}
@formatted
finalize_cannot_return_value {
args: (),
msg: format!("A finalize block cannot return a value."),
help: None,
}
);