Merge pull request #1932 from AleoHQ/tuple-fixes

Improvements to tuples
This commit is contained in:
Collin Chin 2022-07-18 16:02:33 -07:00 committed by GitHub
commit 8b15fffc1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
149 changed files with 419 additions and 715 deletions

View File

@ -20,7 +20,7 @@ use leo_span::Span;
use serde::{Deserialize, Serialize};
use std::fmt;
/// An tuple access expression, e.g., `tuple.index`.
/// A tuple access expression, e.g., `tuple.index`.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct TupleAccess {
/// An expression evaluating to some tuple type, e.g., `(5, 2)`.

View File

@ -32,6 +32,7 @@ impl PositiveNumber {
self.value.eq("0")
}
/// Converts the positive number into a `usize` or panics if it was malformed.
pub fn to_usize(&self) -> usize {
usize::from_str(&self.value).expect("failed to parse positive number")
}

View File

@ -175,7 +175,7 @@ pub trait StatementReconstructor: ExpressionReconstructor {
fn reconstruct_definition(&mut self, input: DefinitionStatement) -> Statement {
Statement::Definition(DefinitionStatement {
declaration_type: input.declaration_type,
variable_names: input.variable_names.clone(),
variable_name: input.variable_name,
type_: input.type_,
value: self.reconstruct_expression(input.value).0,
span: input.span,

View File

@ -14,15 +14,12 @@
// 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/>.
use crate::{Expression, Node, Type};
use crate::{Expression, Identifier, Node, Type};
use leo_span::Span;
use serde::{Deserialize, Serialize};
use std::fmt;
mod variable_name;
pub use variable_name::*;
mod declaration_type;
pub use declaration_type::*;
@ -32,7 +29,7 @@ pub struct DefinitionStatement {
/// What sort of declaration is this? `let` or `const`?.
pub declaration_type: DeclarationType,
/// The bindings / variable names to declare.
pub variable_names: Vec<VariableName>,
pub variable_name: Identifier,
/// The types of the bindings, if specified, or inferred otherwise.
pub type_: Type,
/// An initializer value for the bindings.
@ -44,21 +41,7 @@ pub struct DefinitionStatement {
impl fmt::Display for DefinitionStatement {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{} ", self.declaration_type)?;
if self.variable_names.len() == 1 {
// mut a
write!(f, "{}", self.variable_names[0])?;
} else {
// (a, mut b)
let names = self
.variable_names
.iter()
.map(|x| x.to_string())
.collect::<Vec<_>>()
.join(",");
write!(f, "({})", names)?;
}
write!(f, "{}", self.variable_name)?;
write!(f, ": {}", self.type_)?;
write!(f, " = {};", self.value)
}

View File

@ -1,40 +0,0 @@
// Copyright (C) 2019-2022 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/>.
use crate::{Identifier, Node};
use leo_span::Span;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct VariableName {
pub mutable: bool,
pub identifier: Identifier,
pub span: Span,
}
impl fmt::Display for VariableName {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
if self.mutable {
write!(f, "mut ")?;
}
write!(f, "{}", self.identifier)
}
}
crate::simple_node_impl!(VariableName);

View File

@ -23,7 +23,7 @@ use std::{fmt, ops::Deref};
/// A type list of at least two types.
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct Tuple(Vec<Type>);
pub struct Tuple(pub Vec<Type>);
impl Tuple {
/// Returns a new `Type::Tuple` enumeration.

View File

@ -87,7 +87,7 @@ impl<'a> ParserContext<'a> {
self.prev_token = mem::replace(&mut self.token, next_token);
}
/// Checks whether the current token is `Token`.
/// Checks whether the current token is `tok`.
pub(super) fn check(&self, tok: &Token) -> bool {
&self.token.token == tok
}
@ -159,10 +159,10 @@ impl<'a> ParserContext<'a> {
/// the next token is not a [`Token::Integer(_)`] or if the next token does not exist.
///
pub fn eat_integer(&mut self) -> Result<(PositiveNumber, Span)> {
let token = self.token.token.clone();
if let Token::Integer(value) = token {
if let Token::Integer(value) = &self.token.token {
let value = value.clone();
self.bump();
Ok((PositiveNumber { value }, self.token.span))
Ok((PositiveNumber { value }, self.prev_token.span))
} else {
Err(ParserError::unexpected(&self.token.token, "integer literal", self.token.span).into())
}

View File

@ -123,7 +123,7 @@ impl ParserContext<'_> {
/// Returns a [`Vec<CircuitMember>`] AST node if the next tokens represent a circuit member variable
/// or circuit member function or circuit member constant.
pub fn parse_circuit_members(&mut self) -> Result<(Vec<CircuitMember>, Span)> {
fn parse_circuit_members(&mut self) -> Result<(Vec<CircuitMember>, Span)> {
let mut members = Vec::new();
let (mut semi_colons, mut commas) = (false, false);
@ -162,21 +162,21 @@ impl ParserContext<'_> {
}
/// Parses `IDENT: TYPE`.
fn parse_member(&mut self) -> Result<(Identifier, Type)> {
pub(super) fn parse_typed_ident(&mut self) -> Result<(Identifier, Type)> {
let name = self.expect_identifier()?;
self.expect(&Token::Colon)?;
let type_ = self.parse_single_type()?.0;
let type_ = self.parse_type()?.0;
Ok((name, type_))
}
/// Returns a [`CircuitMember`] AST node if the next tokens represent a circuit member static constant.
pub fn parse_const_member_variable_declaration(&mut self) -> Result<CircuitMember> {
fn parse_const_member_variable_declaration(&mut self) -> Result<CircuitMember> {
self.expect(&Token::Static)?;
self.expect(&Token::Const)?;
// `IDENT: TYPE = EXPR`:
let (_name, _type_) = self.parse_member()?;
let (_name, _type_) = self.parse_typed_ident()?;
self.expect(&Token::Assign)?;
let expr = self.parse_expression()?;
@ -189,14 +189,14 @@ impl ParserContext<'_> {
}
/// Returns a [`CircuitMember`] AST node if the next tokens represent a circuit member variable.
pub fn parse_member_variable_declaration(&mut self) -> Result<CircuitMember> {
let (name, type_) = self.parse_member()?;
fn parse_member_variable_declaration(&mut self) -> Result<CircuitMember> {
let (name, type_) = self.parse_typed_ident()?;
Ok(CircuitMember::CircuitVariable(name, type_))
}
/// Returns a [`CircuitMember`] AST node if the next tokens represent a circuit member function.
pub fn parse_member_function_declaration(&mut self) -> Result<CircuitMember> {
fn parse_member_function_declaration(&mut self) -> Result<CircuitMember> {
if self.peek_is_function() {
// CAUTION: function members are unstable for testnet3.
let function = self.parse_function()?;
@ -255,10 +255,7 @@ impl ParserContext<'_> {
/// Returns a [`FunctionInput`] AST node if the next tokens represent a function parameter.
fn parse_function_parameter(&mut self) -> Result<FunctionInput> {
let mode = self.parse_function_parameter_mode()?;
let name = self.expect_identifier()?;
self.expect(&Token::Colon)?;
let type_ = self.parse_single_type()?.0;
let (name, type_) = self.parse_typed_ident()?;
Ok(FunctionInput::Variable(FunctionInputVariable::new(
name, mode, type_, name.span,
)))
@ -286,7 +283,7 @@ impl ParserContext<'_> {
// Parse return type.
self.expect(&Token::Arrow)?;
self.disallow_circuit_construction = true;
let output = self.parse_any_type()?.0;
let output = self.parse_type()?.0;
self.disallow_circuit_construction = false;
// Parse the function body.

View File

@ -65,7 +65,7 @@ impl ParserContext<'_> {
let name = self.expect_identifier()?;
self.expect(&Token::Colon)?;
let (type_, span) = self.parse_single_type()?;
let (type_, span) = self.parse_type()?;
self.expect(&Token::Assign)?;
let value = self.parse_unary_expression()?;
self.expect(&Token::Semicolon)?;

View File

@ -103,7 +103,7 @@ impl ParserContext<'_> {
let start_span = self.expect(&Token::For)?;
let ident = self.expect_identifier()?;
self.expect(&Token::Colon)?;
let type_ = self.parse_single_type()?;
let type_ = self.parse_type()?;
self.expect(&Token::In)?;
// Parse iteration range.
@ -188,17 +188,6 @@ impl ParserContext<'_> {
})
}
/// Returns a [`VariableName`] AST node if the next tokens represent a variable name with
/// valid keywords.
fn parse_variable_name(&mut self, decl_ty: DeclarationType, _span: Span) -> Result<VariableName> {
let name = self.expect_identifier()?;
Ok(VariableName {
span: name.span,
mutable: matches!(decl_ty, DeclarationType::Let),
identifier: name,
})
}
/// Returns a [`DefinitionStatement`] AST node if the next tokens represent a definition statement.
pub(super) fn parse_definition_statement(&mut self) -> Result<DefinitionStatement> {
self.expect_any(&[Token::Let, Token::Const])?;
@ -208,34 +197,20 @@ impl ParserContext<'_> {
Token::Const => DeclarationType::Const,
_ => unreachable!("parse_definition_statement_ shouldn't produce this"),
};
// Parse variable names.
let variable_names = if self.peek_is_left_par() {
let vars = self
.parse_paren_comma_list(|p| p.parse_variable_name(decl_type, decl_span).map(Some))
.map(|(vars, ..)| vars)?;
if vars.len() == 1 {
self.emit_err(ParserError::invalid_parens_around_single_variable(vars[0].span()));
}
vars
} else {
vec![self.parse_variable_name(decl_type, decl_span)?]
};
self.expect(&Token::Colon)?;
let type_ = self.parse_any_type()?;
// Parse variable name and type.
let (variable_name, type_) = self.parse_typed_ident()?;
self.expect(&Token::Assign)?;
let expr = self.parse_expression()?;
let value = self.parse_expression()?;
self.expect(&Token::Semicolon)?;
Ok(DefinitionStatement {
span: decl_span + expr.span(),
span: decl_span + value.span(),
declaration_type: decl_type,
variable_names,
type_: type_.0,
value: expr,
variable_name,
type_,
value,
})
}
}

View File

@ -65,30 +65,19 @@ impl ParserContext<'_> {
/// Returns a [`(Type, Span)`] tuple of AST nodes if the next token represents a type.
/// Also returns the span of the parsed token.
pub fn parse_single_type(&mut self) -> Result<(Type, Span)> {
Ok(if let Some(ident) = self.eat_identifier() {
let span = ident.span;
(Type::Identifier(ident), span)
} else {
self.parse_primitive_type()?
})
}
/// Returns a [`(Type, Span)`] where `Type` is a `Type::Tuple` AST node.
pub fn parse_tuple_type(&mut self) -> Result<(Type, Span)> {
// todo: catch and return error for nested tuple type.
let (types, _, span) = self.parse_paren_comma_list(|p| p.parse_single_type().map(Some))?;
let elements = types.into_iter().map(|(type_, _)| type_).collect::<Vec<_>>();
Ok((Tuple::try_new(elements, span)?, span))
}
/// Returns a [`(Type, Span)`] where `Type` is a tuple or single type.
pub fn parse_any_type(&mut self) -> Result<(Type, Span)> {
if self.peek_is_left_par() {
pub fn parse_type(&mut self) -> Result<(Type, Span)> {
if let Some(ident) = self.eat_identifier() {
Ok((Type::Identifier(ident), ident.span))
} else if self.peek_is_left_par() {
self.parse_tuple_type()
} else {
self.parse_single_type()
self.parse_primitive_type()
}
}
/// Parses a type of form `(ty_0, ty_1, ...)`.
fn parse_tuple_type(&mut self) -> Result<(Type, Span)> {
let (types, _, span) = self.parse_paren_comma_list(|p| p.parse_type().map(|(ty, _)| ty).map(Some))?;
Ok((Tuple::try_new(types, span)?, span))
}
}

View File

@ -56,16 +56,9 @@ impl<'a> CodeGenerator<'a> {
fn visit_definition(&mut self, input: &'a DefinitionStatement) -> String {
// Note: `DefinitionStatement`s should not exist in SSA form. However, for the purposes of this
// prototype, we will need to support them.
match input.variable_names.len() == 1 {
// TODO: Is this a valid assumption?
false => unreachable!("DefinitionStatements should contain only one variable once put into SSA form"),
true => {
let (operand, expression_instructions) = self.visit_expression(&input.value);
self.variable_mapping
.insert(&input.variable_names[0].identifier.name, operand);
expression_instructions
}
}
let (operand, expression_instructions) = self.visit_expression(&input.value);
self.variable_mapping.insert(&input.variable_name.name, operand);
expression_instructions
}
fn visit_assign(&mut self, _input: &'a AssignStatement) -> String {

View File

@ -29,18 +29,16 @@ impl StatementReconstructor for Unroller<'_> {
VariableType::Mut
};
input.variable_names.iter().for_each(|v| {
if let Err(err) = self.symbol_table.borrow_mut().insert_variable(
v.identifier.name,
VariableSymbol {
type_: input.type_.clone(),
span: input.span(),
declaration: declaration.clone(),
},
) {
self.handler.emit_err(err);
}
});
if let Err(err) = self.symbol_table.borrow_mut().insert_variable(
input.variable_name.name,
VariableSymbol {
type_: input.type_.clone(),
span: input.span(),
declaration,
},
) {
self.handler.emit_err(err);
}
}
Statement::Definition(input)
}

View File

@ -16,7 +16,7 @@
use leo_ast::{
Block, DeclarationType, DefinitionStatement, Expression, IterationStatement, Literal, Statement,
StatementReconstructor, Type, Value, VariableName,
StatementReconstructor, Type, Value,
};
use std::cell::RefCell;
@ -170,11 +170,7 @@ impl<'a> Unroller<'a> {
type_: input.type_.clone(),
value: Expression::Literal(value),
span: Default::default(),
variable_names: vec![VariableName {
mutable: false,
identifier: input.variable,
span: Default::default(),
}],
variable_name: input.variable,
})];
// Reconstruct the statements in the loop body.

View File

@ -36,6 +36,7 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
input.input.iter().for_each(|i| {
let input_var = i.get_variable();
self.check_core_type_conflict(&Some(input_var.type_.clone()));
self.assert_not_tuple(input_var.span, &input_var.type_);
// Check for conflicting variable names.
if let Err(err) = self.symbol_table.borrow_mut().insert_variable(
@ -55,6 +56,13 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
self.emit_err(TypeCheckerError::function_has_no_return(input.name(), input.span()));
}
// Ensure there are no nested tuples in the return type.
if let Type::Tuple(tys) = &input.output {
for ty in &tys.0 {
self.assert_not_tuple(input.span, ty);
}
}
let prev_st = *self.symbol_table.borrow_mut().parent.take().unwrap();
self.symbol_table.swap(prev_st.lookup_fn_scope(input.name()).unwrap());
self.symbol_table = RefCell::new(prev_st);
@ -97,5 +105,10 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
check_has_field(sym::owner, Type::Address);
check_has_field(sym::gates, Type::U64);
}
// Ensure there are no tuple typed members.
for CircuitMember::CircuitVariable(v, type_) in input.members.iter() {
self.assert_not_tuple(v.span, type_);
}
}
}

View File

@ -45,22 +45,20 @@ impl<'a> StatementVisitor<'a> for TypeChecker<'a> {
VariableType::Mut
};
input.variable_names.iter().for_each(|v| {
self.check_core_type_conflict(&Some(input.type_.clone()));
self.check_core_type_conflict(&Some(input.type_.clone()));
self.visit_expression(&input.value, &Some(input.type_.clone()));
self.visit_expression(&input.value, &Some(input.type_.clone()));
if let Err(err) = self.symbol_table.borrow_mut().insert_variable(
v.identifier.name,
VariableSymbol {
type_: input.type_.clone(),
span: input.span(),
declaration: declaration.clone(),
},
) {
self.handler.emit_err(err);
}
});
if let Err(err) = self.symbol_table.borrow_mut().insert_variable(
input.variable_name.name,
VariableSymbol {
type_: input.type_.clone(),
span: input.span(),
declaration,
},
) {
self.handler.emit_err(err);
}
}
fn visit_assign(&mut self, input: &'a AssignStatement) {

View File

@ -319,6 +319,13 @@ impl<'a> TypeChecker<'a> {
}
}
}
/// Emits an error if the type is a tuple.
pub(crate) fn assert_not_tuple(&self, span: Span, type_: &Type) {
if matches!(type_, Type::Tuple(_)) {
self.emit_err(TypeCheckerError::tuple_not_allowed(span))
}
}
}
fn types_to_string(types: &[Type]) -> String {

View File

@ -303,15 +303,7 @@ create_messages!(
help: None,
}
/// For when a user puts parens around a single defined variable.
@formatted
invalid_parens_around_single_variable {
args: (),
msg: "do not put parens around single variable names",
help: None,
}
/// For when a user puts parens around a single defined variable.
/// For when a user puts parens around a single array dimension.
@formatted
invalid_parens_around_single_array_dimension_size {
args: (),

View File

@ -312,4 +312,11 @@ create_messages!(
msg: format!("Tuple index `{index}` out of range for a tuple with length `{length}`"),
help: None,
}
@formatted
tuple_not_allowed {
args: (),
msg: format!("Tuples are only allowed as function return types."),
help: None,
}
);

View File

@ -0,0 +1,25 @@
/*
namespace: Compile
expectation: Fail
*/
function main() -> u8 {
return 1u8;
}
function foo(a: (u8, u16)) -> (u8, u16) {
return (1u8, 2u16);
}
function bar() -> (u8, (u16, u32)) {
return (1u8, (2u16, 3u32));
}
function baz() -> u8 {
for i: (u8, u16) in 0u8..2u8 {}
return 0u8;
}
circuit A {
mem: (u8, u16)
}

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: fe880c907d0257c9fc8314b8b98cabd8a8282b587d2d618408cc3cd8e528fda5
initial_ast: 996cad7b93bbb652c713081c7ce8d2474ff8f4c36a07af754bb0aad7071f29b2
unrolled_ast: 996cad7b93bbb652c713081c7ce8d2474ff8f4c36a07af754bb0aad7071f29b2
initial_ast: 3c29b1703692d5095c7d346a8597e7bc96ab6b272d344d4873359aec19a90238
unrolled_ast: 3c29b1703692d5095c7d346a8597e7bc96ab6b272d344d4873359aec19a90238

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 00f5aba05e4efae5a125eb52f02f16400132085b8a34919d910aa40c6c405a22
initial_ast: 4bad6e13408592021cfde9c7053e3111cbd23bc62f6c75dc7bc9e26cf22cde8c
unrolled_ast: 4bad6e13408592021cfde9c7053e3111cbd23bc62f6c75dc7bc9e26cf22cde8c
initial_ast: 90154a6a01ee247ee0336cb3abcced38a628a9918e0554127dfe5ca7caa34dc7
unrolled_ast: 90154a6a01ee247ee0336cb3abcced38a628a9918e0554127dfe5ca7caa34dc7

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 03e9df3bd1409f4af9e2a7f55130bc52f27d41f32a624ffa27f0ab114bf6fbf4
initial_ast: 494c4c6b3f2301e6cf95f51c0f25788fed9e5ed739f325442abb91a7e0a07479
unrolled_ast: 494c4c6b3f2301e6cf95f51c0f25788fed9e5ed739f325442abb91a7e0a07479
initial_ast: e0fde99efa3e6ec987044326b17bc96d16379992b2a30585ed85878285fb761c
unrolled_ast: e0fde99efa3e6ec987044326b17bc96d16379992b2a30585ed85878285fb761c

View File

@ -5,5 +5,5 @@ outputs:
- output:
- initial_input_ast: ec3cfeb93ea66a530150a5c5e2bd396688b3ef9b9fb0bcb961c62dac4daa064e
- initial_input_ast: cb1d48114c10b2b732ad47a46fc8d05bf7a3e783da89e7f00065244bfc8d15c8
initial_ast: e91c495b93b52509cdb008dbb9fef3d0baf1438be7505285ce53ba32af5271dc
unrolled_ast: e91c495b93b52509cdb008dbb9fef3d0baf1438be7505285ce53ba32af5271dc
initial_ast: d36a542762bed92ce775751e99f5e47dbbc9014a0d4d00deb0fa8abb7af7f2e7
unrolled_ast: d36a542762bed92ce775751e99f5e47dbbc9014a0d4d00deb0fa8abb7af7f2e7

View File

@ -7,5 +7,5 @@ outputs:
- initial_input_ast: 3254bbbc78ad3eec1c6667ade0b3d3da5ee17c7e569118cc1c771ba607e79ab0
- initial_input_ast: 19f1be52a19445695f23724e1979b362dd3fcf31aace997c829e2206dc1cccbe
- initial_input_ast: d2fc1992beaf062678bbf6c3e862820dbbea39926589afcdc46c19c8669f0e37
initial_ast: 108d88ba3cf24132b4d3c837cff16834aaeaaddc296ce85fd116b75eee51fc8b
unrolled_ast: 108d88ba3cf24132b4d3c837cff16834aaeaaddc296ce85fd116b75eee51fc8b
initial_ast: be62eafa579fa7e239f5c9cd91bfea1e072b3db6192ff9a1c29be78dd9faf680
unrolled_ast: be62eafa579fa7e239f5c9cd91bfea1e072b3db6192ff9a1c29be78dd9faf680

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: f1af7e79dff9ede0d2a1c88d5d22801cb3dfe3a9fb34e93bca646e29a61e9f65
initial_ast: 0d1943f75169de8cb57944e500b0f1d1a1a5611bd18bf26718542087f26edc0f
unrolled_ast: 0d1943f75169de8cb57944e500b0f1d1a1a5611bd18bf26718542087f26edc0f
initial_ast: 7d8c6817927782cd181a5a3429f72139b452ec511ec5352dfe27b98a3b7b5955
unrolled_ast: 7d8c6817927782cd181a5a3429f72139b452ec511ec5352dfe27b98a3b7b5955

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 49b0fa702fc5eef216b5852ab6d15103c2007c285f8e4c816ad34174341ba033
unrolled_ast: 49b0fa702fc5eef216b5852ab6d15103c2007c285f8e4c816ad34174341ba033
initial_ast: d1b4db4f3be418df4f8b42d12e90491aa6fa4f68f07a3b0ac3b4ef6eb8091b17
unrolled_ast: d1b4db4f3be418df4f8b42d12e90491aa6fa4f68f07a3b0ac3b4ef6eb8091b17

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 29f6139d908d390f890f04d8ee620757d29b7f71cd48c46ff65bc1e70aae840c
initial_ast: 4aa8927cbdb480bca202261e8213f99d7f20a2c2984996dd6fcac770d2774f5d
unrolled_ast: 4aa8927cbdb480bca202261e8213f99d7f20a2c2984996dd6fcac770d2774f5d
initial_ast: 930940759647baf7f6c4764b33bf6653fb3971ccdd5362466babf392788062bf
unrolled_ast: 930940759647baf7f6c4764b33bf6653fb3971ccdd5362466babf392788062bf

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: c82482109b2b5c7186d74b1f6a71aff3e0a5b1c5262b8a78c44fa62a9c9f0793
unrolled_ast: c82482109b2b5c7186d74b1f6a71aff3e0a5b1c5262b8a78c44fa62a9c9f0793
initial_ast: 8e1298749b5e6da6a3dcd789ad5a3a102952a00d88c38d4a693616679ef6d8d6
unrolled_ast: 8e1298749b5e6da6a3dcd789ad5a3a102952a00d88c38d4a693616679ef6d8d6

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 56a17552b6c128ee9673d45adc754753d762990f121e9bd0376496beecb3eabf
unrolled_ast: 56a17552b6c128ee9673d45adc754753d762990f121e9bd0376496beecb3eabf
initial_ast: e72f4854cb2c9ea3063fee92b826df43185c6a7a0a33f4fe6d24adc0c3dd8367
unrolled_ast: e72f4854cb2c9ea3063fee92b826df43185c6a7a0a33f4fe6d24adc0c3dd8367

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 8882395c16e9800e80deebecb06005952b99a88723eee04e9bf1f4ee5d42bf1c
unrolled_ast: 8882395c16e9800e80deebecb06005952b99a88723eee04e9bf1f4ee5d42bf1c
initial_ast: 76aa1559acd72ebe4cf473f29efb52b9196776dd8bf19e1eb936f86eae7c26ed
unrolled_ast: 76aa1559acd72ebe4cf473f29efb52b9196776dd8bf19e1eb936f86eae7c26ed

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 3a510480221eb323713b4b10cc374ba357f130e8ac2b07bf1c69ad5d8c936f12
initial_ast: 8bd0eddab31639bbf9b59055aabaaac96f6b4ecf0cfb9237dfaa7cb8029c6bad
unrolled_ast: 8bd0eddab31639bbf9b59055aabaaac96f6b4ecf0cfb9237dfaa7cb8029c6bad
initial_ast: 103c76ecc5358ae585e4cea32287890acfafc3fcbe53e5c6326b5750eafedbe7
unrolled_ast: 103c76ecc5358ae585e4cea32287890acfafc3fcbe53e5c6326b5750eafedbe7

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 047866515f4dc74cd9966242734984b53e72f87afc21f7171b118e6defa1f166
initial_ast: 258b60821103350d8e3247c0b4ab8804bae030a7906d4a88ac99e6d45b5245c7
unrolled_ast: 258b60821103350d8e3247c0b4ab8804bae030a7906d4a88ac99e6d45b5245c7
initial_ast: 17aa90c54b70219cdff169e7ed82be28aea9c01dc2067908326c1fa384b83a0a
unrolled_ast: 17aa90c54b70219cdff169e7ed82be28aea9c01dc2067908326c1fa384b83a0a

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 5e0a61d909d2e94dfbc95775e4c5c356adb61375ceef2d583a5ab927b3b6342e
initial_ast: f0ecb5dc7f27c72f38e0822af08476c24981fd6aed3a17e3588753c7a5f8e2fa
unrolled_ast: f0ecb5dc7f27c72f38e0822af08476c24981fd6aed3a17e3588753c7a5f8e2fa
initial_ast: f5bdcda30d93281577f0a33daf097e79dd014e0e4bd4cbddfa48ff5f03d2bfd6
unrolled_ast: f5bdcda30d93281577f0a33daf097e79dd014e0e4bd4cbddfa48ff5f03d2bfd6

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 20c78fdc1aa61aab7198367aa6618923dca3acf5d2a4abaf1724786fb156234b
initial_ast: 65e331213ebc81e4a8db15f62396000aef025bc21f34723887037e7814ec12f7
unrolled_ast: eab4690376f15faa63bac593f9a9cb2405021db2ae9c5cd61c4ce6245347a451
initial_ast: 407db22dfe3948bf184ac69c411a5c36013de6c26a57249eb86976d5ff67e711
unrolled_ast: 7d7fa7866e30ad3239889b312fddf3605ad108c982b88f57eb0735df678d56df

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: ab4d5c5684c7eac16c0eef269b050be81f9b5af82e541d9bc43b1da5f2dfce33
initial_ast: af3e8506e2267f6c88b43589a7ab8e4d94444be0e3f5780231e05be360be55c6
unrolled_ast: 4d58d47b6a6208107daf7151c5165377d37a94add78e407788e8563671eead07
initial_ast: 1d5f753676d2482f2b90736dee972528b5e48c8e1455f60cc56fd99f2ba4bef4
unrolled_ast: d8777c1e1c37dac0af3672f7fe4e52278c9544b26812131bfa18634b07fde06e

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 9af772ba2f200de34252f1d0306b9dd5d028f5019ff940be9c3624c4c78e1518
initial_ast: 2e9336522825840daf82b99d91d4634aba2678e4f98d136a1a0121c51b2e5999
unrolled_ast: 2e9336522825840daf82b99d91d4634aba2678e4f98d136a1a0121c51b2e5999
initial_ast: 1a150cbe9adfca148c28fe63a7c9cb069765df53cd76c09c1ac9a9fb62f106c3
unrolled_ast: 1a150cbe9adfca148c28fe63a7c9cb069765df53cd76c09c1ac9a9fb62f106c3

View File

@ -2,4 +2,4 @@
namespace: Compile
expectation: Fail
outputs:
- "Error [EPAR0370040]: Expression statements are not supported.\n --> compiler-test:4:5\n |\n 4 | my_function();\n | ^^^^^^^^^^^^^^"
- "Error [EPAR0370039]: Expression statements are not supported.\n --> compiler-test:4:5\n |\n 4 | my_function();\n | ^^^^^^^^^^^^^^"

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 6a32094f12cc52922f026312670190a793a549a5fa1f33b86357826505737677
unrolled_ast: 6a32094f12cc52922f026312670190a793a549a5fa1f33b86357826505737677
initial_ast: 6a4eb74c21f558af5535a98ec6ce7ef851896476f7dfb6ae8385b9a0cb865973
unrolled_ast: 6a4eb74c21f558af5535a98ec6ce7ef851896476f7dfb6ae8385b9a0cb865973

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: ec25234e7830d5dc5e78ece4cb625478fb91d15dda627a6f0f32ab85a2c12244
unrolled_ast: ec25234e7830d5dc5e78ece4cb625478fb91d15dda627a6f0f32ab85a2c12244
initial_ast: 88c6a9385764de1df4430489aec43d7eb2563886fa65239ca068793d611a737d
unrolled_ast: 88c6a9385764de1df4430489aec43d7eb2563886fa65239ca068793d611a737d

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 45eba143ed60c3504606b1d63c9b222b3680ea90431aebdd74fbcc9e7eae0ed2
unrolled_ast: 45eba143ed60c3504606b1d63c9b222b3680ea90431aebdd74fbcc9e7eae0ed2
initial_ast: 8e7932b4bd7ef496bdec3763e81a8e09908c212db21c89e1e0c966e82574fac9
unrolled_ast: 8e7932b4bd7ef496bdec3763e81a8e09908c212db21c89e1e0c966e82574fac9

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 201ffacb298e0bcf45934c7a3691cf9c0390e16cb26677f695d497555359b1e9
unrolled_ast: 201ffacb298e0bcf45934c7a3691cf9c0390e16cb26677f695d497555359b1e9
initial_ast: c834a4d1f5aecdef55a47337945ef657e297f539f5db59f1d40eef343306e7fd
unrolled_ast: c834a4d1f5aecdef55a47337945ef657e297f539f5db59f1d40eef343306e7fd

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: a60503e3f83fbee658d02fb3806b3a3326fc6d4f4e43ac05bce7b16ac0552edb
initial_ast: d94d68376f1f45ec2e63b49e01939c95625f6db92f2a7ca9210c0bf2bd22a0ae
unrolled_ast: d94d68376f1f45ec2e63b49e01939c95625f6db92f2a7ca9210c0bf2bd22a0ae
initial_ast: 7ffab494280736953e34589589b16b26cead38323b223ae95ef7199fa7a48e04
unrolled_ast: 7ffab494280736953e34589589b16b26cead38323b223ae95ef7199fa7a48e04

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 7cb90e649202bf8b76da1a6d4eaf65b55d6872aa372ad3cbc72fd6224f9378c0
unrolled_ast: 7cb90e649202bf8b76da1a6d4eaf65b55d6872aa372ad3cbc72fd6224f9378c0
initial_ast: c77551885b3f06f2ec5db73868feb8fd7521c4c2c57bbf95c367e56cd93ab991
unrolled_ast: c77551885b3f06f2ec5db73868feb8fd7521c4c2c57bbf95c367e56cd93ab991

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: adb2ec4ebdcef7f0602644d8a81ea57dbeaeec9e67a0b91fc2dec3052ff29d6c
unrolled_ast: adb2ec4ebdcef7f0602644d8a81ea57dbeaeec9e67a0b91fc2dec3052ff29d6c
initial_ast: 72dd086a27dd223b377616799a8b5f47a71e017ca28747ae671e17caf14f8e69
unrolled_ast: 72dd086a27dd223b377616799a8b5f47a71e017ca28747ae671e17caf14f8e69

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: d12e492b73a208051457ad2ce9ed8dbbb5a8096f32f52d697c41972ba8b88d35
initial_ast: 30580664411bf43d964ec10dba049e94d4a99100822658c90c5558cb2e447635
unrolled_ast: 30580664411bf43d964ec10dba049e94d4a99100822658c90c5558cb2e447635
initial_ast: fd9ea0e771a68f031e301d5b106341c3292dfa37572b83b917fb75676c55ab98
unrolled_ast: fd9ea0e771a68f031e301d5b106341c3292dfa37572b83b917fb75676c55ab98

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 76d2092acc0e16f777d8b00394a135d6542a02223f429c95a73fabf0ac857b44
unrolled_ast: 76d2092acc0e16f777d8b00394a135d6542a02223f429c95a73fabf0ac857b44
initial_ast: 8bbb4a56d86d6180a6d335bfcc622ebba88f413907c2eb39e93ef5b6597609d4
unrolled_ast: 8bbb4a56d86d6180a6d335bfcc622ebba88f413907c2eb39e93ef5b6597609d4

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 5935d41219c0dba10f8f198e4c7cfde47e03048f96060be76fb19454a6ef9ba3
unrolled_ast: 5935d41219c0dba10f8f198e4c7cfde47e03048f96060be76fb19454a6ef9ba3
initial_ast: d81b26d3c0174fb20bd498c956af3c4f20efca37c817bd06e8ce6bd02f7ad5c3
unrolled_ast: d81b26d3c0174fb20bd498c956af3c4f20efca37c817bd06e8ce6bd02f7ad5c3

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: c8d91dd9881a090aa6ab818f38eeb934026ef816388de39027552f5ae5ee7e95
unrolled_ast: c8d91dd9881a090aa6ab818f38eeb934026ef816388de39027552f5ae5ee7e95
initial_ast: 68f706452fc9304afe6345986e427b65d6df41157750241d2693a8c0edd24add
unrolled_ast: 68f706452fc9304afe6345986e427b65d6df41157750241d2693a8c0edd24add

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 4e82320b41be116307d49ed1a0ece7618a9f836ab0d57123a26895cefff38735
unrolled_ast: 4e82320b41be116307d49ed1a0ece7618a9f836ab0d57123a26895cefff38735
initial_ast: 43d64ea2b989308c0fb65af569584f70dde0ffba12966885c7dc3025f9fbc5d2
unrolled_ast: 43d64ea2b989308c0fb65af569584f70dde0ffba12966885c7dc3025f9fbc5d2

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: ffc337064b0cbe090ecd5bdec3880068fef557eaddc3a2703b40aafcbb0fb698
unrolled_ast: ffc337064b0cbe090ecd5bdec3880068fef557eaddc3a2703b40aafcbb0fb698
initial_ast: 7fc9bd0e110f629f957d5deeca1a1586e197c883aac5211c741944c1229943f6
unrolled_ast: 7fc9bd0e110f629f957d5deeca1a1586e197c883aac5211c741944c1229943f6

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 74cbe741c1a08b84899483312b27ce1c4c80885fbff1ede494cc83b63420d0ca
unrolled_ast: 74cbe741c1a08b84899483312b27ce1c4c80885fbff1ede494cc83b63420d0ca
initial_ast: 042a092947df5736285b242eac235d558237d3ead82a163a11db9c078f6cefaa
unrolled_ast: 042a092947df5736285b242eac235d558237d3ead82a163a11db9c078f6cefaa

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 35b338a6f0301d5e14552b3ff25be131599b7792d9c744f6bf1f8ca244ad4713
unrolled_ast: 35b338a6f0301d5e14552b3ff25be131599b7792d9c744f6bf1f8ca244ad4713
initial_ast: e9f0202a1f7177791abab18c4b675b377c8b6c937447e264921ded60f9f3bdd8
unrolled_ast: e9f0202a1f7177791abab18c4b675b377c8b6c937447e264921ded60f9f3bdd8

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: no input
initial_ast: 4495b5b4758b86822e7d0487b46d7fb59543c3ca827441249ca260e74f49b8e0
unrolled_ast: 4495b5b4758b86822e7d0487b46d7fb59543c3ca827441249ca260e74f49b8e0
initial_ast: 1563a60bff892a9e6e94548ae3f805baaa8eab13b8e3fb45d9609c3d8cd32f6b
unrolled_ast: 1563a60bff892a9e6e94548ae3f805baaa8eab13b8e3fb45d9609c3d8cd32f6b

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 809c4e4298aa9ee1320cb7b491bc3dc81deb71a691cdc7add970e2c2bf5f47b5
initial_ast: c89640e4f4e8d3fa043664fe8292f6cfa69df69e6bc49fe09e22502acc7f4f17
unrolled_ast: c89640e4f4e8d3fa043664fe8292f6cfa69df69e6bc49fe09e22502acc7f4f17
initial_ast: e3402b36581c371ef4eb1faad35ffd2fcafae3cb1e1e4b3b0802b5e8d7a241c4
unrolled_ast: e3402b36581c371ef4eb1faad35ffd2fcafae3cb1e1e4b3b0802b5e8d7a241c4

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: a2ab6a89c5952a113fbecdeb630917b4699c38dcda5971528ab35cdd5e92c216
initial_ast: 738114f3246c6c0ff348956eb3f1410faaab7f73b8bc6f4d61b94dc5a2b49121
unrolled_ast: 738114f3246c6c0ff348956eb3f1410faaab7f73b8bc6f4d61b94dc5a2b49121
initial_ast: ec3d0ced39b370a9595596ec59a6ae3d3712481ba53fd214288f117b1a481ff1
unrolled_ast: ec3d0ced39b370a9595596ec59a6ae3d3712481ba53fd214288f117b1a481ff1

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 1480b753150538db3f133e6491506ee264d39be8d1c0dab484cd81a20f24cdd8
initial_ast: 7f12b6866108a8763edf7daa1c016deba46c266a24bda234c0e35cfe94e250c5
unrolled_ast: 7f12b6866108a8763edf7daa1c016deba46c266a24bda234c0e35cfe94e250c5
initial_ast: 0089d54e9ec33e1b7a536b8caf7bc9d3bab193bc5db3e038feb1781e742319fc
unrolled_ast: 0089d54e9ec33e1b7a536b8caf7bc9d3bab193bc5db3e038feb1781e742319fc

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: d2117e2d504b1c95edd7f81c2fb111787aba0b797e0f076fbb473971dc0d3639
initial_ast: e34627f68e2cb02d7acf5e68a533243b5372c914a27594fba657497e484c591a
unrolled_ast: e34627f68e2cb02d7acf5e68a533243b5372c914a27594fba657497e484c591a
initial_ast: 4bcc21c63dd4e221fe1728920e1944622a234c30c7165d8c20901e8e2fd73230
unrolled_ast: 4bcc21c63dd4e221fe1728920e1944622a234c30c7165d8c20901e8e2fd73230

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 34fcde78f661247ade77dd607c349139ab960d39b6a5e10efb7102e0f52aa9de
initial_ast: 39ea1257acfd6cd086c5fe8f425c81c1ed9863d43ffc6b460b1acd8450540c4d
unrolled_ast: 39ea1257acfd6cd086c5fe8f425c81c1ed9863d43ffc6b460b1acd8450540c4d
initial_ast: a974ab1860610a177907db49bce47c81e0cf0a60b0de9722c2028966129ab4df
unrolled_ast: a974ab1860610a177907db49bce47c81e0cf0a60b0de9722c2028966129ab4df

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 01980590e6fa50034c226d4672bcd6d6a7f25b20dea3d696750947803335f586
initial_ast: bf1bb4b642f373d556905c3dddcccc6feb4a550834058190ce95d1c1fd2ae5fd
unrolled_ast: bf1bb4b642f373d556905c3dddcccc6feb4a550834058190ce95d1c1fd2ae5fd
initial_ast: df6b7725846462fc46d5e1fa49cf9f9dd3f423096e4e7a09c96808f0fb2f670e
unrolled_ast: df6b7725846462fc46d5e1fa49cf9f9dd3f423096e4e7a09c96808f0fb2f670e

View File

@ -5,5 +5,5 @@ outputs:
- output:
- initial_input_ast: 138ca535c4fd8ce9f1da98e1c1faa03eb5ebd2b1ca026e36c55e78a5da92b97b
- initial_input_ast: 920e39624bf39cb7915596796f56d41f21fdac239f7d059d65a35a50d88547cc
initial_ast: 288f4359019b8858fcd6414b08844924995242cdd8981d6246551c2729a05abb
unrolled_ast: 288f4359019b8858fcd6414b08844924995242cdd8981d6246551c2729a05abb
initial_ast: 9eef18af4f529c5ed51846ef97eae979cd8bf9b5bfa50964421527c0b4374a2f
unrolled_ast: 9eef18af4f529c5ed51846ef97eae979cd8bf9b5bfa50964421527c0b4374a2f

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 1fc4c14c2b4a2f91035315a0cb5fce983e1c75edea3c21e33abfc3a088cff990
initial_ast: 384abd1c935a6255af4bbdc0c8fcbb509d59b337cfd41ab0cc6cdd6ecabe8ce4
unrolled_ast: 384abd1c935a6255af4bbdc0c8fcbb509d59b337cfd41ab0cc6cdd6ecabe8ce4
initial_ast: d00a195ec3c91c325afa6a4b5fff26df45d7c2d8b2be5a89ac8869f99fa1d7ac
unrolled_ast: d00a195ec3c91c325afa6a4b5fff26df45d7c2d8b2be5a89ac8869f99fa1d7ac

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 940d740ba40284a1d3c3cf8737facd1e98968224dd93999dbcb336cb3f4ce571
initial_ast: db098a6ebaadcb8bdc3b191d8e4c0c05823332a9ed29b979d8508353b70ac378
unrolled_ast: db098a6ebaadcb8bdc3b191d8e4c0c05823332a9ed29b979d8508353b70ac378
initial_ast: 0acd5164450d34466a2e3db41a61dce22bd8ac3a547e85b4a981dc503a394e77
unrolled_ast: 0acd5164450d34466a2e3db41a61dce22bd8ac3a547e85b4a981dc503a394e77

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 142f86218cc646677bedd5bdf510ff537782d7e60967de7ebe9fb1fb50d7026d
initial_ast: e012e535485f1867bbd5779677cea5a55cdebcf886e7c4abf3b2b2494e983328
unrolled_ast: e012e535485f1867bbd5779677cea5a55cdebcf886e7c4abf3b2b2494e983328
initial_ast: 0b110a1182da1713f4d1ccf2149e62ed4e2bf5879283fb001d869412a3afd31d
unrolled_ast: 0b110a1182da1713f4d1ccf2149e62ed4e2bf5879283fb001d869412a3afd31d

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 7643261a1792f68251258ad1b6be18e95528a86816b3772140d130b2784736cb
initial_ast: 283876ea77d72b83f3938f9e064c814bc274a1d6053bf84df16ecab9169a162e
unrolled_ast: 283876ea77d72b83f3938f9e064c814bc274a1d6053bf84df16ecab9169a162e
initial_ast: c335c6a17b17a588b88276813d1faa2ceb732c65ab884092450bdbaa0fb962c3
unrolled_ast: c335c6a17b17a588b88276813d1faa2ceb732c65ab884092450bdbaa0fb962c3

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 76a0fe2199754831329d9b089d2c02f73d7457aaed6548372169318675b85f48
initial_ast: ba4cc97765402e17910c0b6e1636e200ac1558e41242d905c20313019311b92b
unrolled_ast: ba4cc97765402e17910c0b6e1636e200ac1558e41242d905c20313019311b92b
initial_ast: baef8132f0487ff5312839b9e8424ecfa3b5983f79f7f47d83110dfdbcb4eafb
unrolled_ast: baef8132f0487ff5312839b9e8424ecfa3b5983f79f7f47d83110dfdbcb4eafb

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: b0770aff98c17e17fb47ce2269ab3fe89208374c8f786f02c0747c71e24bd362
initial_ast: 9201679c22a719497552d854b9de14cd9bfddf3795c62e1b707b82b2cca431ad
unrolled_ast: 9201679c22a719497552d854b9de14cd9bfddf3795c62e1b707b82b2cca431ad
initial_ast: 51a934344e22115c167fdac6bb7bc566a82e27f5b7c30007e451d8c0ddeeb9f6
unrolled_ast: 51a934344e22115c167fdac6bb7bc566a82e27f5b7c30007e451d8c0ddeeb9f6

View File

@ -5,5 +5,5 @@ outputs:
- output:
- initial_input_ast: a66197c1472ce09aa4da1fac2723d57d6d4b6fb8082339aa69ff12a3c4b2a43e
- initial_input_ast: 530b07c6c47bea42f2e00c08bcdd4fd953faa8903b7104f27ca86058d4bb139f
initial_ast: 1574bcc57e819f7a8f1257cfcf63bd6364e6d284abbff921ecca31778a265a83
unrolled_ast: 1574bcc57e819f7a8f1257cfcf63bd6364e6d284abbff921ecca31778a265a83
initial_ast: 07b46ed578aab200ca54a53fb8b6a1e5f1f054a38f561b337ea3868df3343362
unrolled_ast: 07b46ed578aab200ca54a53fb8b6a1e5f1f054a38f561b337ea3868df3343362

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 5a123b22fda20783fdb0f82c51bc23cd043f0f13a0deb2185eb493cc80499d8f
initial_ast: eb5b4c7a2ce86c8aab497cf593ed940985aac32d91f06eb573709c09ca3d09d9
unrolled_ast: eb5b4c7a2ce86c8aab497cf593ed940985aac32d91f06eb573709c09ca3d09d9
initial_ast: df2f48323f91867bfd7847bd3d7a5dc852dfde7f0ad1926cdf8c6130e0458eca
unrolled_ast: df2f48323f91867bfd7847bd3d7a5dc852dfde7f0ad1926cdf8c6130e0458eca

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 76a0fe2199754831329d9b089d2c02f73d7457aaed6548372169318675b85f48
initial_ast: 89c992e5ac4c4c31375c5e40971b967d822ba2a08b0d53d3cae4c17ec9ecf29a
unrolled_ast: 89c992e5ac4c4c31375c5e40971b967d822ba2a08b0d53d3cae4c17ec9ecf29a
initial_ast: c33a836056b5287d88ca8bb9ea7b07fae2c002d2ec46f1816c608a62d932f2ec
unrolled_ast: c33a836056b5287d88ca8bb9ea7b07fae2c002d2ec46f1816c608a62d932f2ec

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: e6e80b1d0e3a62b708072dee54289625035fb2a2ad6f2128a4688166e1f2c830
initial_ast: 1532e417d57f1516dca968736ed9b8ac7e93848221295a172863d1be1d2a80ca
unrolled_ast: 1532e417d57f1516dca968736ed9b8ac7e93848221295a172863d1be1d2a80ca
initial_ast: 4863675cd980adeb4c394765c8dd0011a0af7970a8172fbdd0eac19dd0cb5721
unrolled_ast: 4863675cd980adeb4c394765c8dd0011a0af7970a8172fbdd0eac19dd0cb5721

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: bdf7f8a6f92b7acd8c798becc30b2f6a8cf6b0ed714c168c5a9e5559988b2185
initial_ast: d3fa8e6c510151e24841080b430e94d375837c6b1bac4134c4043e239f00484e
unrolled_ast: d3fa8e6c510151e24841080b430e94d375837c6b1bac4134c4043e239f00484e
initial_ast: c694b0e7b0e62b1a6d09208b036f36e3f9e7190878e93e4c12da50f7aafff48a
unrolled_ast: c694b0e7b0e62b1a6d09208b036f36e3f9e7190878e93e4c12da50f7aafff48a

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 76a0fe2199754831329d9b089d2c02f73d7457aaed6548372169318675b85f48
initial_ast: 62cc371e07bbd0bfc72c283783eab0fdfe7c07495b375c06a1a4af33d6dbc9be
unrolled_ast: 62cc371e07bbd0bfc72c283783eab0fdfe7c07495b375c06a1a4af33d6dbc9be
initial_ast: 9837f7adc392a9d05c9004fac63b20a01da52ff63e9f254e42e6c5aff8ad9351
unrolled_ast: 9837f7adc392a9d05c9004fac63b20a01da52ff63e9f254e42e6c5aff8ad9351

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 5982207793f575c078ebaa299a9383b47ed884ac654e04814e434698b1e7b2d9
initial_ast: a36f8c5703b82aa41f233e2d59c266e917804336aa6bbf73731f3631e0a050ad
unrolled_ast: a36f8c5703b82aa41f233e2d59c266e917804336aa6bbf73731f3631e0a050ad
initial_ast: 6a748bd01dcf2ecefb85d5acf393dfcd79243337310b5dc2fcabfb6814dcf8d7
unrolled_ast: 6a748bd01dcf2ecefb85d5acf393dfcd79243337310b5dc2fcabfb6814dcf8d7

View File

@ -5,5 +5,5 @@ outputs:
- output:
- initial_input_ast: 5698b1e8a29900293a04fda5850e12e64a0d4726451701d8a726537e31bf5893
- initial_input_ast: 8025ae0dc58c3afb172a5451a69ef11be764fef4d3c2ad0bd0a253b635a97606
initial_ast: 1976d88872ded1997037cdd8149109c9ea5967fbd4ab1726122f1207843bb67e
unrolled_ast: 1976d88872ded1997037cdd8149109c9ea5967fbd4ab1726122f1207843bb67e
initial_ast: 259b60c978ff85cdbb6c5565915cef6cc1d01d98e04f9788aa5afdb6506e2a88
unrolled_ast: 259b60c978ff85cdbb6c5565915cef6cc1d01d98e04f9788aa5afdb6506e2a88

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 59bd3ad2ecbc27173c85f464424de2c7e4ba8c1da4debb8029e90d88790d00d8
initial_ast: 8faf1667807f6ed600544187a9004471a39afc779ba407c715f9da8122fb978b
unrolled_ast: 8faf1667807f6ed600544187a9004471a39afc779ba407c715f9da8122fb978b
initial_ast: db29f4b73cf5f33eb3886360c0541e818c7b0a8c1751c3808209f984dda7f1ce
unrolled_ast: db29f4b73cf5f33eb3886360c0541e818c7b0a8c1751c3808209f984dda7f1ce

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 632ec5f14f9e070c225d727c5fb5e6dd16d0f47d3ea0b408acb66142ed5eb233
initial_ast: 0aec4ea738c507c416a30e3e47fe451f0245b2f6a9334538713d827333c7aaa3
unrolled_ast: 0aec4ea738c507c416a30e3e47fe451f0245b2f6a9334538713d827333c7aaa3
initial_ast: 14cf2c8d3c99a91ff4571b8556db683fe3a2eb28bece3a559185b0848c15a1fb
unrolled_ast: 14cf2c8d3c99a91ff4571b8556db683fe3a2eb28bece3a559185b0848c15a1fb

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: ad738add6c03b6224ccba9d8d735b6645444f9c16f3b652ec4c0903fa4bb33aa
initial_ast: 0d2ba9edfe3318d3c8a3f13820894b739d0c4f4c461d16531d3e7fa404932842
unrolled_ast: 0d2ba9edfe3318d3c8a3f13820894b739d0c4f4c461d16531d3e7fa404932842
initial_ast: 126f2f3561e78baaf4e5d5af8b6d905364745dd37ae302c83050e0af2f30ea74
unrolled_ast: 126f2f3561e78baaf4e5d5af8b6d905364745dd37ae302c83050e0af2f30ea74

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: d0a6313f717ff07413b8ba9109b9d055e1b4e12f56422335f82ba410137d2c00
initial_ast: 80290f2eedaa9515be242e72dd3b8038433ab8d5c8a2c7a1cd854affe6309626
unrolled_ast: 80290f2eedaa9515be242e72dd3b8038433ab8d5c8a2c7a1cd854affe6309626
initial_ast: 8342ed3f077efc7c8b7dd7f0be0626eaefe27019109a2d84d2365e1c9e65bd0a
unrolled_ast: 8342ed3f077efc7c8b7dd7f0be0626eaefe27019109a2d84d2365e1c9e65bd0a

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 76a0fe2199754831329d9b089d2c02f73d7457aaed6548372169318675b85f48
initial_ast: 307bf884d15e21c992f2c6763fee7e6defc3266494a704418f76d7ea6679f97b
unrolled_ast: 307bf884d15e21c992f2c6763fee7e6defc3266494a704418f76d7ea6679f97b
initial_ast: ad495ddbc2ec1916f2cd47cdc9418bdd4baff5043f1794d2733ed443e2de6ade
unrolled_ast: ad495ddbc2ec1916f2cd47cdc9418bdd4baff5043f1794d2733ed443e2de6ade

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 3e1f97e09d691a7cc07c30632ba77ddb7381dca49117709bea416d388a5f715b
initial_ast: 81e9c2cb099ab7768f04808003ff0d01073ecdee204c0cf44915aecf8658c851
unrolled_ast: 81e9c2cb099ab7768f04808003ff0d01073ecdee204c0cf44915aecf8658c851
initial_ast: 656e68a5e75ddf6e72dbb76c4a77b48e98c93c5b7fc1695e265fa2a65cf67bb9
unrolled_ast: 656e68a5e75ddf6e72dbb76c4a77b48e98c93c5b7fc1695e265fa2a65cf67bb9

View File

@ -5,5 +5,5 @@ outputs:
- output:
- initial_input_ast: da9bc26968ea726630b8e221465ff3092c7fcea41d36d0596a72ce1b06f20d47
- initial_input_ast: 7e4203880b354e2ade82951012957861870a58004b8e770a76d546822eca4aa0
initial_ast: 0ae97e7c4bcf64e5eb5d46a1e302e092f37b211a68e3c61b8c59ffbe99d0f178
unrolled_ast: 0ae97e7c4bcf64e5eb5d46a1e302e092f37b211a68e3c61b8c59ffbe99d0f178
initial_ast: 24a1b0f82aae1d80e0fe28343878970a2213d3725939641425f741558eff739c
unrolled_ast: 24a1b0f82aae1d80e0fe28343878970a2213d3725939641425f741558eff739c

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 1f14fbca2375c3be8ff5e09ea3142e9ff660bdbb819e812f929e448345aee459
initial_ast: d85d99642a584db48b0724c45ccc11567a451e040619dd68962bf44c8bc2aed1
unrolled_ast: d85d99642a584db48b0724c45ccc11567a451e040619dd68962bf44c8bc2aed1
initial_ast: 595f2f64b1f8c442a50eb7fe9a1f0a85a4d76c22182abd9804a30299eb448dde
unrolled_ast: 595f2f64b1f8c442a50eb7fe9a1f0a85a4d76c22182abd9804a30299eb448dde

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: c7cfa681865a1c0623cfd356162d0c6750f3e06fb72126585eace0aeb21bae77
initial_ast: 573e6e6fa1128d6139cee3a91f941b2627c7f1c6fcba18505831f6429ab51f51
unrolled_ast: 573e6e6fa1128d6139cee3a91f941b2627c7f1c6fcba18505831f6429ab51f51
initial_ast: 875efd5df9d331ded30b13c585f81f50a5c502ea639dac0c7bbf3b082397d9a9
unrolled_ast: 875efd5df9d331ded30b13c585f81f50a5c502ea639dac0c7bbf3b082397d9a9

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: bdf7f8a6f92b7acd8c798becc30b2f6a8cf6b0ed714c168c5a9e5559988b2185
initial_ast: 87b51d5a02dc25d3de153160d5f82e067e256599eeb08180d5244a8f710c6182
unrolled_ast: 87b51d5a02dc25d3de153160d5f82e067e256599eeb08180d5244a8f710c6182
initial_ast: 05e8b8ed25e7308f673d094723c82def840e386d074df1ccc64e8c8194a0ae7c
unrolled_ast: 05e8b8ed25e7308f673d094723c82def840e386d074df1ccc64e8c8194a0ae7c

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: a1bd925fa2e13279fba1cf269924a81f2dc45c5dff42f62c3d6a4f1e7a368613
initial_ast: 4d0e8d11eb4c8c87a9e240d25d2006a71af8d0c21135beb38eabae0d5fcdecfd
unrolled_ast: 4d0e8d11eb4c8c87a9e240d25d2006a71af8d0c21135beb38eabae0d5fcdecfd
initial_ast: 23f78a76fc32fb64999d86b313bfa7c6f9f60783f896f2f624c19cf69ddae3a9
unrolled_ast: 23f78a76fc32fb64999d86b313bfa7c6f9f60783f896f2f624c19cf69ddae3a9

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 2f8bdfd57bd177ef6ba420992c9b8246f27a332126ed41021cf718db1f89fce2
initial_ast: cf0fe8f86b3eda1e6a87dcb637aa9344f35059a7c351aa3446bfcd4c3bc18ff9
unrolled_ast: cf0fe8f86b3eda1e6a87dcb637aa9344f35059a7c351aa3446bfcd4c3bc18ff9
initial_ast: ed97f2ef83351ff71cdcf7df07f317ebfc2964719f150103f7fd8a2aae2263aa
unrolled_ast: ed97f2ef83351ff71cdcf7df07f317ebfc2964719f150103f7fd8a2aae2263aa

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: fb24ac144cdf7a6e0e308c106be309c354ea413d2690b815b72b9bae3ce1a169
initial_ast: dab35a0cc1b67fccdc1db254bd53da33fce626a507361d07d972203433a9e9b8
unrolled_ast: dab35a0cc1b67fccdc1db254bd53da33fce626a507361d07d972203433a9e9b8
initial_ast: dbf12dce2a4d7ef872281ce0db8eeb2c2a424bcc56dcad727a56cb7dad2efda2
unrolled_ast: dbf12dce2a4d7ef872281ce0db8eeb2c2a424bcc56dcad727a56cb7dad2efda2

View File

@ -5,5 +5,5 @@ outputs:
- output:
- initial_input_ast: bd77ed2adb6a6503c0c23a971135d4dc9379a4c24cc32fb450b39217f4c78265
- initial_input_ast: dfca4fead6cd26c21a13438da1cce131acba56ad418f8a7ee4d9376d848680bd
initial_ast: ac2ba2a65305e9a827f3780d9cac2d63f4fec56cf791fa4fd2fdba68bc161662
unrolled_ast: ac2ba2a65305e9a827f3780d9cac2d63f4fec56cf791fa4fd2fdba68bc161662
initial_ast: 40c637103d83361f7e4bce0dcbe3cff671197dd1e0bc750cd7a72eb62e9d4e10
unrolled_ast: 40c637103d83361f7e4bce0dcbe3cff671197dd1e0bc750cd7a72eb62e9d4e10

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 04fd22fe1ef4e6c002f7090ccf35faecff80a2535a688a6fda6d1b0f63d2c19e
initial_ast: 874687092f051b83900099304db3e5270ac59dd3db12d4ecb63702a3030c2946
unrolled_ast: 874687092f051b83900099304db3e5270ac59dd3db12d4ecb63702a3030c2946
initial_ast: 467744b2a2376b7735150fcbda05734b0ffaf9693927278e5604d698623e277e
unrolled_ast: 467744b2a2376b7735150fcbda05734b0ffaf9693927278e5604d698623e277e

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: a2ab6a89c5952a113fbecdeb630917b4699c38dcda5971528ab35cdd5e92c216
initial_ast: a19bdd7052b8da30905b7094d5ec9443aafb77af054d5936731caa82a3da5214
unrolled_ast: a19bdd7052b8da30905b7094d5ec9443aafb77af054d5936731caa82a3da5214
initial_ast: 90c99a1d4558aceea32fa74c2bdfd33f4a45b85229e4b40c17b6a62bad128701
unrolled_ast: 90c99a1d4558aceea32fa74c2bdfd33f4a45b85229e4b40c17b6a62bad128701

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 886b77241861e32ee76414a8f86e04b86943325113b6b28e9d6805ee61c936ef
initial_ast: d25e4336253a75b84202f70704b78cd6a6a4ebe4129ed35ebf95ca543ee264d2
unrolled_ast: d25e4336253a75b84202f70704b78cd6a6a4ebe4129ed35ebf95ca543ee264d2
initial_ast: 6e31fc19460d5e7cb1803e3b6722b908d68f82d8db1933e4728baaff15742525
unrolled_ast: 6e31fc19460d5e7cb1803e3b6722b908d68f82d8db1933e4728baaff15742525

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 323e17762e30677ac3100cad9a455a99d3d57115531e2ca04caa8cf1311266ac
initial_ast: 354a047820e8663ab0d2d0db38e4bd96ded3455e5a5f64473152308fcd665dfb
unrolled_ast: 354a047820e8663ab0d2d0db38e4bd96ded3455e5a5f64473152308fcd665dfb
initial_ast: c49960caa8b3abfe53d6e0c3a59874fbf63deb1510abb38568b3c18a0d0fd79d
unrolled_ast: c49960caa8b3abfe53d6e0c3a59874fbf63deb1510abb38568b3c18a0d0fd79d

View File

@ -5,5 +5,5 @@ outputs:
- output:
- initial_input_ast: 70be7cdc602aa8c9dcfbc7a51eb48e5e76b704429a23b0cfd43ca073d3445412
- initial_input_ast: 03111b898b34afc7653f3898e3f39c7af3f783a91876eb49c04b9e4b2261f0c6
initial_ast: 2e8ee59acff6901be7a314ed15aba23a981d7e866636ba11436985a0761e382b
unrolled_ast: 2e8ee59acff6901be7a314ed15aba23a981d7e866636ba11436985a0761e382b
initial_ast: 4c3a0cc408daf7a81e3d819bd05370814ffe01cbcbbe52c16b1f1b00e941be5b
unrolled_ast: 4c3a0cc408daf7a81e3d819bd05370814ffe01cbcbbe52c16b1f1b00e941be5b

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: a5084c2432ba3ce882ffd38b4db3b7805403e203266908de1d6b64b2533c2b71
initial_ast: fa11cbf143020def048ba49b0608b6383bc6dbf12cdc65b4d30065434a74b2b6
unrolled_ast: fa11cbf143020def048ba49b0608b6383bc6dbf12cdc65b4d30065434a74b2b6
initial_ast: e5bcf9c203d3f9f55b8e73748c56827a4e51a4be7fbb1a563ec594d1fe66d158
unrolled_ast: e5bcf9c203d3f9f55b8e73748c56827a4e51a4be7fbb1a563ec594d1fe66d158

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 940d740ba40284a1d3c3cf8737facd1e98968224dd93999dbcb336cb3f4ce571
initial_ast: 78252bf7114b9cf9ec32f5bdbf10dcef56c8e3cdba55f7bdcc773e0d5ef0a1e4
unrolled_ast: 78252bf7114b9cf9ec32f5bdbf10dcef56c8e3cdba55f7bdcc773e0d5ef0a1e4
initial_ast: 9e6df875c79fc3e571e896a3998a9931576a6f82ee009dbcd23ae8c16df05cd1
unrolled_ast: 9e6df875c79fc3e571e896a3998a9931576a6f82ee009dbcd23ae8c16df05cd1

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: c7cfa681865a1c0623cfd356162d0c6750f3e06fb72126585eace0aeb21bae77
initial_ast: 3680bfccc83ed363feaeaf006cc4062c7595e4d94150ac7f3f31d01a3d98a0c7
unrolled_ast: 3680bfccc83ed363feaeaf006cc4062c7595e4d94150ac7f3f31d01a3d98a0c7
initial_ast: 03cca06cbd58a3fbca4b4a257cbefe7a3c83dddca751eddf33a8aedbe6eb8751
unrolled_ast: 03cca06cbd58a3fbca4b4a257cbefe7a3c83dddca751eddf33a8aedbe6eb8751

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: ff9c2d1e56ff3e1807432f3315573cbfaf9129ee77b5782bfc87fdb29018fcfa
initial_ast: c9329317f1170d91dd8ec24263d40e24b0544c0a3f48ff917b031f045653a414
unrolled_ast: c9329317f1170d91dd8ec24263d40e24b0544c0a3f48ff917b031f045653a414
initial_ast: be3f3a050aa495c0c667155367c10b26747c4a2124d33560a97d0e808437a876
unrolled_ast: be3f3a050aa495c0c667155367c10b26747c4a2124d33560a97d0e808437a876

View File

@ -5,5 +5,5 @@ outputs:
- output:
- initial_input_ast: 652d4ff29a89177b1a50bf825c8e0b588cd69b59d15401627d8ad9cb8bc8bea4
- initial_input_ast: 5c2bc7483238201b8fd1d26d7bf18fd8cd88a0c968e4403d7e588c58d5135ce1
initial_ast: c40bd5e5e2cc6bb46b671772a8652c4f6ed29c118efd88dbe25daa30fce5bae7
unrolled_ast: c40bd5e5e2cc6bb46b671772a8652c4f6ed29c118efd88dbe25daa30fce5bae7
initial_ast: 0f01322623d8bbdc6b123013c2b7f68a3da56de76fa2de109cc4d9d1b1adedef
unrolled_ast: 0f01322623d8bbdc6b123013c2b7f68a3da56de76fa2de109cc4d9d1b1adedef

View File

@ -4,5 +4,5 @@ expectation: Pass
outputs:
- output:
- initial_input_ast: 561ac4b4e304248d2a792844c79bc6bb2058fb18c89a2ffa413a605b95b105c7
initial_ast: 0a51663e9b651a3608e4d94878c14ecdc18240c00f86cc895d3544ca259ea77a
unrolled_ast: 0a51663e9b651a3608e4d94878c14ecdc18240c00f86cc895d3544ca259ea77a
initial_ast: 533ac4650362b30267048b62f2f5daab7bda6deaf9662b9e57ef4ef0fe4b146c
unrolled_ast: 533ac4650362b30267048b62f2f5daab7bda6deaf9662b9e57ef4ef0fe4b146c

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