mirror of
https://github.com/ProvableHQ/leo.git
synced 2024-12-24 10:41:57 +03:00
merge master and resolve conflicts
This commit is contained in:
commit
02416cde68
@ -221,7 +221,7 @@ impl<'a> Scope<'a> {
|
|||||||
.collect::<Result<Vec<_>>>()?,
|
.collect::<Result<Vec<_>>>()?,
|
||||||
),
|
),
|
||||||
SelfType => return Err(AsgError::unexpected_big_self(span).into()),
|
SelfType => return Err(AsgError::unexpected_big_self(span).into()),
|
||||||
CircuitOrAlias(name) => {
|
Identifier(name) => {
|
||||||
if let Some(circuit) = self.resolve_circuit(&name.name) {
|
if let Some(circuit) = self.resolve_circuit(&name.name) {
|
||||||
Type::Circuit(circuit)
|
Type::Circuit(circuit)
|
||||||
} else if let Some(alias) = self.resolve_alias(&name.name) {
|
} else if let Some(alias) = self.resolve_alias(&name.name) {
|
||||||
|
@ -227,7 +227,7 @@ impl<'a> Into<leo_ast::Type> for &Type<'a> {
|
|||||||
),
|
),
|
||||||
ArrayWithoutSize(type_) => leo_ast::Type::Array(Box::new(type_.as_ref().into()), None),
|
ArrayWithoutSize(type_) => leo_ast::Type::Array(Box::new(type_.as_ref().into()), None),
|
||||||
Tuple(subtypes) => leo_ast::Type::Tuple(subtypes.iter().map(Into::into).collect()),
|
Tuple(subtypes) => leo_ast::Type::Tuple(subtypes.iter().map(Into::into).collect()),
|
||||||
Circuit(circuit) => leo_ast::Type::CircuitOrAlias(circuit.name.borrow().clone()),
|
Circuit(circuit) => leo_ast::Type::Identifier(circuit.name.borrow().clone()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ impl Canonicalizer {
|
|||||||
fn canonicalize_self_type(&self, type_option: Option<&Type>) -> Option<Type> {
|
fn canonicalize_self_type(&self, type_option: Option<&Type>) -> Option<Type> {
|
||||||
match type_option {
|
match type_option {
|
||||||
Some(type_) => match type_ {
|
Some(type_) => match type_ {
|
||||||
Type::SelfType => Some(Type::CircuitOrAlias(self.circuit_name.as_ref().unwrap().clone())),
|
Type::SelfType => Some(Type::Identifier(self.circuit_name.as_ref().unwrap().clone())),
|
||||||
Type::Array(type_, dimensions) => Some(Type::Array(
|
Type::Array(type_, dimensions) => Some(Type::Array(
|
||||||
Box::new(self.canonicalize_self_type(Some(type_)).unwrap()),
|
Box::new(self.canonicalize_self_type(Some(type_)).unwrap()),
|
||||||
dimensions.clone(),
|
dimensions.clone(),
|
||||||
|
@ -41,7 +41,7 @@ impl<R: ReconstructingReducer> ReconstructingDirector<R> {
|
|||||||
|
|
||||||
Type::Tuple(reduced_types)
|
Type::Tuple(reduced_types)
|
||||||
}
|
}
|
||||||
Type::CircuitOrAlias(identifier) => Type::CircuitOrAlias(self.reduce_identifier(identifier)?),
|
Type::Identifier(identifier) => Type::Identifier(self.reduce_identifier(identifier)?),
|
||||||
_ => type_.clone(),
|
_ => type_.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ pub enum Type {
|
|||||||
#[serde(serialize_with = "serialize_array")]
|
#[serde(serialize_with = "serialize_array")]
|
||||||
Array(Box<Type>, Option<ArrayDimensions>),
|
Array(Box<Type>, Option<ArrayDimensions>),
|
||||||
Tuple(Vec<Type>),
|
Tuple(Vec<Type>),
|
||||||
CircuitOrAlias(Identifier),
|
Identifier(Identifier), // ex Circuit or Alias
|
||||||
SelfType,
|
SelfType,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ impl Type {
|
|||||||
/// Returns `true` if the self `Type` is a `Circuit`.
|
/// Returns `true` if the self `Type` is a `Circuit`.
|
||||||
///
|
///
|
||||||
pub fn is_circuit(&self) -> bool {
|
pub fn is_circuit(&self) -> bool {
|
||||||
matches!(self, Type::CircuitOrAlias(_))
|
matches!(self, Type::Identifier(_))
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@ -69,7 +69,7 @@ impl Type {
|
|||||||
(Type::Field, Type::Field) => true,
|
(Type::Field, Type::Field) => true,
|
||||||
(Type::Group, Type::Group) => true,
|
(Type::Group, Type::Group) => true,
|
||||||
(Type::IntegerType(left), Type::IntegerType(right)) => left.eq(right),
|
(Type::IntegerType(left), Type::IntegerType(right)) => left.eq(right),
|
||||||
(Type::CircuitOrAlias(left), Type::CircuitOrAlias(right)) => left.eq(right),
|
(Type::Identifier(left), Type::Identifier(right)) => left.eq(right),
|
||||||
(Type::SelfType, Type::SelfType) => true,
|
(Type::SelfType, Type::SelfType) => true,
|
||||||
(Type::Array(left_type, left_dim), Type::Array(right_type, right_dim)) => {
|
(Type::Array(left_type, left_dim), Type::Array(right_type, right_dim)) => {
|
||||||
// Convert array dimensions to owned.
|
// Convert array dimensions to owned.
|
||||||
@ -161,7 +161,7 @@ impl fmt::Display for Type {
|
|||||||
Type::Field => write!(f, "field"),
|
Type::Field => write!(f, "field"),
|
||||||
Type::Group => write!(f, "group"),
|
Type::Group => write!(f, "group"),
|
||||||
Type::IntegerType(ref integer_type) => write!(f, "{}", integer_type),
|
Type::IntegerType(ref integer_type) => write!(f, "{}", integer_type),
|
||||||
Type::CircuitOrAlias(ref variable) => write!(f, "circuit {}", variable),
|
Type::Identifier(ref variable) => write!(f, "circuit {}", variable),
|
||||||
Type::SelfType => write!(f, "SelfType"),
|
Type::SelfType => write!(f, "SelfType"),
|
||||||
Type::Array(ref array, ref dimensions) => {
|
Type::Array(ref array, ref dimensions) => {
|
||||||
if let Some(dimensions) = dimensions {
|
if let Some(dimensions) = dimensions {
|
||||||
|
@ -266,7 +266,7 @@ impl<R: ReconstructingReducer, O: CombinerOptions> CombineAstAsgDirector<R, O> {
|
|||||||
asg: &AsgCircuitAccessExpression,
|
asg: &AsgCircuitAccessExpression,
|
||||||
) -> Result<CircuitMemberAccessExpression> {
|
) -> Result<CircuitMemberAccessExpression> {
|
||||||
let type_ = if self.options.type_inference_enabled() {
|
let type_ = if self.options.type_inference_enabled() {
|
||||||
Some(leo_ast::Type::CircuitOrAlias(asg.circuit.get().name.borrow().clone()))
|
Some(leo_ast::Type::Identifier(asg.circuit.get().name.borrow().clone()))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
@ -2,15 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Pratyush Mishra
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
@ -18,7 +11,7 @@ FINAL
|
|||||||
# Summary
|
# Summary
|
||||||
|
|
||||||
This proposal aims to improve the import management system in Leo programs to
|
This proposal aims to improve the import management system in Leo programs to
|
||||||
make program environment more reproducible, predictable and compatible. To achieve
|
make program environment more reproducible, predictable and compatible. To achieve
|
||||||
that we suggest few changes to Leo CLI and Manifest:
|
that we suggest few changes to Leo CLI and Manifest:
|
||||||
|
|
||||||
- add a "dependencies" section to Leo Manifest and add a command to pull those dependencies;
|
- add a "dependencies" section to Leo Manifest and add a command to pull those dependencies;
|
||||||
@ -29,19 +22,19 @@ that we suggest few changes to Leo CLI and Manifest:
|
|||||||
|
|
||||||
# Motivation
|
# Motivation
|
||||||
|
|
||||||
The current design of imports does not provide any guarantees on what's stored
|
The current design of imports does not provide any guarantees on what's stored
|
||||||
in program imports and published with the program to Aleo Package Manager.
|
in program imports and published with the program to Aleo Package Manager.
|
||||||
When a dependency is "added," it is stored inside imports folder, and it is possible
|
When a dependency is "added," it is stored inside imports folder, and it is possible
|
||||||
to manually edit and/or add packages in this folder.
|
to manually edit and/or add packages in this folder.
|
||||||
|
|
||||||
Also, imports are stored under the package name which makes it impossible to import
|
Also, imports are stored under the package name which makes it impossible to import
|
||||||
two different packages with the same name.
|
two different packages with the same name.
|
||||||
|
|
||||||
Another important detail in the scope of this proposal is that in future Leo
|
Another important detail in the scope of this proposal is that in future Leo
|
||||||
programs will have the ability to be run with different proving systems
|
programs will have the ability to be run with different proving systems
|
||||||
and curves, possibly creating incompatibility between programs written
|
and curves, possibly creating incompatibility between programs written
|
||||||
for different proving systems or curves. To make a foundation for these features,
|
for different proving systems or curves. To make a foundation for these features,
|
||||||
imports need to be managed with include/exclude lists for allowed (compatible)
|
imports need to be managed with include/exclude lists for allowed (compatible)
|
||||||
proving systems and curves.
|
proving systems and curves.
|
||||||
|
|
||||||
# Design
|
# Design
|
||||||
@ -67,7 +60,7 @@ curve = "Bls12_377"
|
|||||||
proving_system = "Groth16"
|
proving_system = "Groth16"
|
||||||
```
|
```
|
||||||
|
|
||||||
These fields are meant to be used to determine whether imported program is
|
These fields are meant to be used to determine whether imported program is
|
||||||
compatible to the original when support for different curves and proving systems
|
compatible to the original when support for different curves and proving systems
|
||||||
is added.
|
is added.
|
||||||
|
|
||||||
@ -88,7 +81,7 @@ version = "1.0"
|
|||||||
|
|
||||||
### Parameters description
|
### Parameters description
|
||||||
|
|
||||||
`name` field sets the name of the dependency in Leo code. That way we allow
|
`name` field sets the name of the dependency in Leo code. That way we allow
|
||||||
developer to resolve collisions in import names manually. So, for example,
|
developer to resolve collisions in import names manually. So, for example,
|
||||||
if a developer is adding `howard/silly-sudoku` package to his program, he
|
if a developer is adding `howard/silly-sudoku` package to his program, he
|
||||||
might define its in-code name as `sudoku` and import it with that name:
|
might define its in-code name as `sudoku` and import it with that name:
|
||||||
@ -97,13 +90,13 @@ might define its in-code name as `sudoku` and import it with that name:
|
|||||||
import sudoku;
|
import sudoku;
|
||||||
```
|
```
|
||||||
|
|
||||||
`package`, `author` and `version` are package name, package author and
|
`package`, `author` and `version` are package name, package author and
|
||||||
version respectively. They are already used as arguments in `leo add`
|
version respectively. They are already used as arguments in `leo add`
|
||||||
command, so these fields are already understood by the Leo developers.
|
command, so these fields are already understood by the Leo developers.
|
||||||
|
|
||||||
## Leo CLI
|
## Leo CLI
|
||||||
|
|
||||||
To support updated Manifest new command should be added to Leo CLI.
|
To support updated Manifest new command should be added to Leo CLI.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# pull imports
|
# pull imports
|
||||||
@ -113,11 +106,11 @@ leo fetch
|
|||||||
## Imports Restructurization
|
## Imports Restructurization
|
||||||
|
|
||||||
One of the goals of proposed changes is to allow importing packages with the
|
One of the goals of proposed changes is to allow importing packages with the
|
||||||
same name but different authors. This has to be solved not only on the
|
same name but different authors. This has to be solved not only on the
|
||||||
language level but also on the level of storing program imports.
|
language level but also on the level of storing program imports.
|
||||||
|
|
||||||
We suggest using set of all 3 possible program identifiers for import
|
We suggest using set of all 3 possible program identifiers for import
|
||||||
folder name: `author-package@version`. Later it can be extended to
|
folder name: `author-package@version`. Later it can be extended to
|
||||||
include hash for version, but having the inital set already solves name
|
include hash for version, but having the inital set already solves name
|
||||||
collisions.
|
collisions.
|
||||||
|
|
||||||
@ -140,7 +133,7 @@ leo-program
|
|||||||
|
|
||||||
This change would also affect the way imports are being processed on the ASG
|
This change would also affect the way imports are being processed on the ASG
|
||||||
level, and we'd need to add an imports map as an argument to the Leo compiler.
|
level, and we'd need to add an imports map as an argument to the Leo compiler.
|
||||||
The Leo Manifest's dependencies sections needs to be parsed and passed as
|
The Leo Manifest's dependencies sections needs to be parsed and passed as
|
||||||
a hashmap to the compiler:
|
a hashmap to the compiler:
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -184,7 +177,7 @@ The format described here allows the Leo binary to form an imports map which can
|
|||||||
passed to the compiler.
|
passed to the compiler.
|
||||||
|
|
||||||
It is important to note that Leo.lock file is created only when a package has dependencies.
|
It is important to note that Leo.lock file is created only when a package has dependencies.
|
||||||
For programs with no dependencies, a lock file is not required and not created.
|
For programs with no dependencies, a lock file is not required and not created.
|
||||||
|
|
||||||
## Recursive Dependencies
|
## Recursive Dependencies
|
||||||
|
|
||||||
@ -208,12 +201,12 @@ It also introduces the danger of having recursive dependencies, this problem is
|
|||||||
# Effect on Ecosystem
|
# Effect on Ecosystem
|
||||||
|
|
||||||
Proposed improvement provides safety inside Leo programs and should not affect
|
Proposed improvement provides safety inside Leo programs and should not affect
|
||||||
ecosystem except for the tools which use Leo directly (such as Aleo Studio).
|
ecosystem except for the tools which use Leo directly (such as Aleo Studio).
|
||||||
|
|
||||||
It is possible that some of the proposed features will open new features on Aleo PM.
|
It is possible that some of the proposed features will open new features on Aleo PM.
|
||||||
|
|
||||||
# Alternatives
|
# Alternatives
|
||||||
|
|
||||||
Another approach to the stated cases is to keep everything as we have now but change
|
Another approach to the stated cases is to keep everything as we have now but change
|
||||||
the way programs are imported and stored and make names unique. Also, current
|
the way programs are imported and stored and make names unique. Also, current
|
||||||
implementation provides some guarantees on import stablitity and consistency.
|
implementation provides some guarantees on import stablitity and consistency.
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
@ -67,7 +60,7 @@ function bubble_sort(a: [u32; 10]) -> [u32; 10] {
|
|||||||
Having a countdown loop in the examples above could improve readability and
|
Having a countdown loop in the examples above could improve readability and
|
||||||
usability of the language by making it more natural to the developer.
|
usability of the language by making it more natural to the developer.
|
||||||
|
|
||||||
However, if we imagined this example using a countdown loop, we would see that
|
However, if we imagined this example using a countdown loop, we would see that
|
||||||
it wouldn't be possible to count to 0; because the first bound of the range is
|
it wouldn't be possible to count to 0; because the first bound of the range is
|
||||||
inclusive and the second is exclusive, and loops ranges must use only unsigned integers.
|
inclusive and the second is exclusive, and loops ranges must use only unsigned integers.
|
||||||
|
|
||||||
@ -75,19 +68,19 @@ inclusive and the second is exclusive, and loops ranges must use only unsigned i
|
|||||||
// loop goes 0,1,2,3,4,5,6,7,8
|
// loop goes 0,1,2,3,4,5,6,7,8
|
||||||
for i in 0..9 { /* ... */ }
|
for i in 0..9 { /* ... */ }
|
||||||
|
|
||||||
// loop goes 9,8,7,6,5,4,3,2,1
|
// loop goes 9,8,7,6,5,4,3,2,1
|
||||||
for i in 9..0 { /* ... */ }
|
for i in 9..0 { /* ... */ }
|
||||||
```
|
```
|
||||||
|
|
||||||
Hence direct implementation of the coundown loop ranges would create asymmetry (1)
|
Hence direct implementation of the coundown loop ranges would create asymmetry (1)
|
||||||
and would not allow loops to count down to 0 (2). To implement coundown loops and
|
and would not allow loops to count down to 0 (2). To implement coundown loops and
|
||||||
solve these two problems we suggest adding an inclusive range bounds.
|
solve these two problems we suggest adding an inclusive range bounds.
|
||||||
|
|
||||||
# Design
|
# Design
|
||||||
|
|
||||||
## Coundown loops
|
## Coundown loops
|
||||||
|
|
||||||
Countdown ranges do not need any changes to the existing syntax. However their
|
Countdown ranges do not need any changes to the existing syntax. However their
|
||||||
functionality needs to be implemented in the compiler.
|
functionality needs to be implemented in the compiler.
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
@ -96,9 +89,9 @@ for i in 5..0 {}
|
|||||||
|
|
||||||
## Inclusive ranges
|
## Inclusive ranges
|
||||||
|
|
||||||
To solve loop asymmetry and to improve loop ranges in general we suggest adding
|
To solve loop asymmetry and to improve loop ranges in general we suggest adding
|
||||||
inclusive range operator to Leo. Inclusive range would extend the second bound
|
inclusive range operator to Leo. Inclusive range would extend the second bound
|
||||||
of the loop making it inclusive (instead of default - exclusive)
|
of the loop making it inclusive (instead of default - exclusive)
|
||||||
therefore allowing countdown loops to reach 0 value.
|
therefore allowing countdown loops to reach 0 value.
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
|
@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
|
|
||||||
- Max Bruce
|
The Aleo Team.
|
||||||
- Collin Chin
|
|
||||||
- Alessandro Coglio
|
|
||||||
- Eric McCarthy
|
|
||||||
- Jon Pavlik
|
|
||||||
- Damir Shamanaev
|
|
||||||
- Damon Sicore
|
|
||||||
- Howard Wu
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
@ -52,7 +45,7 @@ postfix-expression = primary-expression
|
|||||||
/ identifier function-arguments
|
/ identifier function-arguments
|
||||||
/ postfix-expression "." identifier function-arguments
|
/ postfix-expression "." identifier function-arguments
|
||||||
/ named-type "::" identifier function-arguments ; this used to be a circuit-type
|
/ named-type "::" identifier function-arguments ; this used to be a circuit-type
|
||||||
/ named-type "::" identifier ; this is new to allow static members on
|
/ named-type "::" identifier ; this is new to allow static members on
|
||||||
/ postfix-expression "[" expression "]"
|
/ postfix-expression "[" expression "]"
|
||||||
/ postfix-expression "[" [expression] ".." [expression] "]"
|
/ postfix-expression "[" [expression] ".." [expression] "]"
|
||||||
```
|
```
|
||||||
|
@ -476,7 +476,7 @@ Line terminators form whitespace, along with spaces and horizontal tabs.
|
|||||||
whitespace = space / horizontal-tab / newline
|
whitespace = space / horizontal-tab / newline
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[horizontal-tab](#user-content-horizontal-tab), [newline](#user-content-newline), [space](#user-content-space)_;
|
Go to: _[newline](#user-content-newline), [space](#user-content-space), [horizontal-tab](#user-content-horizontal-tab)_;
|
||||||
|
|
||||||
|
|
||||||
There are two kinds of comments in Leo, as in other languages.
|
There are two kinds of comments in Leo, as in other languages.
|
||||||
@ -494,7 +494,7 @@ the ones used in the Java language reference.
|
|||||||
comment = block-comment / end-of-line-comment
|
comment = block-comment / end-of-line-comment
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[end-of-line-comment](#user-content-end-of-line-comment), [block-comment](#user-content-block-comment)_;
|
Go to: _[block-comment](#user-content-block-comment), [end-of-line-comment](#user-content-end-of-line-comment)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="block-comment"></a>
|
<a name="block-comment"></a>
|
||||||
@ -511,7 +511,7 @@ rest-of-block-comment = "*" rest-of-block-comment-after-star
|
|||||||
/ not-star rest-of-block-comment
|
/ not-star rest-of-block-comment
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[not-star](#user-content-not-star), [rest-of-block-comment-after-star](#user-content-rest-of-block-comment-after-star), [rest-of-block-comment](#user-content-rest-of-block-comment)_;
|
Go to: _[rest-of-block-comment](#user-content-rest-of-block-comment), [rest-of-block-comment-after-star](#user-content-rest-of-block-comment-after-star), [not-star](#user-content-not-star)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="rest-of-block-comment-after-star"></a>
|
<a name="rest-of-block-comment-after-star"></a>
|
||||||
@ -590,7 +590,7 @@ lowercase-letter = %x61-7A ; a-z
|
|||||||
letter = uppercase-letter / lowercase-letter
|
letter = uppercase-letter / lowercase-letter
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[uppercase-letter](#user-content-uppercase-letter), [lowercase-letter](#user-content-lowercase-letter)_;
|
Go to: _[lowercase-letter](#user-content-lowercase-letter), [uppercase-letter](#user-content-uppercase-letter)_;
|
||||||
|
|
||||||
|
|
||||||
The following rules defines (ASCII) decimal, octal, and hexadecimal digits.
|
The following rules defines (ASCII) decimal, octal, and hexadecimal digits.
|
||||||
@ -774,7 +774,7 @@ character-literal-element = not-single-quote-or-backslash
|
|||||||
/ unicode-character-escape
|
/ unicode-character-escape
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[unicode-character-escape](#user-content-unicode-character-escape), [simple-character-escape](#user-content-simple-character-escape), [not-single-quote-or-backslash](#user-content-not-single-quote-or-backslash), [ascii-character-escape](#user-content-ascii-character-escape)_;
|
Go to: _[ascii-character-escape](#user-content-ascii-character-escape), [simple-character-escape](#user-content-simple-character-escape), [unicode-character-escape](#user-content-unicode-character-escape), [not-single-quote-or-backslash](#user-content-not-single-quote-or-backslash)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="single-quote-escape"></a>
|
<a name="single-quote-escape"></a>
|
||||||
@ -829,7 +829,7 @@ simple-character-escape = single-quote-escape
|
|||||||
/ null-character-escape
|
/ null-character-escape
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[line-feed-escape](#user-content-line-feed-escape), [single-quote-escape](#user-content-single-quote-escape), [double-quote-escape](#user-content-double-quote-escape), [carriage-return-escape](#user-content-carriage-return-escape), [null-character-escape](#user-content-null-character-escape), [horizontal-tab-escape](#user-content-horizontal-tab-escape), [backslash-escape](#user-content-backslash-escape)_;
|
Go to: _[line-feed-escape](#user-content-line-feed-escape), [carriage-return-escape](#user-content-carriage-return-escape), [double-quote-escape](#user-content-double-quote-escape), [backslash-escape](#user-content-backslash-escape), [null-character-escape](#user-content-null-character-escape), [single-quote-escape](#user-content-single-quote-escape), [horizontal-tab-escape](#user-content-horizontal-tab-escape)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="ascii-character-escape"></a>
|
<a name="ascii-character-escape"></a>
|
||||||
@ -865,7 +865,7 @@ string-literal-element = not-double-quote-or-backslash
|
|||||||
/ unicode-character-escape
|
/ unicode-character-escape
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[unicode-character-escape](#user-content-unicode-character-escape), [simple-character-escape](#user-content-simple-character-escape), [not-double-quote-or-backslash](#user-content-not-double-quote-or-backslash), [ascii-character-escape](#user-content-ascii-character-escape)_;
|
Go to: _[simple-character-escape](#user-content-simple-character-escape), [unicode-character-escape](#user-content-unicode-character-escape), [not-double-quote-or-backslash](#user-content-not-double-quote-or-backslash), [ascii-character-escape](#user-content-ascii-character-escape)_;
|
||||||
|
|
||||||
|
|
||||||
The ones above are all the atomic literals
|
The ones above are all the atomic literals
|
||||||
@ -885,7 +885,7 @@ atomic-literal = untyped-literal
|
|||||||
/ string-literal
|
/ string-literal
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[field-literal](#user-content-field-literal), [boolean-literal](#user-content-boolean-literal), [address-literal](#user-content-address-literal), [signed-literal](#user-content-signed-literal), [character-literal](#user-content-character-literal), [string-literal](#user-content-string-literal), [unsigned-literal](#user-content-unsigned-literal), [product-group-literal](#user-content-product-group-literal), [untyped-literal](#user-content-untyped-literal)_;
|
Go to: _[character-literal](#user-content-character-literal), [unsigned-literal](#user-content-unsigned-literal), [signed-literal](#user-content-signed-literal), [address-literal](#user-content-address-literal), [field-literal](#user-content-field-literal), [untyped-literal](#user-content-untyped-literal), [product-group-literal](#user-content-product-group-literal), [string-literal](#user-content-string-literal), [boolean-literal](#user-content-boolean-literal)_;
|
||||||
|
|
||||||
|
|
||||||
After defining the (mostly) alphanumeric tokens above,
|
After defining the (mostly) alphanumeric tokens above,
|
||||||
@ -929,7 +929,7 @@ token = keyword
|
|||||||
/ symbol
|
/ symbol
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[identifier](#user-content-identifier), [atomic-literal](#user-content-atomic-literal), [package-name](#user-content-package-name), [annotation-name](#user-content-annotation-name), [symbol](#user-content-symbol), [keyword](#user-content-keyword)_;
|
Go to: _[identifier](#user-content-identifier), [annotation-name](#user-content-annotation-name), [package-name](#user-content-package-name), [keyword](#user-content-keyword), [symbol](#user-content-symbol), [atomic-literal](#user-content-atomic-literal)_;
|
||||||
|
|
||||||
|
|
||||||
Tokens, comments, and whitespace are lexemes, i.e. lexical units.
|
Tokens, comments, and whitespace are lexemes, i.e. lexical units.
|
||||||
@ -939,7 +939,7 @@ Tokens, comments, and whitespace are lexemes, i.e. lexical units.
|
|||||||
lexeme = token / comment / whitespace
|
lexeme = token / comment / whitespace
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[token](#user-content-token), [comment](#user-content-comment), [whitespace](#user-content-whitespace)_;
|
Go to: _[token](#user-content-token), [whitespace](#user-content-whitespace), [comment](#user-content-comment)_;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -996,7 +996,7 @@ group-type = %s"group"
|
|||||||
arithmetic-type = integer-type / field-type / group-type
|
arithmetic-type = integer-type / field-type / group-type
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[integer-type](#user-content-integer-type), [group-type](#user-content-group-type), [field-type](#user-content-field-type)_;
|
Go to: _[field-type](#user-content-field-type), [group-type](#user-content-group-type), [integer-type](#user-content-integer-type)_;
|
||||||
|
|
||||||
|
|
||||||
The arithmetic types, along with the boolean, address, and character types,
|
The arithmetic types, along with the boolean, address, and character types,
|
||||||
@ -1022,24 +1022,7 @@ character-type = %s"char"
|
|||||||
scalar-type = boolean-type / arithmetic-type / address-type / character-type
|
scalar-type = boolean-type / arithmetic-type / address-type / character-type
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[character-type](#user-content-character-type), [boolean-type](#user-content-boolean-type), [address-type](#user-content-address-type), [arithmetic-type](#user-content-arithmetic-type)_;
|
Go to: _[boolean-type](#user-content-boolean-type), [arithmetic-type](#user-content-arithmetic-type), [character-type](#user-content-character-type), [address-type](#user-content-address-type)_;
|
||||||
|
|
||||||
|
|
||||||
Circuit types are denoted by identifiers and the keyword `Self`.
|
|
||||||
The latter is only allowed inside a circuit definition,
|
|
||||||
to denote the circuit being defined.
|
|
||||||
|
|
||||||
<a name="self-type"></a>
|
|
||||||
```abnf
|
|
||||||
self-type = %s"Self"
|
|
||||||
```
|
|
||||||
|
|
||||||
<a name="circuit-or-alias-type"></a>
|
|
||||||
```abnf
|
|
||||||
circuit-or-alias-type = identifier / self-type
|
|
||||||
```
|
|
||||||
|
|
||||||
Go to: _[self-type](#user-content-self-type), [identifier](#user-content-identifier)_;
|
|
||||||
|
|
||||||
|
|
||||||
A tuple type consists of zero, two, or more component types.
|
A tuple type consists of zero, two, or more component types.
|
||||||
@ -1056,32 +1039,68 @@ An array type consists of an element type
|
|||||||
and an indication of dimensions.
|
and an indication of dimensions.
|
||||||
There is either a single dimension,
|
There is either a single dimension,
|
||||||
or a tuple of one or more dimensions.
|
or a tuple of one or more dimensions.
|
||||||
|
Each dimension is either a natural or is unspecified.
|
||||||
|
|
||||||
<a name="array-type"></a>
|
<a name="array-type"></a>
|
||||||
```abnf
|
```abnf
|
||||||
array-type = "[" type ";" array-dimensions "]"
|
array-type = "[" type ";" array-dimensions "]"
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[type](#user-content-type), [array-dimensions](#user-content-array-dimensions)_;
|
Go to: _[array-dimensions](#user-content-array-dimensions), [type](#user-content-type)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="array-dimensions"></a>
|
<a name="array-dimension"></a>
|
||||||
```abnf
|
```abnf
|
||||||
array-dimensions = natural
|
array-dimension = natural / "_"
|
||||||
/ "(" natural *( "," natural ) ")"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[natural](#user-content-natural)_;
|
Go to: _[natural](#user-content-natural)_;
|
||||||
|
|
||||||
|
|
||||||
Scalar and the remaining types form all the types.
|
<a name="array-dimensions"></a>
|
||||||
|
```abnf
|
||||||
|
array-dimensions = array-dimension
|
||||||
|
/ "(" array-dimension *( "," array-dimension ) ")"
|
||||||
|
```
|
||||||
|
|
||||||
|
Go to: _[array-dimension](#user-content-array-dimension)_;
|
||||||
|
|
||||||
|
|
||||||
|
The keyword `Self` denotes the enclosing circuit type.
|
||||||
|
It is only allowed inside a circuit type declaration.
|
||||||
|
|
||||||
|
<a name="self-type"></a>
|
||||||
|
```abnf
|
||||||
|
self-type = %s"Self"
|
||||||
|
```
|
||||||
|
|
||||||
|
Circuit types are denoted by identifiers and by `Self`.
|
||||||
|
Identifiers may also be type aliases;
|
||||||
|
syntactically (i.e. without a semantic analysis),
|
||||||
|
they cannot be distinguished from circuit types.
|
||||||
|
|
||||||
|
Scalar types, tuple types, array types,
|
||||||
|
identifiers (which may be circuit types or type aliases),
|
||||||
|
and the `Self` type
|
||||||
|
form all the types.
|
||||||
|
|
||||||
<a name="type"></a>
|
<a name="type"></a>
|
||||||
```abnf
|
```abnf
|
||||||
type = scalar-type / tuple-type / array-type / circuit-or-alias-type
|
type = scalar-type / tuple-type / array-type / identifier / self-type
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[circuit-or-alias-type](#user-content-circuit-or-alias-type), [tuple-type](#user-content-tuple-type), [array-type](#user-content-array-type), [scalar-type](#user-content-scalar-type)_;
|
Go to: _[array-type](#user-content-array-type), [scalar-type](#user-content-scalar-type), [tuple-type](#user-content-tuple-type), [identifier](#user-content-identifier), [self-type](#user-content-self-type)_;
|
||||||
|
|
||||||
|
|
||||||
|
It is convenient to introduce a rule for types that are
|
||||||
|
either identifiers or `Self`, as this is used in other rules.
|
||||||
|
|
||||||
|
<a name="identifier-or-self-type"></a>
|
||||||
|
```abnf
|
||||||
|
identifier-or-self-type = identifier / self-type
|
||||||
|
```
|
||||||
|
|
||||||
|
Go to: _[self-type](#user-content-self-type), [identifier](#user-content-identifier)_;
|
||||||
|
|
||||||
|
|
||||||
The lexical grammar given earlier defines product group literals.
|
The lexical grammar given earlier defines product group literals.
|
||||||
@ -1117,7 +1136,7 @@ A literal is either an atomic one or an affine group literal.
|
|||||||
literal = atomic-literal / affine-group-literal
|
literal = atomic-literal / affine-group-literal
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[atomic-literal](#user-content-atomic-literal), [affine-group-literal](#user-content-affine-group-literal)_;
|
Go to: _[affine-group-literal](#user-content-affine-group-literal), [atomic-literal](#user-content-atomic-literal)_;
|
||||||
|
|
||||||
|
|
||||||
The following rule is not directly referenced in the rules for expressions
|
The following rule is not directly referenced in the rules for expressions
|
||||||
@ -1130,7 +1149,7 @@ a group literal is either a product group literal or an affine group literal.
|
|||||||
group-literal = product-group-literal / affine-group-literal
|
group-literal = product-group-literal / affine-group-literal
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[affine-group-literal](#user-content-affine-group-literal), [product-group-literal](#user-content-product-group-literal)_;
|
Go to: _[product-group-literal](#user-content-product-group-literal), [affine-group-literal](#user-content-affine-group-literal)_;
|
||||||
|
|
||||||
|
|
||||||
As often done in grammatical language syntax specifications,
|
As often done in grammatical language syntax specifications,
|
||||||
@ -1159,7 +1178,7 @@ primary-expression = identifier
|
|||||||
/ circuit-expression
|
/ circuit-expression
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[identifier](#user-content-identifier), [literal](#user-content-literal), [expression](#user-content-expression), [tuple-expression](#user-content-tuple-expression), [array-expression](#user-content-array-expression), [circuit-expression](#user-content-circuit-expression)_;
|
Go to: _[tuple-expression](#user-content-tuple-expression), [array-expression](#user-content-array-expression), [identifier](#user-content-identifier), [literal](#user-content-literal), [expression](#user-content-expression), [circuit-expression](#user-content-circuit-expression)_;
|
||||||
|
|
||||||
|
|
||||||
Tuple expressions construct tuples.
|
Tuple expressions construct tuples.
|
||||||
@ -1220,7 +1239,7 @@ Go to: _[expression](#user-content-expression), [array-dimensions](#user-content
|
|||||||
array-construction = array-inline-construction / array-repeat-construction
|
array-construction = array-inline-construction / array-repeat-construction
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[array-repeat-construction](#user-content-array-repeat-construction), [array-inline-construction](#user-content-array-inline-construction)_;
|
Go to: _[array-inline-construction](#user-content-array-inline-construction), [array-repeat-construction](#user-content-array-repeat-construction)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="array-expression"></a>
|
<a name="array-expression"></a>
|
||||||
@ -1242,13 +1261,13 @@ so they are syntactically identical but semantically different.
|
|||||||
|
|
||||||
<a name="circuit-construction"></a>
|
<a name="circuit-construction"></a>
|
||||||
```abnf
|
```abnf
|
||||||
circuit-construction = circuit-or-alias-type "{"
|
circuit-construction = identifier-or-self-type "{"
|
||||||
circuit-inline-element
|
circuit-inline-element
|
||||||
*( "," circuit-inline-element ) [ "," ]
|
*( "," circuit-inline-element ) [ "," ]
|
||||||
"}"
|
"}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[circuit-inline-element](#user-content-circuit-inline-element), [circuit-or-alias-type](#user-content-circuit-or-alias-type)_;
|
Go to: _[identifier-or-self-type](#user-content-identifier-or-self-type), [circuit-inline-element](#user-content-circuit-inline-element)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="circuit-inline-element"></a>
|
<a name="circuit-inline-element"></a>
|
||||||
@ -1302,12 +1321,12 @@ postfix-expression = primary-expression
|
|||||||
/ postfix-expression "." identifier
|
/ postfix-expression "." identifier
|
||||||
/ identifier function-arguments
|
/ identifier function-arguments
|
||||||
/ postfix-expression "." identifier function-arguments
|
/ postfix-expression "." identifier function-arguments
|
||||||
/ circuit-or-alias-type "::" identifier function-arguments
|
/ identifier-or-self-type "::" identifier function-arguments
|
||||||
/ postfix-expression "[" expression "]"
|
/ postfix-expression "[" expression "]"
|
||||||
/ postfix-expression "[" [expression] ".." [expression] "]"
|
/ postfix-expression "[" [expression] ".." [expression] "]"
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[identifier](#user-content-identifier), [postfix-expression](#user-content-postfix-expression), [function-arguments](#user-content-function-arguments), [circuit-or-alias-type](#user-content-circuit-or-alias-type), [primary-expression](#user-content-primary-expression), [natural](#user-content-natural), [expression](#user-content-expression)_;
|
Go to: _[function-arguments](#user-content-function-arguments), [primary-expression](#user-content-primary-expression), [expression](#user-content-expression), [postfix-expression](#user-content-postfix-expression), [identifier](#user-content-identifier), [natural](#user-content-natural), [identifier-or-self-type](#user-content-identifier-or-self-type)_;
|
||||||
|
|
||||||
|
|
||||||
Unary operators have the highest operator precedence.
|
Unary operators have the highest operator precedence.
|
||||||
@ -1335,7 +1354,7 @@ exponential-expression = unary-expression
|
|||||||
/ unary-expression "**" exponential-expression
|
/ unary-expression "**" exponential-expression
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[unary-expression](#user-content-unary-expression), [exponential-expression](#user-content-exponential-expression)_;
|
Go to: _[exponential-expression](#user-content-exponential-expression), [unary-expression](#user-content-unary-expression)_;
|
||||||
|
|
||||||
|
|
||||||
Next in precedence come multiplication and division, both left-associative.
|
Next in precedence come multiplication and division, both left-associative.
|
||||||
@ -1347,7 +1366,7 @@ multiplicative-expression = exponential-expression
|
|||||||
/ multiplicative-expression "/" exponential-expression
|
/ multiplicative-expression "/" exponential-expression
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[exponential-expression](#user-content-exponential-expression), [multiplicative-expression](#user-content-multiplicative-expression)_;
|
Go to: _[multiplicative-expression](#user-content-multiplicative-expression), [exponential-expression](#user-content-exponential-expression)_;
|
||||||
|
|
||||||
|
|
||||||
Then there are addition and subtraction, both left-assocative.
|
Then there are addition and subtraction, both left-assocative.
|
||||||
@ -1359,7 +1378,7 @@ additive-expression = multiplicative-expression
|
|||||||
/ additive-expression "-" multiplicative-expression
|
/ additive-expression "-" multiplicative-expression
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[multiplicative-expression](#user-content-multiplicative-expression), [additive-expression](#user-content-additive-expression)_;
|
Go to: _[additive-expression](#user-content-additive-expression), [multiplicative-expression](#user-content-multiplicative-expression)_;
|
||||||
|
|
||||||
|
|
||||||
Next in the precedence order are ordering relations.
|
Next in the precedence order are ordering relations.
|
||||||
@ -1398,7 +1417,7 @@ conjunctive-expression = equality-expression
|
|||||||
/ conjunctive-expression "&&" equality-expression
|
/ conjunctive-expression "&&" equality-expression
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[conjunctive-expression](#user-content-conjunctive-expression), [equality-expression](#user-content-equality-expression)_;
|
Go to: _[equality-expression](#user-content-equality-expression), [conjunctive-expression](#user-content-conjunctive-expression)_;
|
||||||
|
|
||||||
|
|
||||||
Next come disjunctive expressions, left-associative.
|
Next come disjunctive expressions, left-associative.
|
||||||
@ -1409,7 +1428,7 @@ disjunctive-expression = conjunctive-expression
|
|||||||
/ disjunctive-expression "||" conjunctive-expression
|
/ disjunctive-expression "||" conjunctive-expression
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[disjunctive-expression](#user-content-disjunctive-expression), [conjunctive-expression](#user-content-conjunctive-expression)_;
|
Go to: _[conjunctive-expression](#user-content-conjunctive-expression), [disjunctive-expression](#user-content-disjunctive-expression)_;
|
||||||
|
|
||||||
|
|
||||||
Finally we have conditional expressions.
|
Finally we have conditional expressions.
|
||||||
@ -1422,7 +1441,7 @@ conditional-expression = disjunctive-expression
|
|||||||
":" conditional-expression
|
":" conditional-expression
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[disjunctive-expression](#user-content-disjunctive-expression), [expression](#user-content-expression), [conditional-expression](#user-content-conditional-expression)_;
|
Go to: _[expression](#user-content-expression), [disjunctive-expression](#user-content-disjunctive-expression), [conditional-expression](#user-content-conditional-expression)_;
|
||||||
|
|
||||||
|
|
||||||
Those above are all the expressions.
|
Those above are all the expressions.
|
||||||
@ -1455,7 +1474,7 @@ statement = expression-statement
|
|||||||
/ block
|
/ block
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[assignment-statement](#user-content-assignment-statement), [expression-statement](#user-content-expression-statement), [loop-statement](#user-content-loop-statement), [return-statement](#user-content-return-statement), [console-statement](#user-content-console-statement), [variable-declaration](#user-content-variable-declaration), [conditional-statement](#user-content-conditional-statement), [block](#user-content-block), [constant-declaration](#user-content-constant-declaration)_;
|
Go to: _[loop-statement](#user-content-loop-statement), [expression-statement](#user-content-expression-statement), [console-statement](#user-content-console-statement), [block](#user-content-block), [return-statement](#user-content-return-statement), [variable-declaration](#user-content-variable-declaration), [constant-declaration](#user-content-constant-declaration), [assignment-statement](#user-content-assignment-statement), [conditional-statement](#user-content-conditional-statement)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="block"></a>
|
<a name="block"></a>
|
||||||
@ -1498,7 +1517,7 @@ variable-declaration = %s"let" identifier-or-identifiers [ ":" type ]
|
|||||||
"=" expression ";"
|
"=" expression ";"
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[expression](#user-content-expression), [identifier-or-identifiers](#user-content-identifier-or-identifiers), [type](#user-content-type)_;
|
Go to: _[identifier-or-identifiers](#user-content-identifier-or-identifiers), [type](#user-content-type), [expression](#user-content-expression)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="constant-declaration"></a>
|
<a name="constant-declaration"></a>
|
||||||
@ -1507,7 +1526,7 @@ constant-declaration = %s"const" identifier-or-identifiers [ ":" type ]
|
|||||||
"=" expression ";"
|
"=" expression ";"
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[identifier-or-identifiers](#user-content-identifier-or-identifiers), [type](#user-content-type), [expression](#user-content-expression)_;
|
Go to: _[expression](#user-content-expression), [type](#user-content-type), [identifier-or-identifiers](#user-content-identifier-or-identifiers)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="identifier-or-identifiers"></a>
|
<a name="identifier-or-identifiers"></a>
|
||||||
@ -1540,7 +1559,7 @@ conditional-statement = branch
|
|||||||
/ branch %s"else" conditional-statement
|
/ branch %s"else" conditional-statement
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[branch](#user-content-branch), [block](#user-content-block), [conditional-statement](#user-content-conditional-statement)_;
|
Go to: _[block](#user-content-block), [conditional-statement](#user-content-conditional-statement), [branch](#user-content-branch)_;
|
||||||
|
|
||||||
|
|
||||||
A loop statement implicitly defines a loop variable
|
A loop statement implicitly defines a loop variable
|
||||||
@ -1549,10 +1568,11 @@ The body is a block.
|
|||||||
|
|
||||||
<a name="loop-statement"></a>
|
<a name="loop-statement"></a>
|
||||||
```abnf
|
```abnf
|
||||||
loop-statement = %s"for" identifier %s"in" expression ".." [ "=" ] expression block
|
loop-statement = %s"for" identifier %s"in" expression ".." [ "=" ] expression
|
||||||
|
block
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[block](#user-content-block), [identifier](#user-content-identifier), [expression](#user-content-expression)_;
|
Go to: _[expression](#user-content-expression), [identifier](#user-content-identifier), [block](#user-content-block)_;
|
||||||
|
|
||||||
|
|
||||||
An assignment statement is straightforward.
|
An assignment statement is straightforward.
|
||||||
@ -1625,7 +1645,7 @@ Go to: _[string-literal](#user-content-string-literal)_;
|
|||||||
print-call = print-function print-arguments
|
print-call = print-function print-arguments
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[print-function](#user-content-print-function), [print-arguments](#user-content-print-arguments)_;
|
Go to: _[print-arguments](#user-content-print-arguments), [print-function](#user-content-print-function)_;
|
||||||
|
|
||||||
|
|
||||||
An annotation consists of an annotation name (which starts with `@`)
|
An annotation consists of an annotation name (which starts with `@`)
|
||||||
@ -1638,7 +1658,7 @@ annotation = annotation-name
|
|||||||
[ "(" identifier *( "," identifier ) ")" ]
|
[ "(" identifier *( "," identifier ) ")" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[identifier](#user-content-identifier), [annotation-name](#user-content-annotation-name)_;
|
Go to: _[annotation-name](#user-content-annotation-name), [identifier](#user-content-identifier)_;
|
||||||
|
|
||||||
|
|
||||||
A function declaration defines a function.
|
A function declaration defines a function.
|
||||||
@ -1655,7 +1675,7 @@ function-declaration = *annotation %s"function" identifier
|
|||||||
block
|
block
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[block](#user-content-block), [type](#user-content-type), [identifier](#user-content-identifier), [function-parameters](#user-content-function-parameters)_;
|
Go to: _[identifier](#user-content-identifier), [type](#user-content-type), [block](#user-content-block), [function-parameters](#user-content-function-parameters)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="function-parameters"></a>
|
<a name="function-parameters"></a>
|
||||||
@ -1665,7 +1685,7 @@ function-parameters = self-parameter
|
|||||||
/ function-inputs
|
/ function-inputs
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[self-parameter](#user-content-self-parameter), [function-inputs](#user-content-function-inputs)_;
|
Go to: _[function-inputs](#user-content-function-inputs), [self-parameter](#user-content-self-parameter)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="self-parameter"></a>
|
<a name="self-parameter"></a>
|
||||||
@ -1756,7 +1776,7 @@ by using an explicit package name before the package path.
|
|||||||
import-declaration = %s"import" package-name "." package-path ";"
|
import-declaration = %s"import" package-name "." package-path ";"
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[package-path](#user-content-package-path), [package-name](#user-content-package-name)_;
|
Go to: _[package-name](#user-content-package-name), [package-path](#user-content-package-path)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="package-path"></a>
|
<a name="package-path"></a>
|
||||||
@ -1767,19 +1787,17 @@ package-path = "*"
|
|||||||
/ "(" package-path *( "," package-path ) [","] ")"
|
/ "(" package-path *( "," package-path ) [","] ")"
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[package-name](#user-content-package-name), [identifier](#user-content-identifier), [package-path](#user-content-package-path)_;
|
Go to: _[package-path](#user-content-package-path), [identifier](#user-content-identifier), [package-name](#user-content-package-name)_;
|
||||||
|
|
||||||
|
|
||||||
A type declaration consists of the `type` keyword
|
A type alias declaration defines an identifier to stand for a type.
|
||||||
followed by an identifier and a type that the alias
|
|
||||||
would refer to.
|
|
||||||
|
|
||||||
<a name="type-alias-declaration"></a>
|
<a name="type-alias-declaration"></a>
|
||||||
```abnf
|
```abnf
|
||||||
type-alias-declaration = %s"type" identifier "=" type ";"
|
type-alias-declaration = %s"type" identifier "=" type ";"
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[type](#user-content-type), [identifier](#user-content-identifier)_;
|
Go to: _[identifier](#user-content-identifier), [type](#user-content-type)_;
|
||||||
|
|
||||||
|
|
||||||
Finally, we define a file as a sequence of zero or more declarations.
|
Finally, we define a file as a sequence of zero or more declarations.
|
||||||
@ -1795,7 +1813,7 @@ declaration = import-declaration
|
|||||||
/ type-alias-declaration
|
/ type-alias-declaration
|
||||||
```
|
```
|
||||||
|
|
||||||
Go to: _[import-declaration](#user-content-import-declaration), [circuit-declaration](#user-content-circuit-declaration), [constant-declaration](#user-content-constant-declaration), [type-alias-declaration](#user-content-type-alias-declaration), [function-declaration](#user-content-function-declaration)_;
|
Go to: _[circuit-declaration](#user-content-circuit-declaration), [import-declaration](#user-content-import-declaration), [function-declaration](#user-content-function-declaration), [constant-declaration](#user-content-constant-declaration), [type-alias-declaration](#user-content-type-alias-declaration)_;
|
||||||
|
|
||||||
|
|
||||||
<a name="file"></a>
|
<a name="file"></a>
|
||||||
|
@ -659,14 +659,6 @@ character-type = %s"char"
|
|||||||
|
|
||||||
scalar-type = boolean-type / arithmetic-type / address-type / character-type
|
scalar-type = boolean-type / arithmetic-type / address-type / character-type
|
||||||
|
|
||||||
; Circuit types are denoted by identifiers and the keyword `Self`.
|
|
||||||
; The latter is only allowed inside a circuit definition,
|
|
||||||
; to denote the circuit being defined.
|
|
||||||
|
|
||||||
self-type = %s"Self"
|
|
||||||
|
|
||||||
circuit-or-alias-type = identifier / self-type
|
|
||||||
|
|
||||||
; A tuple type consists of zero, two, or more component types.
|
; A tuple type consists of zero, two, or more component types.
|
||||||
|
|
||||||
tuple-type = "(" [ type 1*( "," type ) ] ")"
|
tuple-type = "(" [ type 1*( "," type ) ] ")"
|
||||||
@ -675,6 +667,7 @@ tuple-type = "(" [ type 1*( "," type ) ] ")"
|
|||||||
; and an indication of dimensions.
|
; and an indication of dimensions.
|
||||||
; There is either a single dimension,
|
; There is either a single dimension,
|
||||||
; or a tuple of one or more dimensions.
|
; or a tuple of one or more dimensions.
|
||||||
|
; Each dimension is either a natural or is unspecified.
|
||||||
|
|
||||||
array-type = "[" type ";" array-dimensions "]"
|
array-type = "[" type ";" array-dimensions "]"
|
||||||
|
|
||||||
@ -683,9 +676,27 @@ array-dimension = natural / "_"
|
|||||||
array-dimensions = array-dimension
|
array-dimensions = array-dimension
|
||||||
/ "(" array-dimension *( "," array-dimension ) ")"
|
/ "(" array-dimension *( "," array-dimension ) ")"
|
||||||
|
|
||||||
; Scalar and the remaining types form all the types.
|
; The keyword `Self` denotes the enclosing circuit type.
|
||||||
|
; It is only allowed inside a circuit type declaration.
|
||||||
|
|
||||||
type = scalar-type / tuple-type / array-type / circuit-or-alias-type
|
self-type = %s"Self"
|
||||||
|
|
||||||
|
; Circuit types are denoted by identifiers and by `Self`.
|
||||||
|
; Identifiers may also be type aliases;
|
||||||
|
; syntactically (i.e. without a semantic analysis),
|
||||||
|
; they cannot be distinguished from circuit types.
|
||||||
|
|
||||||
|
; Scalar types, tuple types, array types,
|
||||||
|
; identifiers (which may be circuit types or type aliases),
|
||||||
|
; and the `Self` type
|
||||||
|
; form all the types.
|
||||||
|
|
||||||
|
type = scalar-type / tuple-type / array-type / identifier / self-type
|
||||||
|
|
||||||
|
; It is convenient to introduce a rule for types that are
|
||||||
|
; either identifiers or `Self`, as this is used in other rules.
|
||||||
|
|
||||||
|
identifier-or-self-type = identifier / self-type
|
||||||
|
|
||||||
; The lexical grammar given earlier defines product group literals.
|
; The lexical grammar given earlier defines product group literals.
|
||||||
; The other kind of group literal is a pair of integer coordinates,
|
; The other kind of group literal is a pair of integer coordinates,
|
||||||
@ -771,7 +782,7 @@ array-expression = array-construction
|
|||||||
; while the right one denotes an expression (a variable),
|
; while the right one denotes an expression (a variable),
|
||||||
; so they are syntactically identical but semantically different.
|
; so they are syntactically identical but semantically different.
|
||||||
|
|
||||||
circuit-construction = circuit-or-alias-type "{"
|
circuit-construction = identifier-or-self-type "{"
|
||||||
circuit-inline-element
|
circuit-inline-element
|
||||||
*( "," circuit-inline-element ) [ "," ]
|
*( "," circuit-inline-element ) [ "," ]
|
||||||
"}"
|
"}"
|
||||||
@ -807,7 +818,7 @@ postfix-expression = primary-expression
|
|||||||
/ postfix-expression "." identifier
|
/ postfix-expression "." identifier
|
||||||
/ identifier function-arguments
|
/ identifier function-arguments
|
||||||
/ postfix-expression "." identifier function-arguments
|
/ postfix-expression "." identifier function-arguments
|
||||||
/ circuit-or-alias-type "::" identifier function-arguments
|
/ identifier-or-self-type "::" identifier function-arguments
|
||||||
/ postfix-expression "[" expression "]"
|
/ postfix-expression "[" expression "]"
|
||||||
/ postfix-expression "[" [expression] ".." [expression] "]"
|
/ postfix-expression "[" [expression] ".." [expression] "]"
|
||||||
|
|
||||||
@ -937,7 +948,8 @@ conditional-statement = branch
|
|||||||
; that goes from a starting value (inclusive) to an ending value (exclusive).
|
; that goes from a starting value (inclusive) to an ending value (exclusive).
|
||||||
; The body is a block.
|
; The body is a block.
|
||||||
|
|
||||||
loop-statement = %s"for" identifier %s"in" expression ".." [ "=" ] expression block
|
loop-statement = %s"for" identifier %s"in" expression ".." [ "=" ] expression
|
||||||
|
block
|
||||||
|
|
||||||
; An assignment statement is straightforward.
|
; An assignment statement is straightforward.
|
||||||
; Based on the operator, the assignment may be simple (i.e. `=`)
|
; Based on the operator, the assignment may be simple (i.e. `=`)
|
||||||
@ -1049,9 +1061,7 @@ package-path = "*"
|
|||||||
/ package-name "." package-path
|
/ package-name "." package-path
|
||||||
/ "(" package-path *( "," package-path ) [","] ")"
|
/ "(" package-path *( "," package-path ) [","] ")"
|
||||||
|
|
||||||
; A type declaration consists of the `type` keyword
|
; A type alias declaration defines an identifier to stand for a type.
|
||||||
; followed by an identifier and a type that the alias
|
|
||||||
; would refer to.
|
|
||||||
|
|
||||||
type-alias-declaration = %s"type" identifier "=" type ";"
|
type-alias-declaration = %s"type" identifier "=" type ";"
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ impl ParserContext {
|
|||||||
(Type::SelfType, token.span)
|
(Type::SelfType, token.span)
|
||||||
} else if let Some(ident) = self.eat_identifier() {
|
} else if let Some(ident) = self.eat_identifier() {
|
||||||
let span = ident.span.clone();
|
let span = ident.span.clone();
|
||||||
(Type::CircuitOrAlias(ident), span)
|
(Type::Identifier(ident), span)
|
||||||
} else if let Some(token) = self.eat(Token::LeftParen) {
|
} else if let Some(token) = self.eat(Token::LeftParen) {
|
||||||
let mut types = Vec::new();
|
let mut types = Vec::new();
|
||||||
let end_span;
|
let end_span;
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: a4a3b4b30742544a6dae3d76794504173c1cc64f217bd3feda033ce51512a670
|
initial_ast: 6349e2684562bad873bcf643e01eeb02039295bd41e2df77f1fefc7bb3f2d3bb
|
||||||
imports_resolved_ast: a4a3b4b30742544a6dae3d76794504173c1cc64f217bd3feda033ce51512a670
|
imports_resolved_ast: 6349e2684562bad873bcf643e01eeb02039295bd41e2df77f1fefc7bb3f2d3bb
|
||||||
canonicalized_ast: a4a3b4b30742544a6dae3d76794504173c1cc64f217bd3feda033ce51512a670
|
canonicalized_ast: 6349e2684562bad873bcf643e01eeb02039295bd41e2df77f1fefc7bb3f2d3bb
|
||||||
type_inferenced_ast: 508686ddeb2f8fad60d9ad58639b5a761e6c5f5b61e105803eb8a98d8065a2ad
|
type_inferenced_ast: 508686ddeb2f8fad60d9ad58639b5a761e6c5f5b61e105803eb8a98d8065a2ad
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: d83b33119db295fa2ed7795c8e17d4073cabba5e90e9438cd53f3a9a77585f19
|
initial_ast: 9f78c996da10363fb594947ca29fef29e35a7032761ce87f69f3ae454650d47e
|
||||||
imports_resolved_ast: d83b33119db295fa2ed7795c8e17d4073cabba5e90e9438cd53f3a9a77585f19
|
imports_resolved_ast: 9f78c996da10363fb594947ca29fef29e35a7032761ce87f69f3ae454650d47e
|
||||||
canonicalized_ast: d83b33119db295fa2ed7795c8e17d4073cabba5e90e9438cd53f3a9a77585f19
|
canonicalized_ast: 9f78c996da10363fb594947ca29fef29e35a7032761ce87f69f3ae454650d47e
|
||||||
type_inferenced_ast: 77be8ec74bc15f2a45e8bf29e7973bc0c721008fe5508dcc6d02b91aae3d84ee
|
type_inferenced_ast: 103314a18ce6036da1ab4cc32c025b694cf799492460ab9553dfbd5232544a89
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: d9b0b6772317f0e2d1042dba26c19b4eb71a7e902c643cbeb0a4f62630f0f1bc
|
initial_ast: ee817c17e6bef3b458e14d3a81c087ed6a75c4554bc70b62466e8d8e43ff1b5e
|
||||||
imports_resolved_ast: d9b0b6772317f0e2d1042dba26c19b4eb71a7e902c643cbeb0a4f62630f0f1bc
|
imports_resolved_ast: ee817c17e6bef3b458e14d3a81c087ed6a75c4554bc70b62466e8d8e43ff1b5e
|
||||||
canonicalized_ast: d9b0b6772317f0e2d1042dba26c19b4eb71a7e902c643cbeb0a4f62630f0f1bc
|
canonicalized_ast: ee817c17e6bef3b458e14d3a81c087ed6a75c4554bc70b62466e8d8e43ff1b5e
|
||||||
type_inferenced_ast: e384fbed9e161b04c6c9e85f45788e5047385f289ef89d20fdacee00a8fb3e5c
|
type_inferenced_ast: b15c7e773ebb56e339f750401241e38aab4ab8950c20a70acc293afc1b91d917
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: 7feac3e33e75789d3b532a7cc857f324cd7abed380d578791803b3162edcfdec
|
initial_ast: 8d5ed3110bc3a61ddee37408133fcc1f77209b65bb83d230729203009e093f40
|
||||||
imports_resolved_ast: 7feac3e33e75789d3b532a7cc857f324cd7abed380d578791803b3162edcfdec
|
imports_resolved_ast: 8d5ed3110bc3a61ddee37408133fcc1f77209b65bb83d230729203009e093f40
|
||||||
canonicalized_ast: 7feac3e33e75789d3b532a7cc857f324cd7abed380d578791803b3162edcfdec
|
canonicalized_ast: 8d5ed3110bc3a61ddee37408133fcc1f77209b65bb83d230729203009e093f40
|
||||||
type_inferenced_ast: bc54ad21e90ab297b40ff570dfc379cbca61fdc9e20bd6899f4b964f726954b0
|
type_inferenced_ast: bc54ad21e90ab297b40ff570dfc379cbca61fdc9e20bd6899f4b964f726954b0
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: 671704ed30a8c68ebffe2a58ff4799f626badf975d2d0dded3b06f5264e5c0db
|
initial_ast: f7b2eb89c51644dc8596988bcc66fbfe471489887c6f46b78ca417746c7ef442
|
||||||
imports_resolved_ast: 671704ed30a8c68ebffe2a58ff4799f626badf975d2d0dded3b06f5264e5c0db
|
imports_resolved_ast: f7b2eb89c51644dc8596988bcc66fbfe471489887c6f46b78ca417746c7ef442
|
||||||
canonicalized_ast: 671704ed30a8c68ebffe2a58ff4799f626badf975d2d0dded3b06f5264e5c0db
|
canonicalized_ast: f7b2eb89c51644dc8596988bcc66fbfe471489887c6f46b78ca417746c7ef442
|
||||||
type_inferenced_ast: eb525f7c227207a1037b96838d2f0cf597968c14117b3fae30564f3cd5a3a27b
|
type_inferenced_ast: f24ef5063928ee7998b53e5e66064c56c01bd99d55b736309d3a1d11ff2fec05
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
namespace: Compile
|
|
||||||
expectation: Fail
|
|
||||||
outputs:
|
|
||||||
- "Error [EASG0373047]: a function input cannot be named `x` as a alias with that name already exists in this scope\n --> compiler-test:5:15\n |\n 5 | function main(x: u32, y: bool) -> bool {\n | ^"
|
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: cd2e85ff29ee11d30e73dbba0a612223a8a26dff125069ad7ac05697fd4c9829
|
initial_ast: 66ead06ceac4fea6a24fe071a955986722a53975fa98d2ad2909a83fa8ba8525
|
||||||
imports_resolved_ast: cd2e85ff29ee11d30e73dbba0a612223a8a26dff125069ad7ac05697fd4c9829
|
imports_resolved_ast: 66ead06ceac4fea6a24fe071a955986722a53975fa98d2ad2909a83fa8ba8525
|
||||||
canonicalized_ast: cd2e85ff29ee11d30e73dbba0a612223a8a26dff125069ad7ac05697fd4c9829
|
canonicalized_ast: 66ead06ceac4fea6a24fe071a955986722a53975fa98d2ad2909a83fa8ba8525
|
||||||
type_inferenced_ast: 1e73226b2cbbd5c7a36ffe70b778e0e544976d2e09a1f0ba3f2b486d1b604d58
|
type_inferenced_ast: 1e73226b2cbbd5c7a36ffe70b778e0e544976d2e09a1f0ba3f2b486d1b604d58
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
namespace: Compile
|
|
||||||
expectation: Fail
|
|
||||||
outputs:
|
|
||||||
- "Error [EASG0373047]: a function input cannot be named `int` as a alias with that name already exists in this scope\n --> compiler-test:6:9\n |\n 6 | let int: int = 1u32;\n | ^^^"
|
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 843884ddf198fe566cea0f8e84a2902f720d6211c9d8bad98299eea4da846870
|
initial_ast: 843884ddf198fe566cea0f8e84a2902f720d6211c9d8bad98299eea4da846870
|
||||||
imports_resolved_ast: 843884ddf198fe566cea0f8e84a2902f720d6211c9d8bad98299eea4da846870
|
imports_resolved_ast: 843884ddf198fe566cea0f8e84a2902f720d6211c9d8bad98299eea4da846870
|
||||||
canonicalized_ast: c30721e60523bc31af9a9bf342d9b89bf92a26e3886394cc0c1a574560715bdf
|
canonicalized_ast: c30721e60523bc31af9a9bf342d9b89bf92a26e3886394cc0c1a574560715bdf
|
||||||
type_inferenced_ast: c37f209961a9acff1d942af1e4a9a332123676f2bc581ca94604314f9d738a1e
|
type_inferenced_ast: baed608da257be0625cd54a796c2f89e9aec8b1ff60f23c7657a0c4fc260e1d1
|
||||||
|
@ -25,4 +25,4 @@ outputs:
|
|||||||
initial_ast: 4e74124bc410534941ef9b79ffb64656d14e145b5a79fbd14419c1aef2f0ef69
|
initial_ast: 4e74124bc410534941ef9b79ffb64656d14e145b5a79fbd14419c1aef2f0ef69
|
||||||
imports_resolved_ast: 4e74124bc410534941ef9b79ffb64656d14e145b5a79fbd14419c1aef2f0ef69
|
imports_resolved_ast: 4e74124bc410534941ef9b79ffb64656d14e145b5a79fbd14419c1aef2f0ef69
|
||||||
canonicalized_ast: 4e74124bc410534941ef9b79ffb64656d14e145b5a79fbd14419c1aef2f0ef69
|
canonicalized_ast: 4e74124bc410534941ef9b79ffb64656d14e145b5a79fbd14419c1aef2f0ef69
|
||||||
type_inferenced_ast: f5cb6326028b3cf9187889be6ac5ed5bd095a570d45ae63c7285a09366fc6803
|
type_inferenced_ast: de80815f88fb65efa62ce7f5fa23c6fc4f1bbdf601954e94c1212c4eabbee1cb
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: 1695abb58931812bfe65ffdb967c9e8e36abbab771bfd8a20e289e3e1b102b5a
|
initial_ast: 0e8ea2eb2de2ad93883ced129ab7c42674fd476d94ede483f5ea042f8386b730
|
||||||
imports_resolved_ast: 1695abb58931812bfe65ffdb967c9e8e36abbab771bfd8a20e289e3e1b102b5a
|
imports_resolved_ast: 0e8ea2eb2de2ad93883ced129ab7c42674fd476d94ede483f5ea042f8386b730
|
||||||
canonicalized_ast: 637eaabe62c318b0c9f9d6d26936c11aa8804022866ce356e14dc02e29a34251
|
canonicalized_ast: 529ba1d5564ef0c1752343e3e6e8b181f13bec0620c4ecbe23080ef4a080cb2b
|
||||||
type_inferenced_ast: 1540899195a176d1b1d0e1d886a671f07f063dd10fea15f853e67ffcfc0ae9ce
|
type_inferenced_ast: b4d3305f7179dfc2a7a330e538a41e3cdf51f12e4a6545cd57ff9a2e5a9d1db0
|
||||||
|
@ -103,4 +103,4 @@ outputs:
|
|||||||
initial_ast: 0c2aeb5b47fc21f5aded4e3aebcdf55eb98c10c6b51a2a6dcb98490a96da0c97
|
initial_ast: 0c2aeb5b47fc21f5aded4e3aebcdf55eb98c10c6b51a2a6dcb98490a96da0c97
|
||||||
imports_resolved_ast: 0c2aeb5b47fc21f5aded4e3aebcdf55eb98c10c6b51a2a6dcb98490a96da0c97
|
imports_resolved_ast: 0c2aeb5b47fc21f5aded4e3aebcdf55eb98c10c6b51a2a6dcb98490a96da0c97
|
||||||
canonicalized_ast: 0c2aeb5b47fc21f5aded4e3aebcdf55eb98c10c6b51a2a6dcb98490a96da0c97
|
canonicalized_ast: 0c2aeb5b47fc21f5aded4e3aebcdf55eb98c10c6b51a2a6dcb98490a96da0c97
|
||||||
type_inferenced_ast: 84977d828c2988392d85d4156d34d168a3265aca3c3516b3ddb974d3d9eee2dc
|
type_inferenced_ast: e9c5fc64aad2390305671ffbe316eee04d5fca7a6f09dcc8c8a69c38db8b3a62
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: dc05209ad2e30af4f03aa0f8c043849071e71bb2cc63aeb898d9eb7e4770d05c
|
initial_ast: ec52d3b3e69bef6d104f2dcfa9e713a728d7b0e15439c9da3b521b6cbfe719d4
|
||||||
imports_resolved_ast: dc05209ad2e30af4f03aa0f8c043849071e71bb2cc63aeb898d9eb7e4770d05c
|
imports_resolved_ast: ec52d3b3e69bef6d104f2dcfa9e713a728d7b0e15439c9da3b521b6cbfe719d4
|
||||||
canonicalized_ast: 7522e99656edfe20bd643a5e95af536f50445613c60d8c525e678149e3ab257b
|
canonicalized_ast: c85604dd75a964f7a6cfc0dddbeeeccf28a7c43915b944740528a0ff6230db78
|
||||||
type_inferenced_ast: 34257803056274397099d0a7bf3fcd2a20815d7d988e17c1c4404d43300283b4
|
type_inferenced_ast: 258670051ac595a600362cb5a6793fb5ba9361cd914f7483057ad66204fc1b36
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 50c0f7261d879373f4e01ec3d140a2067ca4e78622c8340e8312d717f6effb05
|
initial_ast: 50c0f7261d879373f4e01ec3d140a2067ca4e78622c8340e8312d717f6effb05
|
||||||
imports_resolved_ast: 50c0f7261d879373f4e01ec3d140a2067ca4e78622c8340e8312d717f6effb05
|
imports_resolved_ast: 50c0f7261d879373f4e01ec3d140a2067ca4e78622c8340e8312d717f6effb05
|
||||||
canonicalized_ast: 50c0f7261d879373f4e01ec3d140a2067ca4e78622c8340e8312d717f6effb05
|
canonicalized_ast: 50c0f7261d879373f4e01ec3d140a2067ca4e78622c8340e8312d717f6effb05
|
||||||
type_inferenced_ast: 161edd5d1900f2902bd8cc972308ce7fb0afe7c6cf64ab7cfe952c3f1b3189c0
|
type_inferenced_ast: 68174a753a3191ea961db29f62b6557f410ee33c2cad28c43a5098bb6cb230f2
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: bfd7751e8ea64c6d41af36d968f194a18a5411ac71932a67766f40448ce755f5
|
initial_ast: bfd7751e8ea64c6d41af36d968f194a18a5411ac71932a67766f40448ce755f5
|
||||||
imports_resolved_ast: bfd7751e8ea64c6d41af36d968f194a18a5411ac71932a67766f40448ce755f5
|
imports_resolved_ast: bfd7751e8ea64c6d41af36d968f194a18a5411ac71932a67766f40448ce755f5
|
||||||
canonicalized_ast: bfd7751e8ea64c6d41af36d968f194a18a5411ac71932a67766f40448ce755f5
|
canonicalized_ast: bfd7751e8ea64c6d41af36d968f194a18a5411ac71932a67766f40448ce755f5
|
||||||
type_inferenced_ast: 910b51f962861da6011f214a5379bc9296034e3fecda347b17c7db97df833a25
|
type_inferenced_ast: c6ca022e97bef335bf6df235875d507240eb48ea28f6504cc17c3d09820430f9
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: d8a66347f480161a2215c92d2cf6ded2d0b49fd76b7eb0036d4fa33de371925a
|
initial_ast: d8a66347f480161a2215c92d2cf6ded2d0b49fd76b7eb0036d4fa33de371925a
|
||||||
imports_resolved_ast: d8a66347f480161a2215c92d2cf6ded2d0b49fd76b7eb0036d4fa33de371925a
|
imports_resolved_ast: d8a66347f480161a2215c92d2cf6ded2d0b49fd76b7eb0036d4fa33de371925a
|
||||||
canonicalized_ast: d8a66347f480161a2215c92d2cf6ded2d0b49fd76b7eb0036d4fa33de371925a
|
canonicalized_ast: d8a66347f480161a2215c92d2cf6ded2d0b49fd76b7eb0036d4fa33de371925a
|
||||||
type_inferenced_ast: d5bb87130d78bb39fa948ce868999184f90c78ada176cf08c49051517de3351c
|
type_inferenced_ast: cb82c955829007961356ca2760b6ca84e2ea321cd640e87d4a51fd3ba65eb7a7
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: c40a1d60f872fdb03ab7379a3abf43439a100b8f1546b76ffeac60c8739e0d68
|
initial_ast: c40a1d60f872fdb03ab7379a3abf43439a100b8f1546b76ffeac60c8739e0d68
|
||||||
imports_resolved_ast: c40a1d60f872fdb03ab7379a3abf43439a100b8f1546b76ffeac60c8739e0d68
|
imports_resolved_ast: c40a1d60f872fdb03ab7379a3abf43439a100b8f1546b76ffeac60c8739e0d68
|
||||||
canonicalized_ast: c40a1d60f872fdb03ab7379a3abf43439a100b8f1546b76ffeac60c8739e0d68
|
canonicalized_ast: c40a1d60f872fdb03ab7379a3abf43439a100b8f1546b76ffeac60c8739e0d68
|
||||||
type_inferenced_ast: 3d56ffd95d1b84970e24f10a48f52053717876f062db72d8be93f413f7b2c9a3
|
type_inferenced_ast: 2221472ded58b4a6c77545040ca32138d68eb6f2c3e47b830317872f045f91f8
|
||||||
|
@ -18,5 +18,5 @@ outputs:
|
|||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: cf642f2f983cd8bcd6cbca2d2920f5234d79375601c1da3c06f97b6185a5629d
|
initial_ast: cf642f2f983cd8bcd6cbca2d2920f5234d79375601c1da3c06f97b6185a5629d
|
||||||
imports_resolved_ast: cf642f2f983cd8bcd6cbca2d2920f5234d79375601c1da3c06f97b6185a5629d
|
imports_resolved_ast: cf642f2f983cd8bcd6cbca2d2920f5234d79375601c1da3c06f97b6185a5629d
|
||||||
canonicalized_ast: f99560385252ad2965e39b19402e7c56db402458206187eeb54adc26effd9bb5
|
canonicalized_ast: de45d7a621a1309ca9ae0dd11f4a99e8ff1e0b92c9f990d2f72a6c43067a7611
|
||||||
type_inferenced_ast: c7c5cd5ed24fd3967f19a5ad895aeb7778b3dfadc7965c3f5bc1d44c61448083
|
type_inferenced_ast: 690a93dcec9c31c26b52ca234ce8e07067649c038e47fd8b7eeef9e36dddf05b
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 5273a592b167cfe040b2bca7337521084d7a6640651bca584545e9eeb2e4fa88
|
initial_ast: 5273a592b167cfe040b2bca7337521084d7a6640651bca584545e9eeb2e4fa88
|
||||||
imports_resolved_ast: 5273a592b167cfe040b2bca7337521084d7a6640651bca584545e9eeb2e4fa88
|
imports_resolved_ast: 5273a592b167cfe040b2bca7337521084d7a6640651bca584545e9eeb2e4fa88
|
||||||
canonicalized_ast: 5273a592b167cfe040b2bca7337521084d7a6640651bca584545e9eeb2e4fa88
|
canonicalized_ast: 5273a592b167cfe040b2bca7337521084d7a6640651bca584545e9eeb2e4fa88
|
||||||
type_inferenced_ast: 6d1bef6ecbba4533266f9478b06e52acc56f04850e99a658abffe39e7e463cdf
|
type_inferenced_ast: ee2152aedd637adcfdd84540bfd8814c65cc8552c0bae80a0176b91d70b1266e
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 241f1a42877b012b2e2062cefbd83523a5c719557cb422cf1fbd7efb0f7b1796
|
initial_ast: 241f1a42877b012b2e2062cefbd83523a5c719557cb422cf1fbd7efb0f7b1796
|
||||||
imports_resolved_ast: 241f1a42877b012b2e2062cefbd83523a5c719557cb422cf1fbd7efb0f7b1796
|
imports_resolved_ast: 241f1a42877b012b2e2062cefbd83523a5c719557cb422cf1fbd7efb0f7b1796
|
||||||
canonicalized_ast: 241f1a42877b012b2e2062cefbd83523a5c719557cb422cf1fbd7efb0f7b1796
|
canonicalized_ast: 241f1a42877b012b2e2062cefbd83523a5c719557cb422cf1fbd7efb0f7b1796
|
||||||
type_inferenced_ast: 2982ee6fda2fcbd00f64d2c0c75ccacf58ab05961f85e9a64cc0ddec12bb5209
|
type_inferenced_ast: e063513fb0d009c0cadd36cab9feb4327528bbba45087d7a65e0e97fcd54bb7a
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: cf41b78f9435c6555014db8aeebe662556f4f8547ee0f3a204d6f522fcf72644
|
initial_ast: cf41b78f9435c6555014db8aeebe662556f4f8547ee0f3a204d6f522fcf72644
|
||||||
imports_resolved_ast: cf41b78f9435c6555014db8aeebe662556f4f8547ee0f3a204d6f522fcf72644
|
imports_resolved_ast: cf41b78f9435c6555014db8aeebe662556f4f8547ee0f3a204d6f522fcf72644
|
||||||
canonicalized_ast: cf41b78f9435c6555014db8aeebe662556f4f8547ee0f3a204d6f522fcf72644
|
canonicalized_ast: cf41b78f9435c6555014db8aeebe662556f4f8547ee0f3a204d6f522fcf72644
|
||||||
type_inferenced_ast: d947fa6d8fa1b34cc9822ade386062dbd6ebc2cb5987479d4263bcfa554586cd
|
type_inferenced_ast: 2fbe148dcadf6f460f64824e311f1f061265dc81e2eaff555987dbf55094b3a4
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 622baae85ab7776fc38cff17465e8e0dbcdb98f4ba74e734ca494b696cea8ccd
|
initial_ast: 622baae85ab7776fc38cff17465e8e0dbcdb98f4ba74e734ca494b696cea8ccd
|
||||||
imports_resolved_ast: 622baae85ab7776fc38cff17465e8e0dbcdb98f4ba74e734ca494b696cea8ccd
|
imports_resolved_ast: 622baae85ab7776fc38cff17465e8e0dbcdb98f4ba74e734ca494b696cea8ccd
|
||||||
canonicalized_ast: 622baae85ab7776fc38cff17465e8e0dbcdb98f4ba74e734ca494b696cea8ccd
|
canonicalized_ast: 622baae85ab7776fc38cff17465e8e0dbcdb98f4ba74e734ca494b696cea8ccd
|
||||||
type_inferenced_ast: c604cecb0efbae6b8ea3d69909c5decbb06d6a2e95ff67661f5936ef8fd951a5
|
type_inferenced_ast: f97b773504a230c42546d6a565b970fbf51ec293c15ee58d4f9dfa40b7a4a988
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: ba91ea172a2f753bf4a338f29fff05c358d4dc0cb1c2ef461d492ee4fe2a1114
|
initial_ast: ba91ea172a2f753bf4a338f29fff05c358d4dc0cb1c2ef461d492ee4fe2a1114
|
||||||
imports_resolved_ast: ba91ea172a2f753bf4a338f29fff05c358d4dc0cb1c2ef461d492ee4fe2a1114
|
imports_resolved_ast: ba91ea172a2f753bf4a338f29fff05c358d4dc0cb1c2ef461d492ee4fe2a1114
|
||||||
canonicalized_ast: 8d1beaecc785aa79a5a6bec47cf10426b9d3d87ccc15c359f12c7d3ee2a95561
|
canonicalized_ast: 8d1beaecc785aa79a5a6bec47cf10426b9d3d87ccc15c359f12c7d3ee2a95561
|
||||||
type_inferenced_ast: 520a83004a666274e62958b6e2025d11ed5e24d888b6bc0ded6d01ee9a3bc634
|
type_inferenced_ast: d69ef792ee9b73a3d486535216ade98bd500aff7061e5b3cb48e5f1ffd519286
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: fe7ca41c29d33107a4316b9c6788898217129937cbf1de0f2ea7566a360245f0
|
initial_ast: fe7ca41c29d33107a4316b9c6788898217129937cbf1de0f2ea7566a360245f0
|
||||||
imports_resolved_ast: fe7ca41c29d33107a4316b9c6788898217129937cbf1de0f2ea7566a360245f0
|
imports_resolved_ast: fe7ca41c29d33107a4316b9c6788898217129937cbf1de0f2ea7566a360245f0
|
||||||
canonicalized_ast: d2b30a9485e7166a0efde9d179432e481a4d40540e1b3eeec043b84d993e66df
|
canonicalized_ast: d2b30a9485e7166a0efde9d179432e481a4d40540e1b3eeec043b84d993e66df
|
||||||
type_inferenced_ast: 2c666d0e878095617bc562aa74de4fe069401b4a80ba8dba28a47a789f517ab5
|
type_inferenced_ast: 7f279d6a24e597f0d1e6dbc5d26db3bc0ac6dc8520b7b485f296824c2e872a0e
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 659e5fcdd16752c6e3504f821a5afd6f0756bd6b8641f127ba049c2a4c83a088
|
initial_ast: 659e5fcdd16752c6e3504f821a5afd6f0756bd6b8641f127ba049c2a4c83a088
|
||||||
imports_resolved_ast: 659e5fcdd16752c6e3504f821a5afd6f0756bd6b8641f127ba049c2a4c83a088
|
imports_resolved_ast: 659e5fcdd16752c6e3504f821a5afd6f0756bd6b8641f127ba049c2a4c83a088
|
||||||
canonicalized_ast: 8cf6113b757cfeee53554c67dd3f380f0f417032b8835259bf30076b19349f61
|
canonicalized_ast: 8cf6113b757cfeee53554c67dd3f380f0f417032b8835259bf30076b19349f61
|
||||||
type_inferenced_ast: d4106eb006385de5bf2a56a1ebaa25a65b048f77dda6fb9585c86a9260073585
|
type_inferenced_ast: 63445b0618aa26ad71f316dea01a0558be3462295c4ef7ddcc042a6098e80725
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 8c4a98dec3d2e9e826e3419c91a251e821861a146325b025c52ff15b5edefe1c
|
initial_ast: 8c4a98dec3d2e9e826e3419c91a251e821861a146325b025c52ff15b5edefe1c
|
||||||
imports_resolved_ast: 8c4a98dec3d2e9e826e3419c91a251e821861a146325b025c52ff15b5edefe1c
|
imports_resolved_ast: 8c4a98dec3d2e9e826e3419c91a251e821861a146325b025c52ff15b5edefe1c
|
||||||
canonicalized_ast: 8c4a98dec3d2e9e826e3419c91a251e821861a146325b025c52ff15b5edefe1c
|
canonicalized_ast: 8c4a98dec3d2e9e826e3419c91a251e821861a146325b025c52ff15b5edefe1c
|
||||||
type_inferenced_ast: 2497671092bacab8cb5d75177298a700100bfa8412a48a7115d178e5d9816a6b
|
type_inferenced_ast: a88491df0bd761c2c92882182087308683df773c06b6337d47e47658024ba6ea
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: 1f7de14429213b2b3b564d664c33e9cea134e1a157b861a1cf0ea1abc90b32f6
|
initial_ast: 842ec0aa120289fc341e19deefa59c7f78af032b1221b749323e0e4b6ce9023d
|
||||||
imports_resolved_ast: 1f7de14429213b2b3b564d664c33e9cea134e1a157b861a1cf0ea1abc90b32f6
|
imports_resolved_ast: 842ec0aa120289fc341e19deefa59c7f78af032b1221b749323e0e4b6ce9023d
|
||||||
canonicalized_ast: 94752f37ca7553267f341d2f96e657eb2fe6b5e403a4d3fb7d66d1662b81eb00
|
canonicalized_ast: c554b4086bcc2a245ee45c1a7ee7879c23dfab6872c8f0254bd258f1d78854b5
|
||||||
type_inferenced_ast: e675411217f3465fdc23bab3c2f50c2264452d198ab3dd2e8059e546e54312a4
|
type_inferenced_ast: 8aca5d3beb3f7988b97d7ee3ed5f5376e508e35b687bc70cc402824e3740afc9
|
||||||
|
@ -18,5 +18,5 @@ outputs:
|
|||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: c341e62f8a3940ddc9527bcd01c814f8d496a1f02ca903b080b6228d155af02b
|
initial_ast: c341e62f8a3940ddc9527bcd01c814f8d496a1f02ca903b080b6228d155af02b
|
||||||
imports_resolved_ast: c341e62f8a3940ddc9527bcd01c814f8d496a1f02ca903b080b6228d155af02b
|
imports_resolved_ast: c341e62f8a3940ddc9527bcd01c814f8d496a1f02ca903b080b6228d155af02b
|
||||||
canonicalized_ast: 60cd9f24460e06522814151af817c9d394c779477091aab2c77c77dfe228b611
|
canonicalized_ast: 3f982b126b30b7d4e6f69d186eae87e539ac99c186e3ffc95e101996c447aac6
|
||||||
type_inferenced_ast: 876f075ed034c8914b9f74f46f07bd6c2ed3e7d7f1ffb15e756da10e9ec9abf8
|
type_inferenced_ast: ca39452d2a0bfc4763004f6422de9c969c90bef10f6ec1ce47d71ce6fbf14d60
|
||||||
|
@ -18,5 +18,5 @@ outputs:
|
|||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: 5da09287f1d3a5e4ab57f8da2c8094df25c3b35614791e2f6e84a77b609f29b0
|
initial_ast: 5da09287f1d3a5e4ab57f8da2c8094df25c3b35614791e2f6e84a77b609f29b0
|
||||||
imports_resolved_ast: 5da09287f1d3a5e4ab57f8da2c8094df25c3b35614791e2f6e84a77b609f29b0
|
imports_resolved_ast: 5da09287f1d3a5e4ab57f8da2c8094df25c3b35614791e2f6e84a77b609f29b0
|
||||||
canonicalized_ast: de5114bff3425e0c67e9e70e3a0d02bdf2d6c3ed9108dac43a00b79d4db9b3d2
|
canonicalized_ast: ef7bf4fbec528e16a88b50e4c5b96f9e16a136fb06b9d7ba145641e22382e166
|
||||||
type_inferenced_ast: 9a6f5ee1784a1af0a04736e1b3bc886107bbddc5d45bbabd59812d083acacdea
|
type_inferenced_ast: cfec0af03e9a908d876dd84a977fbccb7ddbda93e4f26b2bb7c1e7349ef41c3f
|
||||||
|
@ -18,5 +18,5 @@ outputs:
|
|||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: 1dce719e850f6ca6a091fea163d5d6bb069bcdafeeed0a10fb332ba8837e6e5c
|
initial_ast: 1dce719e850f6ca6a091fea163d5d6bb069bcdafeeed0a10fb332ba8837e6e5c
|
||||||
imports_resolved_ast: 1dce719e850f6ca6a091fea163d5d6bb069bcdafeeed0a10fb332ba8837e6e5c
|
imports_resolved_ast: 1dce719e850f6ca6a091fea163d5d6bb069bcdafeeed0a10fb332ba8837e6e5c
|
||||||
canonicalized_ast: 3bd96f7e9530f426db4a2e12d5a93a5ebcafedbcb7b4549d08ad387fa15918d9
|
canonicalized_ast: c2e6a47b169e35f9d0eeb382b9ad3fbfb474dcfcce36f518a615bedd50f168dc
|
||||||
type_inferenced_ast: 6bbb246f57aa199b9ef31b61b6e858004617455efe22393892bf0c22f552d69a
|
type_inferenced_ast: ada2285ca841403ea8f299de603e6f83f001aa7c59f0ccdb798cf3ed874cbe1f
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: c2f6d0da67de691b14cffbdbe20eba613f2ea274c45aba4347045da2446b6af6
|
initial_ast: c2f6d0da67de691b14cffbdbe20eba613f2ea274c45aba4347045da2446b6af6
|
||||||
imports_resolved_ast: c2f6d0da67de691b14cffbdbe20eba613f2ea274c45aba4347045da2446b6af6
|
imports_resolved_ast: c2f6d0da67de691b14cffbdbe20eba613f2ea274c45aba4347045da2446b6af6
|
||||||
canonicalized_ast: c2f6d0da67de691b14cffbdbe20eba613f2ea274c45aba4347045da2446b6af6
|
canonicalized_ast: c2f6d0da67de691b14cffbdbe20eba613f2ea274c45aba4347045da2446b6af6
|
||||||
type_inferenced_ast: 3bf3d109f59519ecbfd601c36a8cb89cfb36e1ace395e361860023b8f93fc220
|
type_inferenced_ast: 66f38055929362798774a530c32dd375c979368f2ed3c7b0345dd8ecfefe3ea7
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
namespace: Compile
|
|
||||||
expectation: Pass
|
|
||||||
outputs:
|
|
||||||
- circuit:
|
|
||||||
num_public_variables: 0
|
|
||||||
num_private_variables: 1
|
|
||||||
num_constraints: 1
|
|
||||||
at: 042610d0fd1fe6d6ac112138f8755752f44c7d2a00f1b5960574d6da5cda393f
|
|
||||||
bt: e97756698880ab7555a959a5fb5c6b4e15bd64612aa677adbfe2d0bd91f0a83c
|
|
||||||
ct: cf1cbb66a638b4860a516671fb74850e6ccf787fe6c4c8d29e9c04efe880bd05
|
|
||||||
output:
|
|
||||||
- input_file: input/dummy.in
|
|
||||||
output:
|
|
||||||
registers:
|
|
||||||
r0:
|
|
||||||
type: bool
|
|
||||||
value: "true"
|
|
||||||
initial_ast: 80d3dbfdeb9d6fb6e9ba17ba028bd2bf71014b4353f34db9d69a66ee1d0914cf
|
|
||||||
canonicalized_ast: 80d3dbfdeb9d6fb6e9ba17ba028bd2bf71014b4353f34db9d69a66ee1d0914cf
|
|
||||||
type_inferenced_ast: bbad9d7593fb1aa2bcc25f2f2625ace659e18f293af35082ad39b1e3cd71e8b5
|
|
@ -22,4 +22,4 @@ outputs:
|
|||||||
initial_ast: f8b2853c4b5db8f5e8402455ceae54d8ae421c4b950d15fc88fe9f9c9a9701b8
|
initial_ast: f8b2853c4b5db8f5e8402455ceae54d8ae421c4b950d15fc88fe9f9c9a9701b8
|
||||||
imports_resolved_ast: f8b2853c4b5db8f5e8402455ceae54d8ae421c4b950d15fc88fe9f9c9a9701b8
|
imports_resolved_ast: f8b2853c4b5db8f5e8402455ceae54d8ae421c4b950d15fc88fe9f9c9a9701b8
|
||||||
canonicalized_ast: f8b2853c4b5db8f5e8402455ceae54d8ae421c4b950d15fc88fe9f9c9a9701b8
|
canonicalized_ast: f8b2853c4b5db8f5e8402455ceae54d8ae421c4b950d15fc88fe9f9c9a9701b8
|
||||||
type_inferenced_ast: 8a3cbc4e3f51c432179167c22247efecc49afe8990c5b2e5a1eb757d0f5adad9
|
type_inferenced_ast: 52232bc9ef6145283b66f274ab534f35ad5cbf76ed6396c34cf0d6bf59b0797c
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: d53a0267c4afe271c6488aeda9910433e3a947d96530ea1286eba511e6e8f17e
|
initial_ast: d53a0267c4afe271c6488aeda9910433e3a947d96530ea1286eba511e6e8f17e
|
||||||
imports_resolved_ast: d53a0267c4afe271c6488aeda9910433e3a947d96530ea1286eba511e6e8f17e
|
imports_resolved_ast: d53a0267c4afe271c6488aeda9910433e3a947d96530ea1286eba511e6e8f17e
|
||||||
canonicalized_ast: 86bc6722c866a18e2b4d022e67c82dfa0f20f1b4d86d2869f6267010ef45c0c6
|
canonicalized_ast: 86bc6722c866a18e2b4d022e67c82dfa0f20f1b4d86d2869f6267010ef45c0c6
|
||||||
type_inferenced_ast: 57202f3b3a4808ce13cce466b6e7a6b153c1950e6af6fcbe68bf04a4d95476f1
|
type_inferenced_ast: 0c7674288e3db92d39726e8d2964f7c03eeb8e27ec54d0cd558b20e976a48686
|
||||||
|
@ -16,7 +16,7 @@ outputs:
|
|||||||
r0:
|
r0:
|
||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: af29b4526e16fa59b0c58106f77bc4453a845480a04c82a321157d667c6d07c9
|
initial_ast: 44686de6ff7da19563c7435f977498fa070fe70394604f00891ac56919b49fc9
|
||||||
imports_resolved_ast: ecd27f76f14e754b00f5c1b4d3f14092e76775865933668c7072885b77067e86
|
imports_resolved_ast: 04931e9a33306909e081ee99676f78fea07a00a88fddea1b41b7f49fe01b8b74
|
||||||
canonicalized_ast: dedb5d6243d79db6a186b4cc8bfbf652c8dcf982c4fc8a32b4bf51e8cf689253
|
canonicalized_ast: 54f102c09881160287bb9ddd18a8b827b1fbd7a5e7f65a6bf930c2e1d289895a
|
||||||
type_inferenced_ast: 316391d0eec112e0fea34a14f2388c320f99d5da63211aea90cd7ca92eb81cf9
|
type_inferenced_ast: 72cfbfa0e53d0f93ef984949371141b4ed9adb0b4663775a0a973cd04681a826
|
||||||
|
@ -17,6 +17,6 @@ outputs:
|
|||||||
type: bool
|
type: bool
|
||||||
value: "true"
|
value: "true"
|
||||||
initial_ast: ae6826642faa492e34507695dbd11e5b44c319aecb0b1e78b29ce03ae446d907
|
initial_ast: ae6826642faa492e34507695dbd11e5b44c319aecb0b1e78b29ce03ae446d907
|
||||||
imports_resolved_ast: 38cdae0ceb9feea0550ae88df86e9d0676c592fdc7a0a37f56da8c2d62dd3199
|
imports_resolved_ast: 20295c05b1768223eff4982abafe03e060196400ccf046df15a48a0a87c5fcdb
|
||||||
canonicalized_ast: 38cdae0ceb9feea0550ae88df86e9d0676c592fdc7a0a37f56da8c2d62dd3199
|
canonicalized_ast: 20295c05b1768223eff4982abafe03e060196400ccf046df15a48a0a87c5fcdb
|
||||||
type_inferenced_ast: 93e0e825fc6daeabfd3891441979f4575d87a019996de7ce43241d1b535c5604
|
type_inferenced_ast: edfcbd28230c0bae0b1e7fd32d8e72898368bc5ea7fe58cc285bb5c7e0588d24
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
namespace: Compile
|
|
||||||
expectation: Fail
|
|
||||||
outputs:
|
|
||||||
- aborting due to syntax error
|
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
namespace: Compile
|
|
||||||
expectation: Fail
|
|
||||||
outputs:
|
|
||||||
- aborting due to syntax error
|
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
namespace: Compile
|
|
||||||
expectation: Fail
|
|
||||||
outputs:
|
|
||||||
- " --> compiler-test:3:15\n |\n 3 | function main(a: u32) {\n | ^\n |\n = expected data type `u32`, found `u8`"
|
|
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
namespace: Compile
|
|
||||||
expectation: Fail
|
|
||||||
outputs:
|
|
||||||
- aborting due to syntax error
|
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: dc7f40a1cfc4daa659784bf538f1273145b430875116ef1aad7fd778dcb5f736
|
initial_ast: dc7f40a1cfc4daa659784bf538f1273145b430875116ef1aad7fd778dcb5f736
|
||||||
imports_resolved_ast: dc7f40a1cfc4daa659784bf538f1273145b430875116ef1aad7fd778dcb5f736
|
imports_resolved_ast: dc7f40a1cfc4daa659784bf538f1273145b430875116ef1aad7fd778dcb5f736
|
||||||
canonicalized_ast: dc7f40a1cfc4daa659784bf538f1273145b430875116ef1aad7fd778dcb5f736
|
canonicalized_ast: dc7f40a1cfc4daa659784bf538f1273145b430875116ef1aad7fd778dcb5f736
|
||||||
type_inferenced_ast: f86a95c627e69d54fd6f1f651eda77cfc1ac1fab33b1ef8bbe5bf511a8c4beb7
|
type_inferenced_ast: f1d1997e4d2a975664689164c1113ab8ac1e0933910410324aeb204a72da3b12
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 6b051c3f9ce82efb30d3ba89764cc9c2607a126cb0cede72ad55ecda6c9d996d
|
initial_ast: 6b051c3f9ce82efb30d3ba89764cc9c2607a126cb0cede72ad55ecda6c9d996d
|
||||||
imports_resolved_ast: 6b051c3f9ce82efb30d3ba89764cc9c2607a126cb0cede72ad55ecda6c9d996d
|
imports_resolved_ast: 6b051c3f9ce82efb30d3ba89764cc9c2607a126cb0cede72ad55ecda6c9d996d
|
||||||
canonicalized_ast: 6b051c3f9ce82efb30d3ba89764cc9c2607a126cb0cede72ad55ecda6c9d996d
|
canonicalized_ast: 6b051c3f9ce82efb30d3ba89764cc9c2607a126cb0cede72ad55ecda6c9d996d
|
||||||
type_inferenced_ast: 3c04200d560739b0d551204b65e56abc11f26843b99aa0361362f61f0d6a3328
|
type_inferenced_ast: 945f580a5c7a138000c0163b32e004c52e048ddf2166d0c9cfd67cd9485dc886
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 6fce132965ff40126f6175d2abe5b8598004e90cdb29c4707f7c63dbe1093474
|
initial_ast: 6fce132965ff40126f6175d2abe5b8598004e90cdb29c4707f7c63dbe1093474
|
||||||
imports_resolved_ast: 6fce132965ff40126f6175d2abe5b8598004e90cdb29c4707f7c63dbe1093474
|
imports_resolved_ast: 6fce132965ff40126f6175d2abe5b8598004e90cdb29c4707f7c63dbe1093474
|
||||||
canonicalized_ast: 6fce132965ff40126f6175d2abe5b8598004e90cdb29c4707f7c63dbe1093474
|
canonicalized_ast: 6fce132965ff40126f6175d2abe5b8598004e90cdb29c4707f7c63dbe1093474
|
||||||
type_inferenced_ast: 75cff35e24806b8a66431668c319a96e95f5106a8fe513eb53abb264beab4390
|
type_inferenced_ast: e79e7662148ee3db46c9d52b751fb80a13213b22065e4a5008a7443ae85419e0
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: a155141331da2d7bdaa11ae738d6ca2e1d62d875c872b8b8213184d989cc8baa
|
initial_ast: a155141331da2d7bdaa11ae738d6ca2e1d62d875c872b8b8213184d989cc8baa
|
||||||
imports_resolved_ast: a155141331da2d7bdaa11ae738d6ca2e1d62d875c872b8b8213184d989cc8baa
|
imports_resolved_ast: a155141331da2d7bdaa11ae738d6ca2e1d62d875c872b8b8213184d989cc8baa
|
||||||
canonicalized_ast: a155141331da2d7bdaa11ae738d6ca2e1d62d875c872b8b8213184d989cc8baa
|
canonicalized_ast: a155141331da2d7bdaa11ae738d6ca2e1d62d875c872b8b8213184d989cc8baa
|
||||||
type_inferenced_ast: b4969327ce0ee30ab1526ce3b2479a7bf6efa38cb9616477f854cd28b1faf61a
|
type_inferenced_ast: 096e1372719be459b86ad5dea6e2e62f3afc350a204c382d4bebb835fa2dc615
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 71448f3f5387cd67a8d8c0b974fa93cf81cdfb72ae0d8f9499c9c5e478a0d15b
|
initial_ast: 71448f3f5387cd67a8d8c0b974fa93cf81cdfb72ae0d8f9499c9c5e478a0d15b
|
||||||
imports_resolved_ast: 71448f3f5387cd67a8d8c0b974fa93cf81cdfb72ae0d8f9499c9c5e478a0d15b
|
imports_resolved_ast: 71448f3f5387cd67a8d8c0b974fa93cf81cdfb72ae0d8f9499c9c5e478a0d15b
|
||||||
canonicalized_ast: 16d4030e454d8c83d2073afaaa7e8fa1eb40d36026909144db29d311ab005f46
|
canonicalized_ast: 16d4030e454d8c83d2073afaaa7e8fa1eb40d36026909144db29d311ab005f46
|
||||||
type_inferenced_ast: a446d016451281bab9b21f8a86250b4a3fd8a9b6f917e855e5dae816362c8925
|
type_inferenced_ast: 2d0489a411d4336c01958f074b96957f3f8ae682b0046ffadf9cbddf66f7f168
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 83da7a1bf2887678937835ac77b33a0e21dd3b04d5739146f16a559b8dc3c6ab
|
initial_ast: 83da7a1bf2887678937835ac77b33a0e21dd3b04d5739146f16a559b8dc3c6ab
|
||||||
imports_resolved_ast: 83da7a1bf2887678937835ac77b33a0e21dd3b04d5739146f16a559b8dc3c6ab
|
imports_resolved_ast: 83da7a1bf2887678937835ac77b33a0e21dd3b04d5739146f16a559b8dc3c6ab
|
||||||
canonicalized_ast: 83da7a1bf2887678937835ac77b33a0e21dd3b04d5739146f16a559b8dc3c6ab
|
canonicalized_ast: 83da7a1bf2887678937835ac77b33a0e21dd3b04d5739146f16a559b8dc3c6ab
|
||||||
type_inferenced_ast: bd7710479d2a5bb2da060358fc13379dc1d7e334ead42519315bce0cd0db30c0
|
type_inferenced_ast: b0d9f15a133962134f094c0aa682d7f2f77085b9cad845b8af05cf48e9b7b9ca
|
||||||
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 108be85422345d78a93d2e36e633c3a15a1465e7c868f65e2925a47e0b5f691a
|
initial_ast: 108be85422345d78a93d2e36e633c3a15a1465e7c868f65e2925a47e0b5f691a
|
||||||
imports_resolved_ast: 108be85422345d78a93d2e36e633c3a15a1465e7c868f65e2925a47e0b5f691a
|
imports_resolved_ast: 108be85422345d78a93d2e36e633c3a15a1465e7c868f65e2925a47e0b5f691a
|
||||||
canonicalized_ast: d986fa603a5031dbd5034507d05df038fe99f60f603f7ca4b2d2c8ac2b409e7a
|
canonicalized_ast: d986fa603a5031dbd5034507d05df038fe99f60f603f7ca4b2d2c8ac2b409e7a
|
||||||
type_inferenced_ast: c95a6049c552c5b018f423fc1999b433cf94429c6edc32e2b55d326b78e36812
|
type_inferenced_ast: 2f852c7591f1790075fe73a53f9b2ceb3bca69a8cc7ef1d27d70e5f53e8b144f
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
namespace: Compile
|
|
||||||
expectation: Pass
|
|
||||||
outputs:
|
|
||||||
- circuit:
|
|
||||||
num_public_variables: 0
|
|
||||||
num_private_variables: 1
|
|
||||||
num_constraints: 1
|
|
||||||
at: 042610d0fd1fe6d6ac112138f8755752f44c7d2a00f1b5960574d6da5cda393f
|
|
||||||
bt: e97756698880ab7555a959a5fb5c6b4e15bd64612aa677adbfe2d0bd91f0a83c
|
|
||||||
ct: cf1cbb66a638b4860a516671fb74850e6ccf787fe6c4c8d29e9c04efe880bd05
|
|
||||||
output:
|
|
||||||
- input_file: inputs/dummy.in
|
|
||||||
output:
|
|
||||||
registers:
|
|
||||||
r0:
|
|
||||||
type: bool
|
|
||||||
value: "true"
|
|
||||||
initial_ast: 75fbb3ed1613fbf39ce803ff903befe209b26a953ba8db1d68e35066655d96e6
|
|
||||||
canonicalized_ast: a96cae2c9e347245e07c63b5c94cf43497063c3f548c615627da4b1775e9a17b
|
|
||||||
type_inferenced_ast: dc663974ed1cce7b15c35eda29c9b1af5426eafddbd108b5a03cd7071ad4a6bc
|
|
@ -19,4 +19,4 @@ outputs:
|
|||||||
initial_ast: 3aa0745060289c1a1af4e66265f8a92a89caff1731dc70d8c6a59798152f1a38
|
initial_ast: 3aa0745060289c1a1af4e66265f8a92a89caff1731dc70d8c6a59798152f1a38
|
||||||
imports_resolved_ast: 3aa0745060289c1a1af4e66265f8a92a89caff1731dc70d8c6a59798152f1a38
|
imports_resolved_ast: 3aa0745060289c1a1af4e66265f8a92a89caff1731dc70d8c6a59798152f1a38
|
||||||
canonicalized_ast: a1acfd3169b8f72975cd7cc9ef2059cd8fb1ed5ea0a7f51911d3365b52375e36
|
canonicalized_ast: a1acfd3169b8f72975cd7cc9ef2059cd8fb1ed5ea0a7f51911d3365b52375e36
|
||||||
type_inferenced_ast: 55d57669ceeb95e039cb000e3673f7590c2bd69bb67786057977d158ab77dbdb
|
type_inferenced_ast: f84470f86eadd14d2a9a56e4f1c2ff349610064704c30b169f15f0bd82b61959
|
||||||
|
@ -18,7 +18,7 @@ outputs:
|
|||||||
inner:
|
inner:
|
||||||
Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"y as id\\\"}\"}"
|
Identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":1,\\\"col_stop\\\":2,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"y as id\\\"}\"}"
|
||||||
target_type:
|
target_type:
|
||||||
CircuitOrAlias: "{\"name\":\"id\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"y as id\\\"}\"}"
|
Identifier: "{\"name\":\"id\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":6,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"y as id\\\"}\"}"
|
||||||
span:
|
span:
|
||||||
line_start: 1
|
line_start: 1
|
||||||
line_stop: 1
|
line_stop: 1
|
||||||
|
@ -19,7 +19,7 @@ outputs:
|
|||||||
const_: false
|
const_: false
|
||||||
mutable: true
|
mutable: true
|
||||||
type_:
|
type_:
|
||||||
CircuitOrAlias: "{\"name\":\"MyCircuit\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":15,\\\"col_stop\\\":24,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: MyCircuit) {\\\"}\"}"
|
Identifier: "{\"name\":\"MyCircuit\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":15,\\\"col_stop\\\":24,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: MyCircuit) {\\\"}\"}"
|
||||||
span:
|
span:
|
||||||
line_start: 3
|
line_start: 3
|
||||||
line_stop: 3
|
line_stop: 3
|
||||||
|
Loading…
Reference in New Issue
Block a user