[Update] snarkvm 0.11.0 (#2377)

* Remove gates from tests

* Remove Finalize test namespace

* Remove gates from examples

* Remove gates from compiler

* Regen expectations

* Add test that gates is allowed as a standard field of a record

* Update Rust version in CI

* Add check for MAX_MAPPINGS
This commit is contained in:
d0cd 2023-05-10 21:32:37 -07:00 committed by GitHub
parent 4a66d324d8
commit d0c29ce8e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
105 changed files with 528 additions and 854 deletions

View File

@ -50,7 +50,7 @@ commands:
jobs:
check-style:
docker:
- image: cimg/rust:1.65
- image: cimg/rust:1.69
resource_class: xlarge
steps:
- checkout
@ -66,7 +66,7 @@ jobs:
clippy:
docker:
- image: cimg/rust:1.65
- image: cimg/rust:1.69
resource_class: xlarge
steps:
- checkout
@ -83,7 +83,7 @@ jobs:
leo-executable:
docker:
- image: cimg/rust:1.65
- image: cimg/rust:1.69
resource_class: xlarge
steps:
- checkout
@ -102,7 +102,7 @@ jobs:
leo-new:
docker:
- image: cimg/rust:1.65
- image: cimg/rust:1.69
resource_class: xlarge
steps:
- attach_workspace:
@ -115,7 +115,7 @@ jobs:
leo-clean:
docker:
- image: cimg/rust:1.65
- image: cimg/rust:1.69
resource_class: xlarge
steps:
- attach_workspace:
@ -128,7 +128,7 @@ jobs:
test-examples:
docker:
- image: cimg/rust:1.65
- image: cimg/rust:1.69
resource_class: xlarge
steps:
- attach_workspace:

391
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -31,10 +31,10 @@ members = [
]
[workspace.dependencies.snarkvm]
version = "0.10.3"
version = "0.11.0"
[workspace.dependencies.snarkvm-console]
version = "0.10.3"
version = "0.11.0"
[lib]
path = "leo/lib.rs"

View File

@ -57,7 +57,7 @@ impl StructExpression {
pub fn check_record(&self) -> bool {
let has_member = |symbol| self.members.iter().any(|variable| variable.identifier.name == symbol);
has_member(sym::owner) && has_member(sym::gates) && has_member(sym::_nonce)
has_member(sym::owner) && has_member(sym::_nonce)
}
/// Returns the struct as a record interface with visibility.

View File

@ -1,262 +0,0 @@
// Copyright (C) 2019-2023 Aleo Systems Inc.
// This file is part of the Leo library.
// The Leo library is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// The Leo library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
mod utilities;
use utilities::{buffer_if_err, compile_and_process, get_cwd_option, parse_program, BufferEmitter, Network};
use crate::utilities::{get_build_options, hash_asts, hash_content, Aleo};
use leo_errors::emitter::Handler;
use leo_span::symbol::create_session_if_not_set_then;
use leo_test_framework::{
runner::{Namespace, ParseType, Runner},
Test,
};
use snarkvm::{console, prelude::*};
use leo_compiler::{CompilerOptions, OutputOptions};
use leo_test_framework::test::TestExpectationMode;
use regex::Regex;
use serde::{Deserialize, Serialize};
use serde_yaml::Value;
use std::{collections::BTreeMap, fs, path::Path, rc::Rc};
struct FinalizeNamespace;
impl Namespace for FinalizeNamespace {
fn parse_type(&self) -> ParseType {
ParseType::Whole
}
fn run_test(&self, test: Test) -> Result<Value, String> {
let buf = BufferEmitter(Rc::default(), Rc::default());
let handler = Handler::new(Box::new(buf.clone()));
create_session_if_not_set_then(|_| {
run_test(test, &handler, &buf).map_err(|()| buf.0.take().to_string() + &buf.1.take().to_string())
})
}
}
// TODO: Format this better.
#[derive(Deserialize, PartialEq, Eq, Serialize)]
struct FinalizeOutput {
pub initial_ast: String,
pub unrolled_ast: String,
pub ssa_ast: String,
pub flattened_ast: String,
pub inlined_ast: String,
pub dce_ast: String,
pub bytecode: String,
pub warnings: String,
pub initial_state: String,
pub results: BTreeMap<String, Vec<BTreeMap<String, String>>>,
}
fn run_test(test: Test, handler: &Handler, err_buf: &BufferEmitter) -> Result<Value, ()> {
// Check that config expectation is always pass.
if test.config.expectation != TestExpectationMode::Pass {
buffer_if_err(err_buf, Err("Test expectation must be `Pass` for `Finalize` tests.".to_string()))?;
}
// Check for CWD option:
let cwd = get_cwd_option(&test);
// Extract the compiler build configurations from the config file.
let build_options = get_build_options(&test.config);
let mut outputs = Vec::with_capacity(build_options.len());
for build in build_options {
let compiler_options = CompilerOptions {
build,
output: OutputOptions {
spans_enabled: false,
initial_input_ast: true,
initial_ast: true,
unrolled_ast: true,
ssa_ast: true,
flattened_ast: true,
inlined_ast: true,
dce_ast: true,
},
};
// Parse the program.
let mut parsed =
handler.extend_if_error(parse_program(handler, &test.content, cwd.clone(), Some(compiler_options)))?;
// Compile the program to bytecode.
let bytecode = handler.extend_if_error(compile_and_process(&mut parsed))?;
println!("Bytecode: {}", bytecode);
let program = Program::<Network>::from_str(&bytecode).unwrap();
let program_id = program.id();
// Extract the cases from the test config.
let all_cases = test
.config
.extra
.get("cases")
.expect("An `Finalize` config must have a `cases` field.")
.as_mapping()
.unwrap();
// Extract the initial state from the test config.
let initial_state = test
.config
.extra
.get("initial_state")
.expect("A `Finalize` config must have a `initial_state` field.")
.as_mapping()
.unwrap();
// Initialize the program storage.
let store = ProgramStore::<_, ProgramMemory<Network>>::open(None).unwrap();
for (mapping_id, key_value_pairs) in initial_state {
// Initialize the mapping.
let mapping_name = Identifier::from_str(mapping_id.as_str().unwrap()).unwrap();
store.initialize_mapping(program_id, &mapping_name).unwrap();
// Insert the key value pairs.
let key_value_pairs = key_value_pairs.as_sequence().unwrap();
for pair in key_value_pairs {
let pair = pair.as_sequence().unwrap();
assert!(pair.len() == 2);
store
.insert_key_value(
program_id,
&mapping_name,
Plaintext::<Network>::from_str(pair[0].as_str().unwrap()).unwrap(),
console::program::Value::<Network>::from_str(pair[1].as_str().unwrap()).unwrap(),
)
.unwrap();
}
}
// Initialize a process.
let mut process = Process::load().unwrap();
process.add_program(&program).unwrap();
// Initialize an rng.
let rng = &mut TestRng::default();
// Initialize a private key.
let private_key = PrivateKey::<Network>::new(rng).unwrap();
// Initialize a map for the expected results.
let mut results = BTreeMap::new();
// Run each test case for each function.
for (function_name, function_cases) in all_cases {
let function_name = Identifier::from_str(function_name.as_str().unwrap()).unwrap();
let cases = function_cases.as_sequence().unwrap();
let mut function_results = Vec::with_capacity(cases.len());
for case in cases {
let case = case.as_mapping().unwrap();
let inputs: Vec<_> = case
.get(&Value::from("input"))
.unwrap()
.as_sequence()
.unwrap()
.iter()
.map(|input| console::program::Value::<Network>::from_str(input.as_str().unwrap()).unwrap())
.collect();
let input_string = format!("[{}]", inputs.iter().map(|input| input.to_string()).join(", "));
// Authorize the function call.
let authorization =
process.authorize::<Aleo, _>(&private_key, program_id, function_name, inputs.iter(), rng).unwrap();
// Execute the function call.
let (response, execution, _, _) = process.execute::<Aleo, _>(authorization, rng).unwrap();
// Finalize the function call.
let finalize_output_string = match process.finalize_execution(&store, &execution) {
Ok(_) => "Finalize was successful.".to_string(),
Err(err) => format!("SnarkVMError({err})"),
};
// TODO: Add support for custom config like custom private keys.
// Execute the program and get the outputs.
let execute_output = format!(
"[{}]",
response
.outputs()
.iter()
.map(|output| {
match output {
// Remove the `_nonce` from the record string.
console::program::Value::Record(record) => {
let pattern = Regex::new(r"_nonce: \d+group.public").unwrap();
pattern.replace(&record.to_string(), "").to_string()
}
_ => output.to_string(),
}
})
.join(", ")
);
// Store the inputs and outputs in a map.
let mut result = BTreeMap::new();
result.insert("input".to_string(), input_string);
result.insert("execute_output".to_string(), execute_output);
result.insert("finalize_output".to_string(), finalize_output_string);
// Add the hashes of the inputs and outputs to the function results.
function_results.push(result);
}
results.insert(function_name.to_string(), function_results);
}
// Hash the ast files.
let (initial_ast, unrolled_ast, ssa_ast, flattened_ast, inlined_ast, dce_ast) = hash_asts();
// Clean up the output directory.
if fs::read_dir("/tmp/output").is_ok() {
fs::remove_dir_all(Path::new("/tmp/output")).expect("Error failed to clean up output dir.");
}
let final_output = FinalizeOutput {
initial_ast,
unrolled_ast,
ssa_ast,
flattened_ast,
inlined_ast,
dce_ast,
bytecode: hash_content(&bytecode),
warnings: err_buf.1.take().to_string(),
initial_state: hash_content(&serde_yaml::to_string(&initial_state).unwrap()),
results,
};
outputs.push(final_output)
}
Ok(serde_yaml::to_value(outputs).expect("serialization failed"))
}
struct TestRunner;
impl Runner for TestRunner {
fn resolve_namespace(&self, name: &str) -> Option<Box<dyn Namespace>> {
Some(match name {
"Finalize" => Box::new(FinalizeNamespace),
_ => return None,
})
}
}
#[test]
pub fn finalize_tests() {
leo_test_framework::run_tests(&TestRunner, "finalize");
}

View File

@ -193,21 +193,18 @@ impl ExpressionConsumer for StaticSingleAssigner<'_> {
let mut member_map: IndexMap<Symbol, StructVariableInitializer> =
members.into_iter().map(|member| (member.identifier.name, member)).collect();
// If we are initializing a record, add the `owner` and `gates` fields, first and second respectively.
// If we are initializing a record, add the `owner` first.
// Note that type checking guarantees that the above fields exist.
if struct_definition.is_record {
// Add the `owner` field.
// Note that the `unwrap` is safe, since type checking guarantees that the member exists.
reordered_members.push(member_map.remove(&sym::owner).unwrap());
// Add the `gates` field.
// Note that the `unwrap` is safe, since type checking guarantees that the member exists.
reordered_members.push(member_map.remove(&sym::gates).unwrap());
}
// For each member of the struct definition, push the corresponding member of the init expression.
for member in &struct_definition.members {
// If the member is part of a record and it is `owner` or `gates`, then we have already added it.
if !(struct_definition.is_record && matches!(member.identifier.name, sym::owner | sym::gates)) {
// If the member is part of a record and it is `owner` then we have already added it.
if !(struct_definition.is_record && matches!(member.identifier.name, sym::owner)) {
// Lookup and push the member of the init expression.
// Note that the `unwrap` is safe, since type checking guarantees that the member exists.
reordered_members.push(member_map.remove(&member.identifier.name).unwrap());

View File

@ -37,7 +37,7 @@ use indexmap::IndexMap;
impl StructConsumer for StaticSingleAssigner<'_> {
type Output = Struct;
/// Reconstructs records in the program, ordering its fields such that `owner` and `gates` are the first and second fields, respectively.
/// Reconstructs records in the program, ordering its fields such that `owner` and is the first field.
fn consume_struct(&mut self, struct_: Struct) -> Self::Output {
match struct_.is_record {
false => struct_,
@ -50,10 +50,6 @@ impl StructConsumer for StaticSingleAssigner<'_> {
// Note that type checking ensures that the owner field exists.
members.push(member_map.shift_remove(&sym::owner).unwrap());
// Add the gates field to the beginning of the members list.
// Note that type checking ensures that the gates field exists.
members.push(member_map.shift_remove(&sym::gates).unwrap());
// Add the remaining fields to the members list.
members.extend(member_map.into_iter().map(|(_, member)| member));

View File

@ -62,7 +62,19 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
}
// Typecheck each mapping definition.
input.mappings.values().for_each(|mapping| self.visit_mapping(mapping));
let mut mapping_count = 0;
for mapping in input.mappings.values() {
self.visit_mapping(mapping);
mapping_count += 1;
}
// Check that the number of mappings does not exceed the maximum.
if mapping_count > Testnet3::MAX_MAPPINGS {
self.emit_err(TypeCheckerError::too_many_mappings(
Testnet3::MAX_MAPPINGS,
input.program_id.name.span + input.program_id.network.span,
));
}
// Typecheck each function definitions.
let mut transition_count = 0;
@ -104,7 +116,7 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
});
}
// For records, enforce presence of `owner: Address` and `gates: u64` members.
// For records, enforce presence of the `owner: Address` member.
if input.is_record {
let check_has_field =
|need, expected_ty: Type| match input.members.iter().find_map(|Member { identifier, type_, .. }| {

View File

@ -219,7 +219,6 @@ symbols! {
public,
private,
owner,
gates,
_nonce,
program,

View File

@ -594,4 +594,11 @@ create_messages!(
msg: format!("A finalize block cannot return a value."),
help: None,
}
@formatted
too_many_mappings {
args: (max: impl Display),
msg: format!("The number of mappings exceeds the maximum. snarkVM allows up to {max} mappings within a single program."),
help: None,
}
);

View File

@ -9,7 +9,6 @@ amount: u64 = 90u64;
[resolve]
first: Bid = Bid {
owner: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh,
gates: 0u64,
bidder: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh,
amount: 10u64,
is_winner: false,
@ -17,7 +16,6 @@ first: Bid = Bid {
};
second: Bid = Bid {
owner: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh,
gates: 0u64,
bidder: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh,
amount: 90u64,
is_winner: false,
@ -27,7 +25,6 @@ second: Bid = Bid {
[finish]
bid: Bid = Bid {
owner: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh,
gates: 0u64,
bidder: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh,
amount: 90u64,
is_winner: false,

View File

@ -112,14 +112,12 @@ echo "
"
leo run resolve "{
owner: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh.private,
gates: 0u64.private,
bidder: aleo1yzlta2q5h8t0fqe0v6dyh9mtv4aggd53fgzr068jvplqhvqsnvzq7pj2ke.private,
amount: 10u64.private,
is_winner: false.private,
_nonce: 4668394794828730542675887906815309351994017139223602571716627453741502624516group.public
}" "{
owner: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh.private,
gates: 0u64.private,
bidder: aleo1esqchvevwn7n5p84e735w4dtwt2hdtu4dpguwgwy94tsxm2p7qpqmlrta4.private,
amount: 90u64.private,
is_winner: false.private,
@ -142,7 +140,6 @@ echo "
"
leo run finish "{
owner: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh.private,
gates: 0u64.private,
bidder: aleo1esqchvevwn7n5p84e735w4dtwt2hdtu4dpguwgwy94tsxm2p7qpqmlrta4.private,
amount: 90u64.private,
is_winner: false.private,

View File

@ -2,13 +2,11 @@ program auction.aleo {
// A bid in an auction.
// - `owner` : The address of the account that owns the record associated with this bid.
// This is separate from the address of the account that placed the bid.
// - `gates` : The value associated with the record (always zero).
// - `bidder` : The address of the account that placed the bid.
// - `amount` : The amount of the bid.
// - `is_winner` : Whether the bid is the winning bid.
record Bid {
owner: address,
gates: u64,
bidder: address,
amount: u64,
is_winner: bool,
@ -26,7 +24,6 @@ program auction.aleo {
// Return a new 'Bid' record for the auction bidder.
return Bid {
owner: aleo1fxs9s0w97lmkwlcmgn0z3nuxufdee5yck9wqrs0umevp7qs0sg9q5xxxzh,
gates: 0u64,
bidder: bidder,
amount: amount,
is_winner: false,
@ -60,7 +57,6 @@ program auction.aleo {
// Return 'is_winner' as 'true' in the winning 'Bid'.
return Bid {
owner: bid.bidder,
gates: bid.gates,
bidder: bid.bidder,
amount: bid.amount,
is_winner: true,

View File

@ -7,7 +7,6 @@ amount: u64 = 1234u64;
[deposit]
token: Token = Token {
owner: aleo1t0uer3jgtsgmx5tq6x6f9ecu8tr57rzzfnc2dgmcqldceal0ls9qf6st7a,
gates: 0u64,
amount: 1234u64,
_nonce: 0group,
};

View File

@ -118,7 +118,6 @@ echo "
"
leo run deposit "{
owner: aleo1zeklp6dd8e764spe74xez6f8w27dlua3w7hl4z2uln03re52egpsv46ngg.private,
gates: 0u64.private,
amount: 100u64.private,
_nonce: 4668394794828730542675887906815309351994017139223602571716627453741502624516group.public
}" 50u64 || exit

View File

@ -1,11 +1,9 @@
program basic_bank.aleo {
// A token, issued by a bank.
// - 'owner' : The address of the account that owns the record associated with this token.
// - 'gates' : The value associated with the record (always zero).
// - 'amount' : The amount of tokens owned by the account.
record Token {
owner: address,
gates: u64,
amount: u64,
}
@ -22,7 +20,6 @@ program basic_bank.aleo {
assert_eq(self.caller, aleo1t0uer3jgtsgmx5tq6x6f9ecu8tr57rzzfnc2dgmcqldceal0ls9qf6st7a);
return Token {
owner: owner,
gates: 0u64,
amount: amount,
};
}
@ -36,7 +33,6 @@ program basic_bank.aleo {
let remaining: Token = Token {
owner: token.owner,
gates: token.gates,
amount: difference,
};
@ -68,7 +64,6 @@ program basic_bank.aleo {
let token: Token = Token {
owner: recipient,
gates: 0u64,
amount: total,
};

View File

@ -88,7 +88,6 @@ leo run initialize_board 34084860461056u64 551911718912u64 7u64 1157425104234217
• {
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 1157459741006397447u64.private,
@ -122,7 +121,6 @@ Now, we can offer a battleship game to player 2. Run `leo run offer_battleship '
```
leo run offer_battleship '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 1157459741006397447u64.private,
@ -139,7 +137,6 @@ leo run offer_battleship '{
• {
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 1157459741006397447u64.private,
@ -150,7 +147,6 @@ leo run offer_battleship '{
}
• {
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 0u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
@ -198,7 +194,6 @@ leo run initialize_board 31u64 2207646875648u64 224u64 9042383626829824u64 aleo1
• {
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 9044591273705727u64.private,
@ -228,7 +223,6 @@ Now, we can accept Player 1's offer. Run `leo run start_battleship 'board_state.
```bash
leo run start_battleship '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 9044591273705727u64.private,
@ -238,7 +232,6 @@ leo run start_battleship '{
_nonce: 1549419609469324182591325047490602235361156298832591378925133482196483208807group.public
}' '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 0u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
@ -253,7 +246,6 @@ leo run start_battleship '{
• {
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 9044591273705727u64.private,
@ -264,7 +256,6 @@ leo run start_battleship '{
}
• {
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
incoming_fire_coordinate: 0u64.private,
player_1: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
player_2: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
@ -287,7 +278,6 @@ Player 1 now makes the first real move: `leo run play 'board_state.record' 'move
```bash
leo run play '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 1157459741006397447u64.private,
@ -297,7 +287,6 @@ leo run play '{
_nonce: 6563064852163330630334088854834332804417910882908622526775624018226782316843group.public
}' '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
incoming_fire_coordinate: 0u64.private,
player_1: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
player_2: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
@ -311,7 +300,6 @@ leo run play '{
• {
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 1u64.private,
ships: 1157459741006397447u64.private,
@ -322,7 +310,6 @@ leo run play '{
}
• {
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 1u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
@ -346,7 +333,6 @@ and they will also let Player 1 know whether their fire coordinate hit or miss P
```bash
leo run play '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 9044591273705727u64.private,
@ -356,7 +342,6 @@ leo run play '{
_nonce: 6222383571142756260765569201308836492199048237638652378826141459336360362251group.public
}' '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 1u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
@ -372,7 +357,6 @@ leo run play '{
• {
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 2048u64.private,
ships: 9044591273705727u64.private,
@ -383,7 +367,6 @@ leo run play '{
}
• {
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
incoming_fire_coordinate: 2048u64.private,
player_1: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
player_2: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
@ -416,7 +399,6 @@ For example, running `aleo run play 'board_state.record' 'move.record' 1u64` wil
```bash
leo run play '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 1u64.private,
ships: 1157459741006397447u64.private,
@ -426,7 +408,6 @@ leo run play '{
_nonce: 1474170213684980843727833284550698461565286563122422722760769547002894080093group.public
}' '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
incoming_fire_coordinate: 2048u64.private,
player_1: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
player_2: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
@ -441,7 +422,6 @@ leo run play '{
• {
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 1u64.private,
played_tiles: 3u64.private,
ships: 1157459741006397447u64.private,
@ -452,7 +432,6 @@ leo run play '{
}
• {
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 2u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
@ -485,7 +464,6 @@ The `board_state` record `hits_and_misses` component has also been updated with
```bash
leo run play '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 2048u64.private,
ships: 9044591273705727u64.private,
@ -495,7 +473,6 @@ leo run play '{
_nonce: 5254963165391133332409074172682159033621708071536429341861038147524454777097group.public
}' '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 2u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
@ -510,7 +487,6 @@ leo run play '{
• {
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 2052u64.private,
ships: 9044591273705727u64.private,
@ -521,7 +497,6 @@ leo run play '{
}
• {
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
incoming_fire_coordinate: 4u64.private,
player_1: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
player_2: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,

View File

@ -8,7 +8,6 @@ program board.aleo {
// unplayed squares.
record board_state {
owner: address,
gates: u64,
// The hits and misses registered on the opponent's board.
hits_and_misses: u64,
// The squares that have been played on the opponent's board.
@ -27,7 +26,6 @@ program board.aleo {
) -> board_state {
return board_state {
owner: self.caller,
gates: 0u64,
hits_and_misses: 0u64,
played_tiles: 0u64,
ships,
@ -48,7 +46,6 @@ program board.aleo {
return board_state {
owner: board.owner,
gates: board.gates,
hits_and_misses: board.hits_and_misses,
played_tiles: board.played_tiles,
ships: board.ships,
@ -81,7 +78,6 @@ program board.aleo {
return board_state {
owner: board.owner,
gates: board.gates,
hits_and_misses: board.hits_and_misses,
played_tiles,
ships: board.ships,
@ -103,7 +99,6 @@ program board.aleo {
return board_state {
owner: board.owner,
gates: board.gates,
hits_and_misses,
played_tiles: board.played_tiles,
ships: board.ships,

View File

@ -1,7 +1,6 @@
program move.aleo {
record move {
owner: address,
gates: u64,
incoming_fire_coordinate: u64,
player_1: address,
player_2: address,
@ -24,7 +23,6 @@ program move.aleo {
return move {
owner: opponent,
gates: move_record.gates,
incoming_fire_coordinate,
player_1: move_record.player_2,
player_2: move_record.player_1,
@ -37,7 +35,6 @@ program move.aleo {
transition start_game(player_2: address) -> move {
return move {
owner: player_2,
gates: 0u64,
incoming_fire_coordinate: 0u64,
player_1: self.caller,
player_2: player_2,

View File

@ -45,7 +45,6 @@ echo "
"
leo run offer_battleship '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 1157459741006397447u64.private,
@ -94,7 +93,6 @@ echo "
"
leo run start_battleship '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 9044591273705727u64.private,
@ -104,7 +102,6 @@ leo run start_battleship '{
_nonce: 1549419609469324182591325047490602235361156298832591378925133482196483208807group.public
}' '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 0u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
@ -137,7 +134,6 @@ echo "
leo run play '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 1157459741006397447u64.private,
@ -147,7 +143,6 @@ echo "
_nonce: 6563064852163330630334088854834332804417910882908622526775624018226782316843group.public
}' '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
incoming_fire_coordinate: 0u64.private,
player_1: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
player_2: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
@ -181,7 +176,6 @@ echo "
leo run play '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 0u64.private,
ships: 9044591273705727u64.private,
@ -191,7 +185,6 @@ echo "
_nonce: 6222383571142756260765569201308836492199048237638652378826141459336360362251group.public
}' '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 1u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
@ -225,7 +218,6 @@ echo "
leo run play '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 1u64.private,
ships: 1157459741006397447u64.private,
@ -235,7 +227,6 @@ echo "
_nonce: 1474170213684980843727833284550698461565286563122422722760769547002894080093group.public
}' '{
owner: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
gates: 0u64.private,
incoming_fire_coordinate: 2048u64.private,
player_1: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
player_2: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
@ -269,7 +260,6 @@ echo "
leo run play '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
hits_and_misses: 0u64.private,
played_tiles: 2048u64.private,
ships: 9044591273705727u64.private,
@ -279,7 +269,6 @@ echo "
_nonce: 5254963165391133332409074172682159033621708071536429341861038147524454777097group.public
}' '{
owner: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,
gates: 0u64.private,
incoming_fire_coordinate: 2u64.private,
player_1: aleo15g9c69urtdhvfml0vjl8px07txmxsy454urhgzk57szmcuttpqgq5cvcdy.private,
player_2: aleo1wyvu96dvv0auq9e4qme54kjuhzglyfcf576h0g3nrrmrmr0505pqd6wnry.private,

View File

@ -6,7 +6,6 @@ amount: u64 = 100u64;
[transfer]
token: Token = Token {
owner: aleo1ht2a9q0gsd38j0se4t9lsfulxgqrens2vgzgry3pkvs93xrrzu8s892zn7,
gates: 0u64,
amount: 100u64,
_nonce: 0group,
};

View File

@ -4,8 +4,6 @@ program simple_token.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}
@ -15,7 +13,6 @@ program simple_token.aleo {
transition mint(owner: address, amount: u64) -> Token {
return Token {
owner: owner,
gates: 0u64,
amount: amount,
};
}
@ -33,14 +30,12 @@ program simple_token.aleo {
// Produce a token record with the change amount for the sender.
let remaining: Token = Token {
owner: token.owner,
gates: token.gates,
amount: difference,
};
// Produce a token record for the specified receiver.
let transferred: Token = Token {
owner: to,
gates: 0u64,
amount: amount,
};

View File

@ -1,77 +0,0 @@
program token.aleo;
record token:
owner as address.private;
gates as u64.private;
amount as u64.private;
mapping account:
key left as address.public;
value right as u64.public;
function mint_public:
input r0 as address.public;
input r1 as u64.public;
finalize r0 r1;
finalize mint_public:
input r0 as address.public;
input r1 as u64.public;
increment account[r0] by r1;
function mint_private:
input r0 as address.private;
input r1 as u64.private;
cast r0 0u64 r1 into r2 as token.record;
output r2 as token.record;
function transfer_public:
input r0 as address.public;
input r1 as u64.public;
finalize self.caller r0 r1;
finalize transfer_public:
input r0 as address.public;
input r1 as address.public;
input r2 as u64.public;
decrement account[r0] by r2;
increment account[r1] by r2;
function transfer_private:
input r0 as token.record;
input r1 as address.private;
input r2 as u64.private;
sub r0.amount r2 into r3;
cast r0.owner r0.gates r3 into r4 as token.record;
cast r1 0u64 r2 into r5 as token.record;
output r4 as token.record;
output r5 as token.record;
function transfer_private_to_public:
input r0 as token.record;
input r1 as address.public;
input r2 as u64.public;
sub r0.amount r2 into r3;
cast r0.owner r0.gates r3 into r4 as token.record;
output r4 as token.record;
finalize r1 r2;
finalize transfer_private_to_public:
input r0 as address.public;
input r1 as u64.public;
increment account[r0] by r1;
function transfer_public_to_private:
input r0 as address.public;
input r1 as u64.public;
cast r0 0u64 r1 into r2 as token.record;
output r2 as token.record;
finalize self.caller r1;
finalize transfer_public_to_private:
input r0 as address.public;
input r1 as u64.public;
decrement account[r0] by r1;

View File

@ -1,10 +0,0 @@
{
"program": "token.aleo",
"version": "0.0.0",
"description": "",
"development": {
"private_key": "APrivateKey1zkpBdMNxDsVVK1nHykGg6tKCpuqN6f1QqbKSMvL22BnmjGA",
"address": "aleo1pvmhrzm5tevxg7rrj65z6txpvm9stfgex05v4lfs05677n7e0cxqdk46jr"
},
"license": "MIT"
}

View File

@ -14,7 +14,6 @@ amount: u64 = 50u64;
[transfer_private]
sender: token = token {
owner: aleo1pvmhrzm5tevxg7rrj65z6txpvm9stfgex05v4lfs05677n7e0cxqdk46jr,
gates: 0u64,
amount: 100u64,
_nonce: 0group,
};
@ -24,7 +23,6 @@ amount: u64 = 50u64;
[transfer_private_to_public]
sender: token = token {
owner: aleo1pvmhrzm5tevxg7rrj65z6txpvm9stfgex05v4lfs05677n7e0cxqdk46jr,
gates: 0u64,
amount: 100u64,
_nonce: 0group,
};

View File

@ -6,8 +6,6 @@ program token.aleo {
record token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}
@ -32,7 +30,6 @@ program token.aleo {
transition mint_private(receiver: address, amount: u64) -> token {
return token {
owner: receiver,
gates: 0u64,
amount: amount,
};
}
@ -66,14 +63,12 @@ program token.aleo {
// Produce a token record with the change amount for the sender.
let remaining: token = token {
owner: sender.owner,
gates: sender.gates,
amount: difference,
};
// Produce a token record for the specified receiver.
let transferred: token = token {
owner: receiver,
gates: 0u64,
amount: amount,
};
@ -92,7 +87,6 @@ program token.aleo {
// Produces a token record with the change amount for the caller.
let remaining: token = token {
owner: sender.owner,
gates: sender.gates,
amount: difference,
};
@ -115,7 +109,6 @@ program token.aleo {
// Produces a token record for the token receiver.
let transferred: token = token {
owner: receiver,
gates: 0u64,
amount: amount,
};

View File

@ -40,7 +40,6 @@ Output sample:
```
{
owner: aleo1kkk52quhnxgn2nfrcd9jqk7c9x27c23f2wvw7fyzcze56yahvcgszgttu2.private,
gates: 0u64.private,
id: 2805252584833208809872967597325381727971256629741137995614832105537063464740field.private,
info: {
title: 2077160157502449938194577302446444field.private,
@ -70,7 +69,6 @@ Output sample:
```
{
owner: aleo1kkk52quhnxgn2nfrcd9jqk7c9x27c23f2wvw7fyzcze56yahvcgszgttu2.private,
gates: 0u64.private,
pid: 2264670486490520844857553240576860973319410481267184439818180411609250173817field.private,
_nonce: 1637267040221574073903539416642641433705357302885235345311606754421919550724group.public
}

View File

@ -13,7 +13,6 @@ voter: address = aleo1kkk52quhnxgn2nfrcd9jqk7c9x27c23f2wvw7fyzcze56yahvcgszgttu2
[agree]
ticket: Ticket = Ticket {
owner: aleo1kkk52quhnxgn2nfrcd9jqk7c9x27c23f2wvw7fyzcze56yahvcgszgttu2,
gates: 0u64,
pid: 2264670486490520844857553240576860973319410481267184439818180411609250173817field,
_nonce: 1637267040221574073903539416642641433705357302885235345311606754421919550724group
};
@ -21,7 +20,6 @@ ticket: Ticket = Ticket {
[disagree]
ticket: Ticket = Ticket {
owner: aleo1kkk52quhnxgn2nfrcd9jqk7c9x27c23f2wvw7fyzcze56yahvcgszgttu2,
gates: 0u64,
pid: 2264670486490520844857553240576860973319410481267184439818180411609250173817field,
_nonce: 1637267040221574073903539416642641433705357302885235345311606754421919550724group
};
};

View File

@ -10,7 +10,6 @@ program vote.aleo {
// Proposal record records proposal info publicly
record Proposal {
owner: address,
gates: u64,
id: field,
info: ProposalInfo,
}
@ -21,7 +20,6 @@ program vote.aleo {
// Privacy tickets to vote
record Ticket {
owner: address,
gates: u64,
pid: field,
}
@ -45,7 +43,6 @@ program vote.aleo {
// Finalize the proposal id.
return Proposal {
owner: self.caller,
gates: 0u64,
id,
info,
} then finalize(id);
@ -64,7 +61,6 @@ program vote.aleo {
// Finalize the proposal id for the ticket.
return Ticket {
owner: voter,
gates: 0u64,
pid,
} then finalize(pid);
}

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: 75a36838e40b40528abbeb2a752b51db98a9eb6537aa3ec5d812a0e0ce3c64b9
unrolled_ast: 75a36838e40b40528abbeb2a752b51db98a9eb6537aa3ec5d812a0e0ce3c64b9
ssa_ast: 0c66a00da3384b853fd83ecb3747abf1101af0c39849fd75af793a68537f714d
flattened_ast: 7a2b73a748d86babab5ca7a4f9e513cfd028dcbadc7df8baeb7774ffb54c1b43
inlined_ast: 7a2b73a748d86babab5ca7a4f9e513cfd028dcbadc7df8baeb7774ffb54c1b43
dce_ast: 7a2b73a748d86babab5ca7a4f9e513cfd028dcbadc7df8baeb7774ffb54c1b43
bytecode: 2d96971b7ff11cd865ed1b79ca417d062b970f3442cf9e6f53f033b5f258c556
- - initial_ast: 2fcf759a6b067a1ab144a067c2a4ea41c49499febb7e6a5056dc25db633dd37c
unrolled_ast: 2fcf759a6b067a1ab144a067c2a4ea41c49499febb7e6a5056dc25db633dd37c
ssa_ast: a55cc6f9a1abaaa66e51ee6e9e946f6fbab282cc2e0ea1a48d6f1aa7da88dda1
flattened_ast: fbb82b282d5fb0864a21f3a0f0271fdefa2b58fe80a3aba5c7307d5a9c5bfa68
inlined_ast: fbb82b282d5fb0864a21f3a0f0271fdefa2b58fe80a3aba5c7307d5a9c5bfa68
dce_ast: fbb82b282d5fb0864a21f3a0f0271fdefa2b58fe80a3aba5c7307d5a9c5bfa68
bytecode: 3c391009be59588562aa4a34d1b00508cd253c94d35a66741962352c76a92633
warnings: ""

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [EPAR0370021]: The type of `tokens` has no associated function `get` that takes 2 argument(s).\n --> compiler-test:19:9\n |\n 19 | tokens.get(true, true);\n | ^^^^^^^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `get` that takes 0 argument(s).\n --> compiler-test:21:9\n |\n 21 | amounts.get();\n | ^^^^^^^^^^^^^"
- "Error [EPAR0370021]: The type of `tokens` has no associated function `get` that takes 2 argument(s).\n --> compiler-test:18:9\n |\n 18 | tokens.get(true, true);\n | ^^^^^^^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `get` that takes 0 argument(s).\n --> compiler-test:20:9\n |\n 20 | amounts.get();\n | ^^^^^^^^^^^^^"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372030]: A mapping's value cannot be a record\n --> compiler-test:11:5\n |\n 11 | mapping tokens: address => Token;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `boolean`\n --> compiler-test:18:30\n |\n 18 | Mapping::get(tokens, true);\n | ^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `boolean`\n --> compiler-test:19:20\n |\n 19 | tokens.get(true);\n | ^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:20:31\n |\n 20 | Mapping::get(amounts, 1u8);\n | ^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:21:21\n |\n 21 | amounts.get(1u8);\n | ^^^\n"
- "Error [ETYC0372030]: A mapping's value cannot be a record\n --> compiler-test:10:5\n |\n 10 | mapping tokens: address => Token;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `boolean`\n --> compiler-test:17:30\n |\n 17 | Mapping::get(tokens, true);\n | ^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `boolean`\n --> compiler-test:18:20\n |\n 18 | tokens.get(true);\n | ^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:19:31\n |\n 19 | Mapping::get(amounts, 1u8);\n | ^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:20:21\n |\n 20 | amounts.get(1u8);\n | ^^^\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [EPAR0370021]: The type of `tokens` has no associated function `get_or_init` that takes 3 argument(s).\n --> compiler-test:19:9\n |\n 19 | tokens.get_or_init(addr, amount, 1u128);\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `get_or_init` that takes 1 argument(s).\n --> compiler-test:21:9\n |\n 21 | amounts.get_or_init(1u8);\n | ^^^^^^^^^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `get_or_init` that takes 0 argument(s).\n --> compiler-test:23:9\n |\n 23 | amounts.get_or_init();\n | ^^^^^^^^^^^^^^^^^^^^^"
- "Error [EPAR0370021]: The type of `tokens` has no associated function `get_or_init` that takes 3 argument(s).\n --> compiler-test:18:9\n |\n 18 | tokens.get_or_init(addr, amount, 1u128);\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `get_or_init` that takes 1 argument(s).\n --> compiler-test:20:9\n |\n 20 | amounts.get_or_init(1u8);\n | ^^^^^^^^^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `get_or_init` that takes 0 argument(s).\n --> compiler-test:22:9\n |\n 22 | amounts.get_or_init();\n | ^^^^^^^^^^^^^^^^^^^^^"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372030]: A mapping's value cannot be a record\n --> compiler-test:11:5\n |\n 11 | mapping tokens: address => Token;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372007]: Expected one type from `Token`, but got `u128`\n --> compiler-test:18:44\n |\n 18 | Mapping::get_or_init(tokens, addr, amount);\n | ^^^^^^\nError [ETYC0372007]: Expected one type from `Token`, but got `u128`\n --> compiler-test:19:34\n |\n 19 | tokens.get_or_init(addr, amount);\n | ^^^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:20:39\n |\n 20 | Mapping::get_or_init(amounts, 1u8, amount);\n | ^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:21:29\n |\n 21 | amounts.get_or_init(1u8, amount);\n | ^^^\nError [ETYC0372007]: Expected one type from `u128`, but got `u8`\n --> compiler-test:22:45\n |\n 22 | Mapping::get_or_init(amounts, addr, 1u8);\n | ^^^\nError [ETYC0372007]: Expected one type from `u128`, but got `u8`\n --> compiler-test:23:35\n |\n 23 | amounts.get_or_init(addr, 1u8);\n | ^^^\nError [ETYC0372003]: Expected type `u64` but type `u8` was found\n --> compiler-test:24:72\n |\n 24 | Mapping::get_or_init(tokens, addr, Token { owner: addr, gates: 1u8, amount: 1u8 });\n | ^^^\nError [ETYC0372003]: Expected type `u128` but type `u8` was found\n --> compiler-test:24:85\n |\n 24 | Mapping::get_or_init(tokens, addr, Token { owner: addr, gates: 1u8, amount: 1u8 });\n | ^^^\nError [ETYC0372003]: Expected type `u64` but type `u8` was found\n --> compiler-test:25:62\n |\n 25 | tokens.get_or_init(addr, Token { owner: addr, gates: 1u8, amount: 1u8 });\n | ^^^\nError [ETYC0372003]: Expected type `u128` but type `u8` was found\n --> compiler-test:25:75\n |\n 25 | tokens.get_or_init(addr, Token { owner: addr, gates: 1u8, amount: 1u8 });\n | ^^^\nError [ETYC0372005]: Unknown variable `foo`\n --> compiler-test:26:30\n |\n 26 | Mapping::get_or_init(foo, addr, amount);\n | ^^^\nError [ETYC0372005]: Unknown variable `foo`\n --> compiler-test:27:9\n |\n 27 | foo.get_or_init(addr, amount);\n | ^^^\n"
- "Error [ETYC0372030]: A mapping's value cannot be a record\n --> compiler-test:10:5\n |\n 10 | mapping tokens: address => Token;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372007]: Expected one type from `Token`, but got `u128`\n --> compiler-test:17:44\n |\n 17 | Mapping::get_or_init(tokens, addr, amount);\n | ^^^^^^\nError [ETYC0372007]: Expected one type from `Token`, but got `u128`\n --> compiler-test:18:34\n |\n 18 | tokens.get_or_init(addr, amount);\n | ^^^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:19:39\n |\n 19 | Mapping::get_or_init(amounts, 1u8, amount);\n | ^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:20:29\n |\n 20 | amounts.get_or_init(1u8, amount);\n | ^^^\nError [ETYC0372007]: Expected one type from `u128`, but got `u8`\n --> compiler-test:21:45\n |\n 21 | Mapping::get_or_init(amounts, addr, 1u8);\n | ^^^\nError [ETYC0372007]: Expected one type from `u128`, but got `u8`\n --> compiler-test:22:35\n |\n 22 | amounts.get_or_init(addr, 1u8);\n | ^^^\nError [ETYC0372003]: Expected type `u128` but type `u8` was found\n --> compiler-test:23:73\n |\n 23 | Mapping::get_or_init(tokens, addr, Token { owner: addr, amount: 1u8 });\n | ^^^\nError [ETYC0372003]: Expected type `u128` but type `u8` was found\n --> compiler-test:24:63\n |\n 24 | tokens.get_or_init(addr, Token { owner: addr, amount: 1u8 });\n | ^^^\nError [ETYC0372005]: Unknown variable `foo`\n --> compiler-test:25:30\n |\n 25 | Mapping::get_or_init(foo, addr, amount);\n | ^^^\nError [ETYC0372005]: Unknown variable `foo`\n --> compiler-test:26:9\n |\n 26 | foo.get_or_init(addr, amount);\n | ^^^\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372030]: A mapping's key cannot be a tuple\n --> compiler-test:4:5\n |\n 4 | mapping foo: (u32, u32) => u32;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `baz` is not found in the current scope.\n --> compiler-test:6:5\n |\n 6 | mapping floo: baz => u8;\n | ^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `foo` is not found in the current scope.\n --> compiler-test:8:5\n |\n 8 | mapping floop: foo => foo;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `foo` is not found in the current scope.\n --> compiler-test:8:5\n |\n 8 | mapping floop: foo => foo;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `foo` is not found in the current scope.\n --> compiler-test:10:5\n |\n 10 | mapping bar: foo => baz;\n | ^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `baz` is not found in the current scope.\n --> compiler-test:10:5\n |\n 10 | mapping bar: foo => baz;\n | ^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372030]: A mapping's value cannot be a record\n --> compiler-test:21:5\n |\n 21 | mapping real_tokens: address => RealToken;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372030]: A mapping's key cannot be a record\n --> compiler-test:23:5\n |\n 23 | mapping owners: RealToken => address;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"
- "Error [ETYC0372030]: A mapping's key cannot be a tuple\n --> compiler-test:4:5\n |\n 4 | mapping foo: (u32, u32) => u32;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `baz` is not found in the current scope.\n --> compiler-test:6:5\n |\n 6 | mapping floo: baz => u8;\n | ^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `foo` is not found in the current scope.\n --> compiler-test:8:5\n |\n 8 | mapping floop: foo => foo;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `foo` is not found in the current scope.\n --> compiler-test:8:5\n |\n 8 | mapping floop: foo => foo;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `foo` is not found in the current scope.\n --> compiler-test:10:5\n |\n 10 | mapping bar: foo => baz;\n | ^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372017]: The type `baz` is not found in the current scope.\n --> compiler-test:10:5\n |\n 10 | mapping bar: foo => baz;\n | ^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372030]: A mapping's value cannot be a record\n --> compiler-test:19:5\n |\n 19 | mapping real_tokens: address => RealToken;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372030]: A mapping's key cannot be a record\n --> compiler-test:21:5\n |\n 21 | mapping owners: RealToken => address;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [EPAR0370021]: The type of `tokens` has no associated function `set` that takes 3 argument(s).\n --> compiler-test:19:9\n |\n 19 | tokens.set(addr, amount, 1u128);\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `set` that takes 1 argument(s).\n --> compiler-test:21:9\n |\n 21 | amounts.set(1u8);\n | ^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `set` that takes 0 argument(s).\n --> compiler-test:23:9\n |\n 23 | amounts.set();\n | ^^^^^^^^^^^^^"
- "Error [EPAR0370021]: The type of `tokens` has no associated function `set` that takes 3 argument(s).\n --> compiler-test:18:9\n |\n 18 | tokens.set(addr, amount, 1u128);\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `set` that takes 1 argument(s).\n --> compiler-test:20:9\n |\n 20 | amounts.set(1u8);\n | ^^^^^^^^^^^^^^^^\nError [EPAR0370021]: The type of `amounts` has no associated function `set` that takes 0 argument(s).\n --> compiler-test:22:9\n |\n 22 | amounts.set();\n | ^^^^^^^^^^^^^"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372030]: A mapping's value cannot be a record\n --> compiler-test:11:5\n |\n 11 | mapping tokens: address => Token;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372007]: Expected one type from `Token`, but got `u128`\n --> compiler-test:18:36\n |\n 18 | Mapping::set(tokens, addr, amount);\n | ^^^^^^\nError [ETYC0372007]: Expected one type from `Token`, but got `u128`\n --> compiler-test:19:26\n |\n 19 | tokens.set(addr, amount);\n | ^^^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:20:31\n |\n 20 | Mapping::set(amounts, 1u8, amount);\n | ^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:21:21\n |\n 21 | amounts.set(1u8, amount);\n | ^^^\nError [ETYC0372007]: Expected one type from `u128`, but got `u8`\n --> compiler-test:22:37\n |\n 22 | Mapping::set(amounts, addr, 1u8);\n | ^^^\nError [ETYC0372007]: Expected one type from `u128`, but got `u8`\n --> compiler-test:23:27\n |\n 23 | amounts.set(addr, 1u8);\n | ^^^\nError [ETYC0372003]: Expected type `u64` but type `u8` was found\n --> compiler-test:24:64\n |\n 24 | Mapping::set(tokens, addr, Token { owner: addr, gates: 1u8, amount: 1u8 });\n | ^^^\nError [ETYC0372003]: Expected type `u128` but type `u8` was found\n --> compiler-test:24:77\n |\n 24 | Mapping::set(tokens, addr, Token { owner: addr, gates: 1u8, amount: 1u8 });\n | ^^^\nError [ETYC0372003]: Expected type `u64` but type `u8` was found\n --> compiler-test:25:54\n |\n 25 | tokens.set(addr, Token { owner: addr, gates: 1u8, amount: 1u8 });\n | ^^^\nError [ETYC0372003]: Expected type `u128` but type `u8` was found\n --> compiler-test:25:67\n |\n 25 | tokens.set(addr, Token { owner: addr, gates: 1u8, amount: 1u8 });\n | ^^^\nError [ETYC0372005]: Unknown variable `foo`\n --> compiler-test:26:22\n |\n 26 | Mapping::set(foo, addr, amount);\n | ^^^\nError [ETYC0372005]: Unknown variable `foo`\n --> compiler-test:27:9\n |\n 27 | foo.set(addr, amount);\n | ^^^\n"
- "Error [ETYC0372030]: A mapping's value cannot be a record\n --> compiler-test:10:5\n |\n 10 | mapping tokens: address => Token;\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nError [ETYC0372007]: Expected one type from `Token`, but got `u128`\n --> compiler-test:17:36\n |\n 17 | Mapping::set(tokens, addr, amount);\n | ^^^^^^\nError [ETYC0372007]: Expected one type from `Token`, but got `u128`\n --> compiler-test:18:26\n |\n 18 | tokens.set(addr, amount);\n | ^^^^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:19:31\n |\n 19 | Mapping::set(amounts, 1u8, amount);\n | ^^^\nError [ETYC0372007]: Expected one type from `address`, but got `u8`\n --> compiler-test:20:21\n |\n 20 | amounts.set(1u8, amount);\n | ^^^\nError [ETYC0372007]: Expected one type from `u128`, but got `u8`\n --> compiler-test:21:37\n |\n 21 | Mapping::set(amounts, addr, 1u8);\n | ^^^\nError [ETYC0372007]: Expected one type from `u128`, but got `u8`\n --> compiler-test:22:27\n |\n 22 | amounts.set(addr, 1u8);\n | ^^^\nError [ETYC0372003]: Expected type `u128` but type `u8` was found\n --> compiler-test:23:65\n |\n 23 | Mapping::set(tokens, addr, Token { owner: addr, amount: 1u8 });\n | ^^^\nError [ETYC0372003]: Expected type `u128` but type `u8` was found\n --> compiler-test:24:55\n |\n 24 | tokens.set(addr, Token { owner: addr, amount: 1u8 });\n | ^^^\nError [ETYC0372005]: Unknown variable `foo`\n --> compiler-test:25:22\n |\n 25 | Mapping::set(foo, addr, amount);\n | ^^^\nError [ETYC0372005]: Unknown variable `foo`\n --> compiler-test:26:9\n |\n 26 | foo.set(addr, amount);\n | ^^^\n"

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: d7414ef76b5d83ba8daed6e65487425048596937d5a6f783a313d3264d5db267
unrolled_ast: d7414ef76b5d83ba8daed6e65487425048596937d5a6f783a313d3264d5db267
ssa_ast: 6722ef50ccdf19eaaa57f68a249a6eb01ba78ec8ec60da0d8d664613324287aa
flattened_ast: 58ed29011b87aad89fe50f62402f441c9aa53fc2e18c3a188d94d0a88734236d
inlined_ast: 7ce8d6b0f22068cd9cf428040b3b55f08f7f890b09ed77c5f35d4ce10ed9232b
dce_ast: 48e52aa4ba7d5f4c5126ec93a14ec29772f80c73cc2d6ab5c77001f920b4c65b
bytecode: 737502f330fc737a1341eec9a9ac6c0abfc6a97e7ea588b082e4300ffb62380f
- - initial_ast: b9322b2961727d9350f00a48e478cd7cc3305e8b24d1a95f3daebb89979cdcd4
unrolled_ast: b9322b2961727d9350f00a48e478cd7cc3305e8b24d1a95f3daebb89979cdcd4
ssa_ast: a68e5b3047e2ae4e8a1a3293210794c1009a8cf85aee9f5a27f844c7e55b6ac4
flattened_ast: f9b740fe83fe345f9341ba97ee2704917bf57f65ac442c98aca90f41457c8726
inlined_ast: 98140fbd0bbf811404a993d34c80b08e352196fdfceec3e77683f7e78559f75b
dce_ast: 97bf25a5c2d84cec2332dbda4c1803c33abcc37eedfcabfb2019f42bf3b075ca
bytecode: 68f3c939bd54966a95293dd018927a50887a633eea6d5dc60fca8a1ba5400607
warnings: ""

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372064]: A `function` cannot output a record.\n --> compiler-test:10:45\n |\n 10 | function foo(board: Board, data: u8) -> Board {\n | ^^^^^\n"
- "Error [ETYC0372064]: A `function` cannot output a record.\n --> compiler-test:9:45\n |\n 9 | function foo(board: Board, data: u8) -> Board {\n | ^^^^^\n"

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: ab72e59b7e40857582bf8889a6e55d742d5c06dc7097883a25e040a8fe59ecb7
unrolled_ast: ab72e59b7e40857582bf8889a6e55d742d5c06dc7097883a25e040a8fe59ecb7
ssa_ast: e106c271385dba67b63dbaca5e89089ba7a311daaf82df652e61dab290e744a1
flattened_ast: 0aac34997b32ff0aff5cdb3f62d6e5abe3de9bbb692ca8715d98b234b0e09633
inlined_ast: 0aac34997b32ff0aff5cdb3f62d6e5abe3de9bbb692ca8715d98b234b0e09633
dce_ast: 0aac34997b32ff0aff5cdb3f62d6e5abe3de9bbb692ca8715d98b234b0e09633
bytecode: e6c71668ee7ddf9c510f9e4ab97c58fdff6c19cfd9923565a354e068d1439e55
- - initial_ast: 1c9131af8bec6870a83ff8bf17753dc991709a9b89fadc15759f2910ef0f2f76
unrolled_ast: 1c9131af8bec6870a83ff8bf17753dc991709a9b89fadc15759f2910ef0f2f76
ssa_ast: 998f181b5d511b7de65ce5adc45128ed1bb179556379a8fe54536e88f9a6c961
flattened_ast: eec4e32ae81554f04f5fd719f84ebc31570a2354af0d8ba06c8368f08c3202b9
inlined_ast: eec4e32ae81554f04f5fd719f84ebc31570a2354af0d8ba06c8368f08c3202b9
dce_ast: eec4e32ae81554f04f5fd719f84ebc31570a2354af0d8ba06c8368f08c3202b9
bytecode: df0b33177844b8a8ca6a013bcf1de0535bb8b38b16bfcc9766d120af2bfc98d1
warnings: ""

View File

@ -0,0 +1,12 @@
---
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: 439b99c38658af7a6e0a44900fd711923b4da86aed80839bc627fe210ba3ec26
unrolled_ast: 439b99c38658af7a6e0a44900fd711923b4da86aed80839bc627fe210ba3ec26
ssa_ast: 3cc47540dd38142f6f31534e0c55e3011c2b194bbe2069c9bcf68e58fa40d9b2
flattened_ast: a9e8114a3220086ec1268259ddc538ec62abc68b20a0eaaf79228af03c8d5007
inlined_ast: a9e8114a3220086ec1268259ddc538ec62abc68b20a0eaaf79228af03c8d5007
dce_ast: a9e8114a3220086ec1268259ddc538ec62abc68b20a0eaaf79228af03c8d5007
bytecode: b9f4013449f0c0c754435af754f6c68df5c36f26454f2a054e72e08e452cb891
warnings: ""

View File

@ -0,0 +1,5 @@
---
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372072]: The number of mappings exceeds the maximum. snarkVM allows up to 31 mappings within a single program.\n --> compiler-test:3:9\n |\n 3 | program test.aleo {\n | ^^^^^^^^^\n"

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: bc6c3d26d53e50c2d9e55ca513f9f9ca5a51243e168abdabc519b6ab284ab4ca
unrolled_ast: bc6c3d26d53e50c2d9e55ca513f9f9ca5a51243e168abdabc519b6ab284ab4ca
ssa_ast: 9dec3f9ffc327edcbca8cd41fc43ed0ea547b2a21a83011561dcfa4eddc6f805
flattened_ast: 14a0045dc7123f83d6ab8563c0ea931de77226a5debb18eb4f897e3a94c271ed
inlined_ast: 14a0045dc7123f83d6ab8563c0ea931de77226a5debb18eb4f897e3a94c271ed
dce_ast: 14a0045dc7123f83d6ab8563c0ea931de77226a5debb18eb4f897e3a94c271ed
bytecode: 4352ef3dcfd2e624a555a365a9f307cee9a66cf0efb3c7681eb4c0b0014fa403
- - initial_ast: d10773343fac6c3799d719a277bcc88acba4dceadd46beb8243dd77bad469994
unrolled_ast: d10773343fac6c3799d719a277bcc88acba4dceadd46beb8243dd77bad469994
ssa_ast: 4c59ee1269dbd8a5e5b48192d93d427abe2f06f20bb1cc41d895bc620ba730a3
flattened_ast: ad850f9ef141493ca7ce60c03e46ebf9ddc2aaf7bceed3f6592bad2849846f47
inlined_ast: ad850f9ef141493ca7ce60c03e46ebf9ddc2aaf7bceed3f6592bad2849846f47
dce_ast: ad850f9ef141493ca7ce60c03e46ebf9ddc2aaf7bceed3f6592bad2849846f47
bytecode: c0e06b094899a8b986048ec322e2fccaf4812febf185e635cb734797a25a7626
warnings: ""

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: 706d6b698209729ccc81f63bfe77a4baf572bfbda4d4165b51ed2fd1bbf34442
unrolled_ast: 706d6b698209729ccc81f63bfe77a4baf572bfbda4d4165b51ed2fd1bbf34442
ssa_ast: 06ce227a097baf4d7c73465d58710ab217a1ce7c8d49c8e9ca644627e607703a
flattened_ast: 2f2798034c971938c91ed4422def44932cb6f657c62a56b79de431ca1f542fc2
inlined_ast: 2f2798034c971938c91ed4422def44932cb6f657c62a56b79de431ca1f542fc2
dce_ast: 2f2798034c971938c91ed4422def44932cb6f657c62a56b79de431ca1f542fc2
bytecode: 07dc4694b8c8cff94cef0a4ea9ed3aaf27e874d9b26a91d8d5784cab20187bfb
- - initial_ast: d916e07c1b3a408ea44688618ba390cfe2e96122204a09ef7ea95aecf5b39153
unrolled_ast: d916e07c1b3a408ea44688618ba390cfe2e96122204a09ef7ea95aecf5b39153
ssa_ast: 9f7aafbfadc1500c575646f76695393748b81686ba78ae356a58ab93b4afd257
flattened_ast: 6b35d3908459a4dc46ea617bfba1fab4bf1519fcfb0728f8fda1a4bb6bc903e1
inlined_ast: 6b35d3908459a4dc46ea617bfba1fab4bf1519fcfb0728f8fda1a4bb6bc903e1
dce_ast: 6b35d3908459a4dc46ea617bfba1fab4bf1519fcfb0728f8fda1a4bb6bc903e1
bytecode: 567f936a9f498a3648860fa0c7028b9fe84c93e9843fc82865e39298bc99c525
warnings: ""

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372016]: Record Token defined with more than one variable with the same name.\n --> compiler-test:4:5\n |\n 4 | record Token {\n 5 | // The token owner.\n 6 | owner: address,\n 7 | // The token owner.\n 8 | owner: address, // Cannot define two record variables with the same name.\n 9 | // The Aleo balance (in gates).\n 10 | gates: u64,\n 11 | // The token amount.\n 12 | amount: u64,\n 13 | }\n | ^\n"
- "Error [ETYC0372016]: Record Token defined with more than one variable with the same name.\n --> compiler-test:4:5\n |\n 4 | record Token {\n 5 | // The token owner.\n 6 | owner: address,\n 7 | // The token owner.\n 8 | owner: address, // Cannot define two record variables with the same name.\n 9 | // The token amount.\n 10 | amount: u64,\n 11 | }\n | ^\n"

View File

@ -0,0 +1,12 @@
---
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: 3f8867e359f2447722d16322559bb75874ab823ebfb80f75b538865f64d28d93
unrolled_ast: 3f8867e359f2447722d16322559bb75874ab823ebfb80f75b538865f64d28d93
ssa_ast: 01d8390308277d2711be544ca4c4bf536df6a7a9ad5662093ae0635a50050d59
flattened_ast: 72ba7fc102711bf3cb4f9d8c987edc766e7876bd24a0ec7794f6ddced0d35026
inlined_ast: 72ba7fc102711bf3cb4f9d8c987edc766e7876bd24a0ec7794f6ddced0d35026
dce_ast: 72ba7fc102711bf3cb4f9d8c987edc766e7876bd24a0ec7794f6ddced0d35026
bytecode: 48e7881ab72ea8eaea757488386d315e8b5572f7ed34a5f1c70a5d19b2c4c481
warnings: ""

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: befe0cc5d37e961c86223e95440fc29b8eeda7f9e7b0573dc6d3f956d8a3ece6
unrolled_ast: befe0cc5d37e961c86223e95440fc29b8eeda7f9e7b0573dc6d3f956d8a3ece6
ssa_ast: d32dc9d291fad7846b373e76610e5e83f396126a90f40a7cf2f673cff6159a36
flattened_ast: 93a108cdde1ece68c4c7c4a4f061bd14104dc985fda2fedaa3f4deab5dad6565
inlined_ast: 93a108cdde1ece68c4c7c4a4f061bd14104dc985fda2fedaa3f4deab5dad6565
dce_ast: 93a108cdde1ece68c4c7c4a4f061bd14104dc985fda2fedaa3f4deab5dad6565
bytecode: a040c0026210ca23cfd255c7854d9ea01f1eebfaa58033a9ffb7f8dd99a4c8bb
- - initial_ast: e4233d80b488f02084141d66b4d3ad7ae78ad502d351801246f5d15b4cf838d7
unrolled_ast: e4233d80b488f02084141d66b4d3ad7ae78ad502d351801246f5d15b4cf838d7
ssa_ast: 8b4cd0a125a03d6d3ac37a577ec589fb0a1f03e5ecfd4d93efced590b4442f0c
flattened_ast: ce4433d4704259a6d569754a02bf47dca1b9324a787dd9c7a15118bf78b6b1db
inlined_ast: ce4433d4704259a6d569754a02bf47dca1b9324a787dd9c7a15118bf78b6b1db
dce_ast: 2aa5077b720b603dcc110365523db70743938b53bcfe017dc3ba3e54806709b2
bytecode: f243717a23b7bcbf2e4656d741a9e43b8a60184892683964efb628e22e36e7f1
warnings: ""

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: 5095cc2534f53b3d89023c125c9103d76ca3c32135c97cadb949db4474a28309
unrolled_ast: 5095cc2534f53b3d89023c125c9103d76ca3c32135c97cadb949db4474a28309
ssa_ast: 9cecc0f8f61a79f6c87a2c813e3af44ddd194a3433720689dcd5679d2a788443
flattened_ast: d6db91d569b87edba60124cabfa970485d6dd0bc1767bf39109e91d2742eb22a
inlined_ast: d6db91d569b87edba60124cabfa970485d6dd0bc1767bf39109e91d2742eb22a
dce_ast: d6db91d569b87edba60124cabfa970485d6dd0bc1767bf39109e91d2742eb22a
bytecode: a040c0026210ca23cfd255c7854d9ea01f1eebfaa58033a9ffb7f8dd99a4c8bb
- - initial_ast: a25c7677daae998b8d02bf909af9d1c2c801dc8a9f4add7e5b0aa41f8a189330
unrolled_ast: a25c7677daae998b8d02bf909af9d1c2c801dc8a9f4add7e5b0aa41f8a189330
ssa_ast: a73b178cb60383c00720f4c5c708ca4ec57f27c195edecbe14f9f043a816881d
flattened_ast: ad5af5e933d455ebd4cac33b02cddd682900375eda223f905a5ee7d940d99800
inlined_ast: ad5af5e933d455ebd4cac33b02cddd682900375eda223f905a5ee7d940d99800
dce_ast: cc5a25c7cee7a62ec59af5de109aa28d0013fd93648a28b20b13d6115884d81d
bytecode: 0df6e3d77f2b3503e1b948582ccf17e40ef1cc0ba784bfb0ee91dd6388003630
warnings: ""

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372064]: A `function` cannot output a record.\n --> compiler-test:13:44\n |\n 13 | function mint(r0: address, r1: u64) -> Token {\n | ^^^^^\nError [ETYC0372003]: Expected type `address` but type `u64` was found\n --> compiler-test:15:20\n |\n 15 | owner: r1, // This variable should be type address.\n | ^^\nError [ETYC0372003]: Expected type `u64` but type `address` was found\n --> compiler-test:17:21\n |\n 17 | amount: r0, // This variable should be type u64.\n | ^^\nError [ETYC0372047]: Only `inline` can be called from a `function` or `inline`.\n --> compiler-test:23:24\n |\n 23 | let t: Token = mint(x, c);\n | ^^^^^^^^^^\n"
- "Error [ETYC0372064]: A `function` cannot output a record.\n --> compiler-test:11:44\n |\n 11 | function mint(r0: address, r1: u64) -> Token {\n | ^^^^^\nError [ETYC0372003]: Expected type `address` but type `u64` was found\n --> compiler-test:13:20\n |\n 13 | owner: r1, // This variable should be type address.\n | ^^\nError [ETYC0372003]: Expected type `u64` but type `address` was found\n --> compiler-test:14:21\n |\n 14 | amount: r0, // This variable should be type u64.\n | ^^\nError [ETYC0372047]: Only `inline` can be called from a `function` or `inline`.\n --> compiler-test:20:24\n |\n 20 | let t: Token = mint(x, c);\n | ^^^^^^^^^^\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372064]: A `function` cannot output a record.\n --> compiler-test:13:44\n |\n 13 | function mint(r0: address, r1: u64) -> Token {\n | ^^^^^\nError [ETYC0372013]: Struct initialization expression for `Token` is missing member `owner`.\n --> compiler-test:14:16\n |\n 14 | return Token {\n 15 | sender: r0, // This variable should be named `owner`.\n 16 | gates: 0u64,\n 17 | amount: r1,\n 18 | };\n | ^^^^^^\nError [ETYC0372047]: Only `inline` can be called from a `function` or `inline`.\n --> compiler-test:23:24\n |\n 23 | let t: Token = mint(x, c);\n | ^^^^^^^^^^\n"
- "Error [ETYC0372064]: A `function` cannot output a record.\n --> compiler-test:11:44\n |\n 11 | function mint(r0: address, r1: u64) -> Token {\n | ^^^^^\nError [ETYC0372013]: Struct initialization expression for `Token` is missing member `owner`.\n --> compiler-test:12:16\n |\n 12 | return Token {\n 13 | sender: r0, // This variable should be named `owner`.\n 14 | amount: r1,\n 15 | };\n | ^^^^^^\nError [ETYC0372047]: Only `inline` can be called from a `function` or `inline`.\n --> compiler-test:20:24\n |\n 20 | let t: Token = mint(x, c);\n | ^^^^^^^^^^\n"

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: c134c752949c62a183432f6a7f466e8270be5592ade20d634a99796689d6db30
unrolled_ast: c134c752949c62a183432f6a7f466e8270be5592ade20d634a99796689d6db30
ssa_ast: 8e601ac48d9fddfdae521a6ffaedfed1cbfaa802bf1b81530f58f26d5cf67ead
flattened_ast: f88ab1e7c351cd90b5f49150df221c7c53e032e166e9d178a4d3524084e66b17
inlined_ast: f88ab1e7c351cd90b5f49150df221c7c53e032e166e9d178a4d3524084e66b17
dce_ast: f88ab1e7c351cd90b5f49150df221c7c53e032e166e9d178a4d3524084e66b17
bytecode: cf5ec964f29718bf4af63705e5037202cc0f007a9bd6fa6fc510ecbbd66cd401
- - initial_ast: d879f1239bcfd241d83aa9b047ae7db135192b9db7e62329ffb3ee2fd61e6b4d
unrolled_ast: d879f1239bcfd241d83aa9b047ae7db135192b9db7e62329ffb3ee2fd61e6b4d
ssa_ast: dfdc551d05a705f9048a3621d204e3f5a745ac83724366f797269416236c21da
flattened_ast: ef37b08dd44f8827bb3b3828f01fccb04ef39ebaf0352d1235c2a8009aa6d196
inlined_ast: ef37b08dd44f8827bb3b3828f01fccb04ef39ebaf0352d1235c2a8009aa6d196
dce_ast: bc021a92a42dee742df74b827a22ec7336c325d0a497dc13362de6b4fbf67864
bytecode: 9477487eb30939ab953ae2b069d924cc89d50b2b1062bfad64dcb7c79d817b6f
warnings: ""

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:13:9\n |\n 13 | foo: Foo,\n | ^^^\n |\n = Remove the record `Foo` from `Token`.\n"
- "Error [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:11:9\n |\n 11 | foo: Foo,\n | ^^^\n |\n = Remove the record `Foo` from `Token`.\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372055]: A record cannot contain a tuple.\n --> compiler-test:8:9\n |\n 8 | foo: (Foo, Foo),\n | ^^^\nError [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:8:9\n |\n 8 | foo: (Foo, Foo),\n | ^^^\n |\n = Remove the record `Foo` from `Token2`.\nError [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:8:9\n |\n 8 | foo: (Foo, Foo),\n | ^^^\n |\n = Remove the record `Foo` from `Token2`.\n"
- "Error [ETYC0372055]: A record cannot contain a tuple.\n --> compiler-test:7:9\n |\n 7 | foo: (Foo, Foo),\n | ^^^\nError [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:7:9\n |\n 7 | foo: (Foo, Foo),\n | ^^^\n |\n = Remove the record `Foo` from `Token2`.\nError [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:7:9\n |\n 7 | foo: (Foo, Foo),\n | ^^^\n |\n = Remove the record `Foo` from `Token2`.\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:12:9\n |\n 12 | bar: Foo,\n | ^^^\n |\n = Remove the record `Foo` from `Bar`.\n"
- "Error [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:11:9\n |\n 11 | bar: Foo,\n | ^^^\n |\n = Remove the record `Foo` from `Bar`.\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372055]: A record cannot contain a tuple.\n --> compiler-test:7:9\n |\n 7 | bar: (Bar, Bar),\n | ^^^\nError [ETYC0372055]: A struct cannot contain a tuple.\n --> compiler-test:11:9\n |\n 11 | bar: (Token, Token),\n | ^^^\nError [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:11:9\n |\n 11 | bar: (Token, Token),\n | ^^^\n |\n = Remove the record `Token` from `Bar`.\nError [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:11:9\n |\n 11 | bar: (Token, Token),\n | ^^^\n |\n = Remove the record `Token` from `Bar`.\n"
- "Error [ETYC0372055]: A record cannot contain a tuple.\n --> compiler-test:6:9\n |\n 6 | bar: (Bar, Bar),\n | ^^^\nError [ETYC0372055]: A struct cannot contain a tuple.\n --> compiler-test:10:9\n |\n 10 | bar: (Token, Token),\n | ^^^\nError [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:10:9\n |\n 10 | bar: (Token, Token),\n | ^^^\n |\n = Remove the record `Token` from `Bar`.\nError [ETYC0372029]: A struct or record cannot contain another record.\n --> compiler-test:10:9\n |\n 10 | bar: (Token, Token),\n | ^^^\n |\n = Remove the record `Token` from `Bar`.\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372019]: The `record` type requires the variable `owner: address`.\n --> compiler-test:5:5\n |\n 5 | record Token {\n 6 | // The Aleo balance (in gates).\n 7 | gates: u64,\n 8 | // The token amount.\n 9 | amount: u64,\n 10 | }\n | ^\n"
- "Error [ETYC0372019]: The `record` type requires the variable `owner: address`.\n --> compiler-test:5:5\n |\n 5 | record Token {\n 6 | // The token amount.\n 7 | amount: u64,\n 8 | }\n | ^\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372020]: The field `owner` in a `record` must have type `address`.\n --> compiler-test:5:5\n |\n 5 | record Token {\n 6 | gates: u64,\n 7 | owner: bool,\n 8 | }\n | ^\n"
- "Error [ETYC0372020]: The field `owner` in a `record` must have type `address`.\n --> compiler-test:5:5\n |\n 5 | record Token {\n 6 | owner: bool,\n 7 | }\n | ^\n"

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: 2752eaa8193dc950ae07dbd8277c03fb924546879912afdc7c4709eb92155a1d
unrolled_ast: 2752eaa8193dc950ae07dbd8277c03fb924546879912afdc7c4709eb92155a1d
ssa_ast: 03392a93fef2cf4ac477a5850335d8a37939903c92ea49e58974ac0573dd447a
flattened_ast: ea4f399821484f56da2ed384f7530428dcf91f5dfd227c83a785d6a50f33167f
inlined_ast: ea4f399821484f56da2ed384f7530428dcf91f5dfd227c83a785d6a50f33167f
dce_ast: ea4f399821484f56da2ed384f7530428dcf91f5dfd227c83a785d6a50f33167f
bytecode: 07dc4694b8c8cff94cef0a4ea9ed3aaf27e874d9b26a91d8d5784cab20187bfb
- - initial_ast: d0efb41bcfc2af8a34bd42fdcb3c45700737427977c4738fd70eb5d1379a9d02
unrolled_ast: d0efb41bcfc2af8a34bd42fdcb3c45700737427977c4738fd70eb5d1379a9d02
ssa_ast: b844a3275485038f2488afc671ab7e7b581a6ec8009a297993766fb6ac1477f0
flattened_ast: 518269a0d8fb855e056c6b0bbc7439e68120ef8cf1eb393376efe2d5fba0f939
inlined_ast: 518269a0d8fb855e056c6b0bbc7439e68120ef8cf1eb393376efe2d5fba0f939
dce_ast: 518269a0d8fb855e056c6b0bbc7439e68120ef8cf1eb393376efe2d5fba0f939
bytecode: 567f936a9f498a3648860fa0c7028b9fe84c93e9843fc82865e39298bc99c525
warnings: ""

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: 20ad25142425e428387351b1eae95763cd2bafc2aea81270944cca08c058ece4
unrolled_ast: 20ad25142425e428387351b1eae95763cd2bafc2aea81270944cca08c058ece4
ssa_ast: a87e55fe349912264137c0ac31434a9b0623c8701997d6930ab6e3e04f67bbe3
flattened_ast: 265092b725660652360db1d5995f28356d800d264a512511dbc70d31068e4e77
inlined_ast: 265092b725660652360db1d5995f28356d800d264a512511dbc70d31068e4e77
dce_ast: 265092b725660652360db1d5995f28356d800d264a512511dbc70d31068e4e77
bytecode: 6e6bc5ede7d5fe2fe82ca47f48097138485a6f8f2e4fe3649d23f67a5ef32173
- - initial_ast: 7c49d3c6a73a533f42970d6c0eb9068d75922a6cf6b6cf366a80c083dc65c42d
unrolled_ast: 7c49d3c6a73a533f42970d6c0eb9068d75922a6cf6b6cf366a80c083dc65c42d
ssa_ast: 61053db22674f27f7f2cefefda51fd0cbb1bfd1f69511e81399ead44b8df4194
flattened_ast: d390010c4fc85bbf35c9bf6c9b4dd6cfed81b4c743a052d613bd2231a2e78c22
inlined_ast: d390010c4fc85bbf35c9bf6c9b4dd6cfed81b4c743a052d613bd2231a2e78c22
dce_ast: d390010c4fc85bbf35c9bf6c9b4dd6cfed81b4c743a052d613bd2231a2e78c22
bytecode: 8c8992021f4a3ff29c9d5b1ddb3a34e14878b9cd822ac6e470018a4e268b2769
warnings: ""

View File

@ -2,11 +2,11 @@
namespace: Compile
expectation: Pass
outputs:
- - initial_ast: e48fe7856ecd5c90b2e8d425feb01da0f0876cca5385a8d1757beb5cbbb63564
unrolled_ast: e48fe7856ecd5c90b2e8d425feb01da0f0876cca5385a8d1757beb5cbbb63564
ssa_ast: f32921e1ad3a516b4b01cf14c25416dac730e600fdc85c7d35328a4e5e74d62c
flattened_ast: 365d9ac45a96dfdb3fd84bd8d01e0e0ace194c61fb9acf901756cea7c7be402b
inlined_ast: 365d9ac45a96dfdb3fd84bd8d01e0e0ace194c61fb9acf901756cea7c7be402b
dce_ast: 365d9ac45a96dfdb3fd84bd8d01e0e0ace194c61fb9acf901756cea7c7be402b
bytecode: 76d814dbae331736a5349613302761136daa646913749a981d84983f56a7ed72
- - initial_ast: 2690be4baa2d9b376942d0a10e0d2c152a5230d7c9d2aebff8ac9b3a3d62751e
unrolled_ast: 2690be4baa2d9b376942d0a10e0d2c152a5230d7c9d2aebff8ac9b3a3d62751e
ssa_ast: 45ad49325c4442c88f674bacd4291b674d10bede9940e23847593dba58bba75b
flattened_ast: f49cfa1d664d35e6840d75ecf216b0e0f86572977c0bcad9a7a9fd08c8d8fec2
inlined_ast: f49cfa1d664d35e6840d75ecf216b0e0f86572977c0bcad9a7a9fd08c8d8fec2
dce_ast: f49cfa1d664d35e6840d75ecf216b0e0f86572977c0bcad9a7a9fd08c8d8fec2
bytecode: b028178300130b3ccbbce4d1d496a8feb1e4ac876572588e646c6e220105ff70
warnings: ""

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372003]: Expected type `()` but type `test_credits` was found\n --> compiler-test:11:16\n |\n 11 | return test_credits {\n | ^^^^^^^^^^^^\n"
- "Error [ETYC0372003]: Expected type `()` but type `test_credits` was found\n --> compiler-test:10:16\n |\n 10 | return test_credits {\n | ^^^^^^^^^^^^\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372049]: Loop bound must be a literal.\n --> compiler-test:12:28\n |\n 12 | for i:u64 in 0u64..amount {\n | ^^^^^^\n"
- "Error [ETYC0372049]: Loop bound must be a literal.\n --> compiler-test:11:28\n |\n 11 | for i:u64 in 0u64..amount {\n | ^^^^^^\n"

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [ETYC0372055]: A record cannot contain a tuple.\n --> compiler-test:7:9\n |\n 7 | amounts: (u64, u64),\n | ^^^^^^^\n"
- "Error [ETYC0372055]: A record cannot contain a tuple.\n --> compiler-test:6:9\n |\n 6 | amounts: (u64, u64),\n | ^^^^^^^\n"

View File

@ -1,5 +1,5 @@
---
namespace: Finalize
namespace: Execute
expectation: Pass
outputs:
- - initial_ast: 26abbb0ef61c47bd69f82f4ed0357583bad2ba031ee028400504bfc1f856e0bb
@ -10,18 +10,13 @@ outputs:
dce_ast: 5cef23d00b994c5f0dc715ede94edae006730bebec809d1425d83418b287a811
bytecode: 2f96ec3248782d1a90f9b223eb25bce3770fb9894ecd8ee89d685936ba1ea86b
warnings: ""
initial_state: c9ec5ff008d56bc287af2e780cc50f7132cc8c1feea397a90f86ed825e782454
results:
dubble:
- execute_output: "[]"
finalize_output: Finalize was successful.
input: "[]"
- execute_output: "[]"
finalize_output: Finalize was successful.
input: "[]"
- execute_output: "[]"
finalize_output: Finalize was successful.
input: "[]"
- execute_output: "[]"
finalize_output: Finalize was successful.
input: "[]"
- input: "[]"
output: "[]"
- input: "[]"
output: "[]"
- input: "[]"
output: "[]"
- input: "[]"
output: "[]"

View File

@ -2,17 +2,17 @@
namespace: Execute
expectation: Pass
outputs:
- - initial_ast: e192c70186fda9dc009e023b648bf336b7ebdfed0ec157fdaa7990776a3cbd89
unrolled_ast: e192c70186fda9dc009e023b648bf336b7ebdfed0ec157fdaa7990776a3cbd89
ssa_ast: 558e95d5d2b7baa877a0ad1278dfda0df761be90c58721fe3210fe4a89469a73
flattened_ast: 23880e52eb60934d5bbf37d7a404435ff54f12eba673787df7c844dc37035f80
inlined_ast: 23880e52eb60934d5bbf37d7a404435ff54f12eba673787df7c844dc37035f80
dce_ast: 23880e52eb60934d5bbf37d7a404435ff54f12eba673787df7c844dc37035f80
bytecode: d1f79755d5d49e093fefa3bed2a2e81482a103f4f0411fe8989868a3ac4fcf4c
- - initial_ast: d280acb4697e7a9ec03f4d4e59857240a0e5da3eabd475b0c24d3f40fc3eed92
unrolled_ast: d280acb4697e7a9ec03f4d4e59857240a0e5da3eabd475b0c24d3f40fc3eed92
ssa_ast: 1e5b51578e41dff5543775bf266034e7b502d48393a7c841e07583fac9949755
flattened_ast: 808ad6aad5b5dc657fd57540169f09b9dcbace46e39df88a4ce9e31802273aff
inlined_ast: 808ad6aad5b5dc657fd57540169f09b9dcbace46e39df88a4ce9e31802273aff
dce_ast: 808ad6aad5b5dc657fd57540169f09b9dcbace46e39df88a4ce9e31802273aff
bytecode: d47819ba59e730eb159ee9e33fef5a35aac6062e70c743a749157d54824a45d9
warnings: ""
results:
mint:
- input: "[aleo14lskz87tkqwwkyt2z44h64ave5gcwqs6yyfdztus37nupxsj8ypsmqsqcs, 0u64]"
output: "[{\n owner: aleo14lskz87tkqwwkyt2z44h64ave5gcwqs6yyfdztus37nupxsj8ypsmqsqcs.private,\n gates: 0u64.public,\n amount: 0u64.private,\n flag: true.constant,\n \n}]"
output: "[{\n owner: aleo14lskz87tkqwwkyt2z44h64ave5gcwqs6yyfdztus37nupxsj8ypsmqsqcs.private,\n amount: 0u64.private,\n flag: true.constant,\n \n}]"
- input: "[aleo12keuztkg4cjzxx7hwwmrnnv85dkeqf8pjm877lf6f6lupma2pqrqcl2d8q, 1u64]"
output: "[{\n owner: aleo12keuztkg4cjzxx7hwwmrnnv85dkeqf8pjm877lf6f6lupma2pqrqcl2d8q.private,\n gates: 0u64.public,\n amount: 1u64.private,\n flag: true.constant,\n \n}]"
output: "[{\n owner: aleo12keuztkg4cjzxx7hwwmrnnv85dkeqf8pjm877lf6f6lupma2pqrqcl2d8q.private,\n amount: 1u64.private,\n flag: true.constant,\n \n}]"

View File

@ -16,19 +16,12 @@ outputs:
span:
lo: 57
hi: 71
- mode: Private
identifier: "{\"name\":\"gates\",\"span\":\"{\\\"lo\\\":89,\\\"hi\\\":94}\"}"
type_:
Integer: U64
span:
lo: 89
hi: 99
is_record: true
span:
lo: 26
hi: 106
hi: 78
mappings: {}
functions: {}
span:
lo: 2
hi: 108
hi: 80

View File

@ -11,8 +11,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}
@ -27,7 +25,6 @@ program test.aleo {
assert_neq(token, Token {
owner: aleo1lfapwg53y5enqpt0d8cnef4g8lj7l6g9uhkkma23qyv6jm4ppyfq50regr,
gates: 0u64,
amount: 0u64,
});
return a == true;

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u128,
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u128,
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u128,
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u128,
}
@ -24,8 +23,8 @@ program test.aleo {
amounts.get_or_init(1u8, amount);
Mapping::get_or_init(amounts, addr, 1u8);
amounts.get_or_init(addr, 1u8);
Mapping::get_or_init(tokens, addr, Token { owner: addr, gates: 1u8, amount: 1u8 });
tokens.get_or_init(addr, Token { owner: addr, gates: 1u8, amount: 1u8 });
Mapping::get_or_init(tokens, addr, Token { owner: addr, amount: 1u8 });
tokens.get_or_init(addr, Token { owner: addr, amount: 1u8 });
Mapping::get_or_init(foo, addr, amount);
foo.get_or_init(addr, amount);
}

View File

@ -15,8 +15,6 @@ program test.aleo {
record RealToken {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u128,
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u128,
}
@ -24,8 +23,8 @@ program test.aleo {
amounts.set(1u8, amount);
Mapping::set(amounts, addr, 1u8);
amounts.set(addr, 1u8);
Mapping::set(tokens, addr, Token { owner: addr, gates: 1u8, amount: 1u8 });
tokens.set(addr, Token { owner: addr, gates: 1u8, amount: 1u8 });
Mapping::set(tokens, addr, Token { owner: addr, amount: 1u8 });
tokens.set(addr, Token { owner: addr, amount: 1u8 });
Mapping::set(foo, addr, amount);
foo.set(addr, amount);
}

View File

@ -10,7 +10,6 @@ program test.aleo;
record dummy:
owner as address.private;
gates as u64.private;
data as u8.private;
closure eliminate_unused_function_call:
@ -30,7 +29,6 @@ program test.aleo {
record dummy {
owner: address,
gates: u64,
data: u8,
}
@ -51,7 +49,6 @@ program test.aleo {
}
let f: dummy = dummy {
owner: self.caller,
gates: 0u64,
data: e,
};
return a + b;

View File

@ -6,20 +6,18 @@ expectation: Fail
program test.aleo {
record Board {
owner: address,
gates: u64,
data: u8,
}
function foo(board: Board, data: u8) -> Board {
return Board {
owner: board.owner,
gates: board.gates,
data: data,
};
}
function bar(board: Board) {
assert_eq(board.gates, 0u64);
assert_eq(board.data, 0u8);
}
transition main(board: Board) -> Board {

View File

@ -6,7 +6,6 @@ expectation: Pass
program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u64
}
@ -18,14 +17,12 @@ program test.aleo {
if(password_hash == password_hash_from_input){
return Token {
owner: owner,
gates: 0u64,
amount: amount
};
}
else {
return Token {
owner: owner,
gates: 0u64,
amount: 0u64
};
}
@ -39,14 +36,12 @@ program test.aleo {
if(password_hash == password_hash_from_input){
let token: Token = Token {
owner: owner,
gates: 0u64,
amount: amount
};
return token;
}
return Token {
owner: owner,
gates: 0u64,
amount: 0u64
};
}

View File

@ -0,0 +1,43 @@
/*
namespace: Compile
expectation: Pass
*/
program test.aleo {
mapping one: field => field;
mapping two: field => field;
mapping three: field => field;
mapping four: field => field;
mapping five: field => field;
mapping six: field => field;
mapping seven: field => field;
mapping eight: field => field;
mapping nine: field => field;
mapping ten: field => field;
mapping eleven: field => field;
mapping twelve: field => field;
mapping thirteen: field => field;
mapping fourteen: field => field;
mapping fifteen: field => field;
mapping sixteen: field => field;
mapping seventeen: field => field;
mapping eighteen: field => field;
mapping nineteen: field => field;
mapping twenty: field => field;
mapping twentyone: field => field;
mapping twentytwo: field => field;
mapping twentythree: field => field;
mapping twentyfour: field => field;
mapping twentyfive: field => field;
mapping twentysix: field => field;
mapping twentyseven: field => field;
mapping twentyeight: field => field;
mapping twentynine: field => field;
mapping thirty: field => field;
mapping thirtyone: field => field;
transition foo() -> u8 {
return 1u8 + 1u8;
}
}

View File

@ -0,0 +1,44 @@
/*
namespace: Compile
expectation: Fail
*/
program test.aleo {
mapping one: field => field;
mapping two: field => field;
mapping three: field => field;
mapping four: field => field;
mapping five: field => field;
mapping six: field => field;
mapping seven: field => field;
mapping eight: field => field;
mapping nine: field => field;
mapping ten: field => field;
mapping eleven: field => field;
mapping twelve: field => field;
mapping thirteen: field => field;
mapping fourteen: field => field;
mapping fifteen: field => field;
mapping sixteen: field => field;
mapping seventeen: field => field;
mapping eighteen: field => field;
mapping nineteen: field => field;
mapping twenty: field => field;
mapping twentyone: field => field;
mapping twentytwo: field => field;
mapping twentythree: field => field;
mapping twentyfour: field => field;
mapping twentyfive: field => field;
mapping twentysix: field => field;
mapping twentyseven: field => field;
mapping twentyeight: field => field;
mapping twentynine: field => field;
mapping thirty: field => field;
mapping thirtyone: field => field;
mapping thirtytwo: field => field;
transition foo() -> u8 {
return 1u8 + 1u8;
}
}

View File

@ -5,7 +5,6 @@ expectation: Pass
program test.aleo {
record Token {
gates: address,
owner: address,
}

View File

@ -8,8 +8,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}

View File

@ -7,8 +7,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}

View File

@ -9,8 +9,6 @@ program test.aleo {
owner: address,
// The token owner.
owner: address, // Cannot define two record variables with the same name.
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}

View File

@ -0,0 +1,19 @@
/*
namespace: Compile
expectation: Pass
*/
program test.aleo {
record Token {
// The token owner.
owner: address,
// The token amount.
amount: u64,
// `gates` as a normal field.
gates: u64,
}
transition main(a: u8, b:u8) -> u8 {
return a + b;
}
}

View File

@ -7,8 +7,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}
@ -16,14 +14,13 @@ program test.aleo {
transition mint(r0: address, r1: u64) -> Token {
return Token {
owner: r0,
gates: 0u64,
amount: r1,
};
}
transition main(x: address) -> u64 {
let c: u64 = 1u64;
let t: Token = Token { owner: x, gates: 0u64, amount: c};
return t.gates;
let t: Token = Token { owner: x, amount: c};
return c * c;
}}

View File

@ -7,8 +7,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}
@ -16,14 +14,13 @@ program test.aleo {
transition mint(owner: address, amount: u64) -> Token {
return Token {
owner,
gates: 0u64,
amount,
};
}
transition main(x: address) -> u64 {
let c: u64 = 1u64;
let t: Token = Token { owner: x, gates: 0u64, amount: c};
return t.gates;
let t: Token = Token { owner: x, amount: c};
return c + c;
}}

View File

@ -7,8 +7,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}
@ -16,7 +14,6 @@ program test.aleo {
function mint(r0: address, r1: u64) -> Token {
return Token {
owner: r1, // This variable should be type address.
gates: 0u64,
amount: r0, // This variable should be type u64.
};
}
@ -24,6 +21,6 @@ program test.aleo {
function main(x: address) -> u64 {
let c: u64 = 1u64;
let t: Token = mint(x, c);
return t.gates;
return c;
}}

View File

@ -7,8 +7,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}
@ -16,7 +14,6 @@ program test.aleo {
function mint(r0: address, r1: u64) -> Token {
return Token {
sender: r0, // This variable should be named `owner`.
gates: 0u64,
amount: r1,
};
}
@ -24,6 +21,6 @@ program test.aleo {
function main(x: address) -> u64 {
let c: u64 = 1u64;
let t: Token = mint(x, c);
return t.gates;
return c;
}}

View File

@ -12,8 +12,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: Amount,
}
@ -21,15 +19,14 @@ program test.aleo {
transition mint(r0: address, r1: u64) -> Token {
return Token {
owner: r0,
gates: 0u64,
amount: Amount { amount: r1, amt: r1 },
};
}
transition main(x: address) -> u64 {
let c: u64 = 1u64;
let t: Token = Token { owner: x, gates: 0u64, amount: Amount { amount: c, amt: c } };
return t.gates;
let t: Token = Token { owner: x, amount: Amount { amount: c, amt: c } };
return c + c;
}
}

View File

@ -6,13 +6,11 @@ expectation: Fail
program test.aleo {
record Foo {
owner: address,
gates: u64,
amount: u64,
}
record Token {
owner: address,
gates: u64,
foo: Foo,
}
}

View File

@ -7,13 +7,11 @@ program test.aleo {
record Token2 {
owner: address,
gates: u64,
foo: (Foo, Foo),
}
record Foo {
owner: address,
gates: u64,
amount: u64,
}
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token {
owner: address,
gates: u64,
bar: Bar,
}
@ -17,7 +16,6 @@ program test.aleo {
record Foo {
owner: address,
gates: u64,
amount: u64,
}
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token3 {
owner: address,
gates: u64,
bar: (Bar, Bar),
}
@ -16,7 +15,6 @@ program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u64,
}

View File

@ -6,8 +6,6 @@ expectation: Fail
program test.aleo {
// This record does not define the `owner` variable required for a record type.
record Token {
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
// This record does define the `owner` variable but with the wrong type.
record Token {
gates: u64,
owner: bool,
}

View File

@ -7,8 +7,6 @@ program test.aleo {
record Token {
// The token amount.
amount: u64,
// The Aleo balance (in gates).
gates: u64,
// The token owner.
owner: address,
}
@ -16,4 +14,4 @@ program test.aleo {
transition main(a: u8, b:u8) -> u8 {
return a + b;
}
}
}

View File

@ -9,8 +9,6 @@ program test.aleo {
record Token {
// The token owner.
owner: address,
// The Aleo balance (in gates).
gates: u64,
// The token amount.
amount: u64,
}
@ -19,8 +17,7 @@ program test.aleo {
let amount: u64 = a * a;
return Token {
amount,
gates: 0u64,
owner,
};
}
}
}

View File

@ -7,8 +7,6 @@ program test.aleo {
record Token {
// The token amount.
private amount: u64,
// The Aleo balance (in gates).
public gates: u64,
// The token owner.
private owner: address,
// A constant value.

View File

@ -6,15 +6,13 @@ expectation: Fail
program test.aleo {
record test_credits {
owner: address,
gates: u64,
amount: u64
}
transition mint_credits(to: address, amount: u64) {
return test_credits {
owner: self.caller,
gates: 0u64,
amount
};
}
}
}

View File

@ -6,7 +6,6 @@ expectation: Fail
program test.aleo {
record Token {
owner: address,
gates: u64,
amount: u64,
}
@ -17,7 +16,6 @@ program test.aleo {
}
return Token {
owner: owner,
gates: 0u64,
amount: amount,
};
}

Some files were not shown because too many files have changed in this diff Show More