Merge pull request #1746 from AleoHQ/feature/rename-const-params-to-constant

[Impl] Rename const fn args to constant
This commit is contained in:
Collin Chin 2022-04-12 14:16:05 -07:00 committed by GitHub
commit 49306f6132
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 442 additions and 380 deletions

View File

@ -22,7 +22,7 @@ use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum ParamMode { pub enum ParamMode {
Const, Constant,
Private, Private,
Public, Public,
} }
@ -32,7 +32,7 @@ impl fmt::Display for ParamMode {
use ParamMode::*; use ParamMode::*;
match self { match self {
Const => write!(f, "const"), Constant => write!(f, "constant"),
Private => write!(f, "private"), Private => write!(f, "private"),
Public => write!(f, "public"), Public => write!(f, "public"),
} }

View File

@ -66,13 +66,24 @@ impl ParserContext<'_> {
/// ///
pub fn parse_function_parameter_mode(&mut self) -> Result<ParamMode> { pub fn parse_function_parameter_mode(&mut self) -> Result<ParamMode> {
let public = self.eat(Token::Public); let public = self.eat(Token::Public);
let constant = self.eat(Token::Constant);
let const_ = self.eat(Token::Const); let const_ = self.eat(Token::Const);
match (public, const_) { if const_.is_some() {
(None, Some(_)) => Ok(ParamMode::Const), self.emit_err(ParserError::const_parameter_or_input(&const_.as_ref().unwrap().span));
(None, None) => Ok(ParamMode::Private), }
(Some(_), None) => Ok(ParamMode::Public),
(Some(p), Some(c)) => Err(ParserError::inputs_multiple_variable_types_specified(&(p.span + c.span)).into()), match (public, constant, const_) {
(None, Some(_), None) => Ok(ParamMode::Constant),
(None, None, Some(_)) => Ok(ParamMode::Constant),
(None, None, None) => Ok(ParamMode::Private),
(Some(_), None, None) => Ok(ParamMode::Public),
(Some(m1), Some(m2), None) | (Some(m1), None, Some(m2)) | (None, Some(m1), Some(m2)) => {
Err(ParserError::inputs_multiple_variable_types_specified(&(m1.span + m2.span)).into())
}
(Some(m1), Some(m2), Some(m3)) => {
Err(ParserError::inputs_multiple_variable_types_specified(&(m1.span + m2.span + m3.span)).into())
}
} }
} }

View File

@ -49,7 +49,7 @@ impl ParserContext<'_> {
let mut definitions = Vec::new(); let mut definitions = Vec::new();
while let Some(SpannedToken { while let Some(SpannedToken {
token: Token::Const | Token::Public | Token::Ident(_), token: Token::Const | Token::Constant | Token::Public | Token::Ident(_),
.. ..
}) = self.peek_option() }) = self.peek_option()
{ {

View File

@ -26,7 +26,7 @@ impl ParserContext<'_> {
/// Returns an [`Identifier`] AST node if the given [`Expression`] AST node evaluates to an /// Returns an [`Identifier`] AST node if the given [`Expression`] AST node evaluates to an
/// identifier access. The access is stored in the given accesses. /// identifier access. The access is stored in the given accesses.
/// ///
pub fn construct_assignee_access(expr: Expression, _accesses: &mut Vec<AssigneeAccess>) -> Result<Identifier> { pub fn construct_assignee_access(expr: Expression, _accesses: &mut [AssigneeAccess]) -> Result<Identifier> {
match expr { match expr {
Expression::Identifier(id) => Ok(id), Expression::Identifier(id) => Ok(id),
_ => return Err(ParserError::invalid_assignment_target(expr.span()).into()), _ => return Err(ParserError::invalid_assignment_target(expr.span()).into()),

View File

@ -393,6 +393,7 @@ impl Token {
"char" => Token::Char, "char" => Token::Char,
"console" => Token::Console, "console" => Token::Console,
"const" => Token::Const, "const" => Token::Const,
"constant" => Token::Constant,
"else" => Token::Else, "else" => Token::Else,
"false" => Token::False, "false" => Token::False,
"field" => Token::Field, "field" => Token::Field,

View File

@ -183,8 +183,7 @@ mod tests {
? ?
// test // test
/* test */ /* test */
//"# //"#,
.into(),
) )
.unwrap(); .unwrap();
let mut output = String::new(); let mut output = String::new();
@ -213,7 +212,7 @@ ppp test
test */ test */
test test
"#; "#;
let tokens = tokenize("test_path", raw.into()).unwrap(); let tokens = tokenize("test_path", raw).unwrap();
let mut line_indicies = vec![0]; let mut line_indicies = vec![0];
for (i, c) in raw.chars().enumerate() { for (i, c) in raw.chars().enumerate() {
if c == '\n' { if c == '\n' {

View File

@ -116,6 +116,8 @@ pub enum Token {
Console, Console,
/// Const variable and a const function. /// Const variable and a const function.
Const, Const,
/// Constant parameter
Constant,
Else, Else,
For, For,
Function, Function,
@ -180,6 +182,7 @@ impl Token {
Token::Char => sym::char, Token::Char => sym::char,
Token::Console => sym::console, Token::Console => sym::console,
Token::Const => sym::Const, Token::Const => sym::Const,
Token::Constant => sym::Constant,
Token::Else => sym::Else, Token::Else => sym::Else,
Token::False => sym::False, Token::False => sym::False,
Token::Field => sym::field, Token::Field => sym::field,
@ -281,6 +284,7 @@ impl fmt::Display for Token {
Console => write!(f, "console"), Console => write!(f, "console"),
Const => write!(f, "const"), Const => write!(f, "const"),
Constant => write!(f, "constant"),
Else => write!(f, "else"), Else => write!(f, "else"),
For => write!(f, "for"), For => write!(f, "for"),
Function => write!(f, "function"), Function => write!(f, "function"),

Binary file not shown.

View File

@ -69,6 +69,7 @@ keyword = %s"address"
/ %s"char" / %s"char"
/ %s"console" / %s"console"
/ %s"const" / %s"const"
/ %s"constant"
/ %s"else" / %s"else"
/ %s"field" / %s"field"
/ %s"for" / %s"for"
@ -317,7 +318,7 @@ function-declaration = %s"function" identifier
function-parameters = function-parameter *( "," function-parameter ) [ "," ] function-parameters = function-parameter *( "," function-parameter ) [ "," ]
function-parameter = [ %s"public" / %s"const" ] identifier ":" type function-parameter = [ %s"public" / %s"constant" / %s"const" ] identifier ":" type
declaration = function-declaration declaration = function-declaration

View File

@ -366,4 +366,12 @@ create_errors!(
msg: "A parameter cannot be both public and const.", msg: "A parameter cannot be both public and const.",
help: None, help: None,
} }
/// For when a user used const on a parameter or input instead of constant.
@formatted
const_parameter_or_input {
args: (),
msg: "`constant` is preferred over `const` for function parameters to indicate a R1CS constant.",
help: None,
}
); );

View File

@ -68,7 +68,7 @@ fn read_manifest_file(path: &Path) -> String {
/// Read the manifest file and check that the remote format is updated. /// Read the manifest file and check that the remote format is updated.
fn remote_is_updated(path: &Path) -> bool { fn remote_is_updated(path: &Path) -> bool {
let manifest_string = read_manifest_file(&path); let manifest_string = read_manifest_file(path);
for line in manifest_string.lines() { for line in manifest_string.lines() {
if line.starts_with("remote") { if line.starts_with("remote") {
return false; return false;
@ -80,7 +80,7 @@ fn remote_is_updated(path: &Path) -> bool {
/// Read the manifest file and check that the project format is updated. /// Read the manifest file and check that the project format is updated.
fn project_is_updated(path: &Path) -> bool { fn project_is_updated(path: &Path) -> bool {
let manifest_string = read_manifest_file(&path); let manifest_string = read_manifest_file(path);
!manifest_string.contains(OLD_PROJECT_FORMAT) && manifest_string.contains(NEW_PROJECT_FORMAT) !manifest_string.contains(OLD_PROJECT_FORMAT) && manifest_string.contains(NEW_PROJECT_FORMAT)
} }

View File

@ -111,6 +111,7 @@ symbols! {
CoreFunction, CoreFunction,
console, console,
Const: "const", Const: "const",
Constant,
Else: "else", Else: "else",
error, error,
False: "false", False: "false",

View File

@ -5,21 +5,21 @@ outputs:
- name: "" - name: ""
expected_input: [] expected_input: []
functions: functions:
"{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(const y: u32) {\\\"}\"}": "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(constant y: u32) {\\\"}\"}":
identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(const y: u32) {\\\"}\"}" identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(constant y: u32) {\\\"}\"}"
input: input:
- Variable: - Variable:
identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(const y: u32) {\\\"}\"}" identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":21,\\\"col_stop\\\":22,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(constant y: u32) {\\\"}\"}"
mode: Const mode: Constant
type_: type_:
IntegerType: U32 IntegerType: U32
span: span:
line_start: 3 line_start: 3
line_stop: 3 line_stop: 3
col_start: 18 col_start: 21
col_stop: 19 col_stop: 22
path: "" path: ""
content: "function x(const y: u32) {" content: "function x(constant y: u32) {"
const_: false const_: false
output: ~ output: ~
core_mapping: ~ core_mapping: ~
@ -112,17 +112,17 @@ outputs:
span: span:
line_start: 3 line_start: 3
line_stop: 7 line_stop: 7
col_start: 26 col_start: 29
col_stop: 2 col_stop: 2
path: "" path: ""
content: "function x(const y: u32) {\n ...\n ...\n ...\n}" content: "function x(constant y: u32) {\n ...\n ...\n ...\n}"
span: span:
line_start: 3 line_start: 3
line_stop: 7 line_stop: 7
col_start: 1 col_start: 1
col_stop: 2 col_stop: 2
path: "" path: ""
content: "function x(const y: u32) {\n ...\n ...\n ...\n}" content: "function x(constant y: u32) {\n ...\n ...\n ...\n}"
"{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":9,\\\"line_stop\\\":9,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function main(y: bool) -> bool {\\\"}\"}": "{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":9,\\\"line_stop\\\":9,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function main(y: bool) -> bool {\\\"}\"}":
identifier: "{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":9,\\\"line_stop\\\":9,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function main(y: bool) -> bool {\\\"}\"}" identifier: "{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":9,\\\"line_stop\\\":9,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function main(y: bool) -> bool {\\\"}\"}"
input: input:

View File

@ -2,4 +2,4 @@
namespace: Parse namespace: Parse
expectation: Fail expectation: Fail
outputs: outputs:
- "Error [EPAR0370009]: unexpected string: expected 'ident', got 'input'\n --> test:3:18\n |\n 3 | function x(const input) {\n | ^^^^^" - "Error [EPAR0370042]: `constant` is preferred over `const` for function parameters to indicate a R1CS constant.\n --> test:3:12\n |\n 3 | function x(const input) {\n | ^^^^^\nError [EPAR0370009]: unexpected string: expected 'ident', got 'input'\n --> test:3:18\n |\n 3 | function x(const input) {\n | ^^^^^"

View File

@ -5,11 +5,11 @@ outputs:
- name: "" - name: ""
expected_input: [] expected_input: []
functions: functions:
"{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: u32, const y: i32) {\\\"}\"}": "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: u32, constant y: i32) {\\\"}\"}":
identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: u32, const y: i32) {\\\"}\"}" identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: u32, constant y: i32) {\\\"}\"}"
input: input:
- Variable: - Variable:
identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: u32, const y: i32) {\\\"}\"}" identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":12,\\\"col_stop\\\":13,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: u32, constant y: i32) {\\\"}\"}"
mode: Private mode: Private
type_: type_:
IntegerType: U32 IntegerType: U32
@ -19,19 +19,19 @@ outputs:
col_start: 12 col_start: 12
col_stop: 13 col_stop: 13
path: "" path: ""
content: "function x(x: u32, const y: i32) {" content: "function x(x: u32, constant y: i32) {"
- Variable: - Variable:
identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":26,\\\"col_stop\\\":27,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: u32, const y: i32) {\\\"}\"}" identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":3,\\\"line_stop\\\":3,\\\"col_start\\\":29,\\\"col_stop\\\":30,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(x: u32, constant y: i32) {\\\"}\"}"
mode: Const mode: Constant
type_: type_:
IntegerType: I32 IntegerType: I32
span: span:
line_start: 3 line_start: 3
line_stop: 3 line_stop: 3
col_start: 26 col_start: 29
col_stop: 27 col_stop: 30
path: "" path: ""
content: "function x(x: u32, const y: i32) {" content: "function x(x: u32, constant y: i32) {"
const_: false const_: false
output: ~ output: ~
core_mapping: ~ core_mapping: ~
@ -59,44 +59,44 @@ outputs:
span: span:
line_start: 3 line_start: 3
line_stop: 5 line_stop: 5
col_start: 34 col_start: 37
col_stop: 2 col_stop: 2
path: "" path: ""
content: "function x(x: u32, const y: i32) {\n ...\n}" content: "function x(x: u32, constant y: i32) {\n ...\n}"
span: span:
line_start: 3 line_start: 3
line_stop: 5 line_stop: 5
col_start: 1 col_start: 1
col_stop: 2 col_stop: 2
path: "" path: ""
content: "function x(x: u32, const y: i32) {\n ...\n}" content: "function x(x: u32, constant y: i32) {\n ...\n}"
"{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(const x: u32, y: i32) {\\\"}\"}": "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(constant x: u32, y: i32) {\\\"}\"}":
identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(const x: u32, y: i32) {\\\"}\"}" identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(constant x: u32, y: i32) {\\\"}\"}"
input: input:
- Variable: - Variable:
identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":18,\\\"col_stop\\\":19,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(const x: u32, y: i32) {\\\"}\"}" identifier: "{\"name\":\"x\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":21,\\\"col_stop\\\":22,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(constant x: u32, y: i32) {\\\"}\"}"
mode: Const mode: Constant
type_: type_:
IntegerType: U32 IntegerType: U32
span: span:
line_start: 7 line_start: 7
line_stop: 7 line_stop: 7
col_start: 18 col_start: 21
col_stop: 19 col_stop: 22
path: "" path: ""
content: "function x(const x: u32, y: i32) {" content: "function x(constant x: u32, y: i32) {"
- Variable: - Variable:
identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":26,\\\"col_stop\\\":27,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(const x: u32, y: i32) {\\\"}\"}" identifier: "{\"name\":\"y\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":29,\\\"col_stop\\\":30,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"function x(constant x: u32, y: i32) {\\\"}\"}"
mode: Private mode: Private
type_: type_:
IntegerType: I32 IntegerType: I32
span: span:
line_start: 7 line_start: 7
line_stop: 7 line_stop: 7
col_start: 26 col_start: 29
col_stop: 27 col_stop: 30
path: "" path: ""
content: "function x(const x: u32, y: i32) {" content: "function x(constant x: u32, y: i32) {"
const_: false const_: false
output: ~ output: ~
core_mapping: ~ core_mapping: ~
@ -124,14 +124,14 @@ outputs:
span: span:
line_start: 7 line_start: 7
line_stop: 9 line_stop: 9
col_start: 34 col_start: 37
col_stop: 2 col_stop: 2
path: "" path: ""
content: "function x(const x: u32, y: i32) {\n ...\n}" content: "function x(constant x: u32, y: i32) {\n ...\n}"
span: span:
line_start: 7 line_start: 7
line_stop: 9 line_stop: 9
col_start: 1 col_start: 1
col_stop: 2 col_stop: 2
path: "" path: ""
content: "function x(const x: u32, y: i32) {\n ...\n}" content: "function x(constant x: u32, y: i32) {\n ...\n}"

View File

@ -2,4 +2,4 @@
namespace: Parse namespace: Parse
expectation: Fail expectation: Fail
outputs: outputs:
- "Error [EPAR0370009]: unexpected string: expected 'ident', got 'public'\n --> test:3:26\n |\n 3 | function x(x: u32, const public y: i32) {\n | ^^^^^^" - "Error [EPAR0370042]: `constant` is preferred over `const` for function parameters to indicate a R1CS constant.\n --> test:3:20\n |\n 3 | function x(x: u32, const public y: i32) {\n | ^^^^^\nError [EPAR0370009]: unexpected string: expected 'ident', got 'public'\n --> test:3:26\n |\n 3 | function x(x: u32, const public y: i32) {\n | ^^^^^^"

View File

@ -2,4 +2,4 @@
namespace: Parse namespace: Parse
expectation: Fail expectation: Fail
outputs: outputs:
- "Error [EPAR0370041]: A parameter cannot be both public and const.\n --> test:3:20\n |\n 3 | function x(x: u32, public const y: i32) {\n | ^^^^^^^^^^^^" - "Error [EPAR0370042]: `constant` is preferred over `const` for function parameters to indicate a R1CS constant.\n --> test:3:27\n |\n 3 | function x(x: u32, public const y: i32) {\n | ^^^^^\nError [EPAR0370041]: A parameter cannot be both public and const.\n --> test:3:20\n |\n 3 | function x(x: u32, public const y: i32) {\n | ^^^^^^^^^^^^"

View File

@ -1,275 +1,5 @@
--- ---
namespace: Input namespace: Input
expectation: Pass expectation: Fail
outputs: outputs:
- sections: - "Error [EPAR0370042]: `constant` is preferred over `const` for function parameters to indicate a R1CS constant.\n --> test:4:1\n |\n 4 | const a: bool = true;\n | ^^^^^\nError [EPAR0370042]: `constant` is preferred over `const` for function parameters to indicate a R1CS constant.\n --> test:5:1\n |\n 5 | const b: u8 = 2;\n | ^^^^^\nError [EPAR0370042]: `constant` is preferred over `const` for function parameters to indicate a R1CS constant.\n --> test:6:1\n |\n 6 | const c: field = 0;\n | ^^^^^\nError [EPAR0370042]: `constant` is preferred over `const` for function parameters to indicate a R1CS constant.\n --> test:7:1\n |\n 7 | const d: group = (0, 1)group;\n | ^^^^^\nError [EPAR0370042]: `constant` is preferred over `const` for function parameters to indicate a R1CS constant.\n --> test:8:1\n |\n 8 | const e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;\n | ^^^^^"
- name: main
definitions:
- mode: Const
type_: Boolean
name: "{\"name\":\"a\",\"span\":\"{\\\"line_start\\\":4,\\\"line_stop\\\":4,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"const a: bool = true; \\\"}\"}"
value:
Value:
Boolean:
- "true"
- span:
line_start: 4
line_stop: 4
col_start: 18
col_stop: 22
path: ""
content: "const a: bool = true; "
span:
line_start: 4
line_stop: 4
col_start: 10
col_stop: 14
path: ""
content: "const a: bool = true; "
- mode: Const
type_:
IntegerType: U8
name: "{\"name\":\"b\",\"span\":\"{\\\"line_start\\\":5,\\\"line_stop\\\":5,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"const b: u8 = 2; \\\"}\"}"
value:
Value:
Implicit:
- "2"
- span:
line_start: 5
line_stop: 5
col_start: 18
col_stop: 19
path: ""
content: "const b: u8 = 2; "
span:
line_start: 5
line_stop: 5
col_start: 10
col_stop: 12
path: ""
content: "const b: u8 = 2; "
- mode: Const
type_: Field
name: "{\"name\":\"c\",\"span\":\"{\\\"line_start\\\":6,\\\"line_stop\\\":6,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"const c: field = 0; \\\"}\"}"
value:
Value:
Implicit:
- "0"
- span:
line_start: 6
line_stop: 6
col_start: 18
col_stop: 19
path: ""
content: "const c: field = 0; "
span:
line_start: 6
line_stop: 6
col_start: 10
col_stop: 15
path: ""
content: "const c: field = 0; "
- mode: Const
type_: Group
name: "{\"name\":\"d\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"const d: group = (0, 1)group; \\\"}\"}"
value:
Value:
Group:
Tuple:
x:
Number:
- "0"
- span:
line_start: 7
line_stop: 7
col_start: 19
col_stop: 20
path: ""
content: "const d: group = (0, 1)group; "
y:
Number:
- "1"
- span:
line_start: 7
line_stop: 7
col_start: 22
col_stop: 23
path: ""
content: "const d: group = (0, 1)group; "
span:
line_start: 7
line_stop: 7
col_start: 19
col_stop: 29
path: ""
content: "const d: group = (0, 1)group; "
span:
line_start: 7
line_stop: 7
col_start: 10
col_stop: 15
path: ""
content: "const d: group = (0, 1)group; "
- mode: Const
type_: Address
name: "{\"name\":\"e\",\"span\":\"{\\\"line_start\\\":8,\\\"line_stop\\\":8,\\\"col_start\\\":7,\\\"col_stop\\\":8,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"const e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;\\\"}\"}"
value:
Value:
Address:
- aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8
- span:
line_start: 8
line_stop: 8
col_start: 20
col_stop: 83
path: ""
content: "const e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;"
span:
line_start: 8
line_stop: 8
col_start: 10
col_stop: 17
path: ""
content: "const e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;"
span:
line_start: 3
line_stop: 3
col_start: 2
col_stop: 6
path: ""
content: "[main]"
- name: registers
definitions:
- mode: Private
type_: Boolean
name: "{\"name\":\"r0\",\"span\":\"{\\\"line_start\\\":11,\\\"line_stop\\\":11,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r0: bool = true; \\\"}\"}"
value:
Value:
Boolean:
- "true"
- span:
line_start: 11
line_stop: 11
col_start: 13
col_stop: 17
path: ""
content: "r0: bool = true; "
span:
line_start: 11
line_stop: 11
col_start: 5
col_stop: 9
path: ""
content: "r0: bool = true; "
- mode: Private
type_:
IntegerType: U8
name: "{\"name\":\"r1\",\"span\":\"{\\\"line_start\\\":12,\\\"line_stop\\\":12,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r1: u8 = 2; \\\"}\"}"
value:
Value:
Implicit:
- "2"
- span:
line_start: 12
line_stop: 12
col_start: 13
col_stop: 14
path: ""
content: "r1: u8 = 2; "
span:
line_start: 12
line_stop: 12
col_start: 5
col_stop: 7
path: ""
content: "r1: u8 = 2; "
- mode: Private
type_: Field
name: "{\"name\":\"r2\",\"span\":\"{\\\"line_start\\\":13,\\\"line_stop\\\":13,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r2: field = 0; \\\"}\"}"
value:
Value:
Implicit:
- "0"
- span:
line_start: 13
line_stop: 13
col_start: 13
col_stop: 14
path: ""
content: "r2: field = 0; "
span:
line_start: 13
line_stop: 13
col_start: 5
col_stop: 10
path: ""
content: "r2: field = 0; "
- mode: Private
type_: Group
name: "{\"name\":\"r3\",\"span\":\"{\\\"line_start\\\":14,\\\"line_stop\\\":14,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r3: group = (0, 1)group; \\\"}\"}"
value:
Value:
Group:
Tuple:
x:
Number:
- "0"
- span:
line_start: 14
line_stop: 14
col_start: 14
col_stop: 15
path: ""
content: "r3: group = (0, 1)group; "
y:
Number:
- "1"
- span:
line_start: 14
line_stop: 14
col_start: 17
col_stop: 18
path: ""
content: "r3: group = (0, 1)group; "
span:
line_start: 14
line_stop: 14
col_start: 14
col_stop: 24
path: ""
content: "r3: group = (0, 1)group; "
span:
line_start: 14
line_stop: 14
col_start: 5
col_stop: 10
path: ""
content: "r3: group = (0, 1)group; "
- mode: Private
type_: Address
name: "{\"name\":\"r4\",\"span\":\"{\\\"line_start\\\":15,\\\"line_stop\\\":15,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;\\\"}\"}"
value:
Value:
Address:
- aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8
- span:
line_start: 15
line_stop: 15
col_start: 15
col_stop: 78
path: ""
content: "r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;"
span:
line_start: 15
line_stop: 15
col_start: 5
col_stop: 12
path: ""
content: "r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;"
span:
line_start: 10
line_stop: 10
col_start: 2
col_stop: 11
path: ""
content: "[registers]"

View File

@ -2,4 +2,4 @@
namespace: Input namespace: Input
expectation: Fail expectation: Fail
outputs: outputs:
- "Error [EPAR0370009]: unexpected string: expected 'ident', got 'public'\n --> test:4:7\n |\n 4 | const public a: bool = true; \n | ^^^^^^" - "Error [EPAR0370009]: unexpected string: expected 'ident', got 'public'\n --> test:4:10\n |\n 4 | constant public a: bool = true; \n | ^^^^^^"

View File

@ -0,0 +1,275 @@
---
namespace: Input
expectation: Pass
outputs:
- sections:
- name: main
definitions:
- mode: Constant
type_: Boolean
name: "{\"name\":\"a\",\"span\":\"{\\\"line_start\\\":4,\\\"line_stop\\\":4,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"constant a: bool = true;\\\"}\"}"
value:
Value:
Boolean:
- "true"
- span:
line_start: 4
line_stop: 4
col_start: 21
col_stop: 25
path: ""
content: "constant a: bool = true;"
span:
line_start: 4
line_stop: 4
col_start: 13
col_stop: 17
path: ""
content: "constant a: bool = true;"
- mode: Constant
type_:
IntegerType: U8
name: "{\"name\":\"b\",\"span\":\"{\\\"line_start\\\":5,\\\"line_stop\\\":5,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"constant b: u8 = 2;\\\"}\"}"
value:
Value:
Implicit:
- "2"
- span:
line_start: 5
line_stop: 5
col_start: 21
col_stop: 22
path: ""
content: "constant b: u8 = 2;"
span:
line_start: 5
line_stop: 5
col_start: 13
col_stop: 15
path: ""
content: "constant b: u8 = 2;"
- mode: Constant
type_: Field
name: "{\"name\":\"c\",\"span\":\"{\\\"line_start\\\":6,\\\"line_stop\\\":6,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"constant c: field = 0;\\\"}\"}"
value:
Value:
Implicit:
- "0"
- span:
line_start: 6
line_stop: 6
col_start: 21
col_stop: 22
path: ""
content: "constant c: field = 0;"
span:
line_start: 6
line_stop: 6
col_start: 13
col_stop: 18
path: ""
content: "constant c: field = 0;"
- mode: Constant
type_: Group
name: "{\"name\":\"d\",\"span\":\"{\\\"line_start\\\":7,\\\"line_stop\\\":7,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"constant d: group = (0, 1)group;\\\"}\"}"
value:
Value:
Group:
Tuple:
x:
Number:
- "0"
- span:
line_start: 7
line_stop: 7
col_start: 22
col_stop: 23
path: ""
content: "constant d: group = (0, 1)group;"
y:
Number:
- "1"
- span:
line_start: 7
line_stop: 7
col_start: 25
col_stop: 26
path: ""
content: "constant d: group = (0, 1)group;"
span:
line_start: 7
line_stop: 7
col_start: 22
col_stop: 32
path: ""
content: "constant d: group = (0, 1)group;"
span:
line_start: 7
line_stop: 7
col_start: 13
col_stop: 18
path: ""
content: "constant d: group = (0, 1)group;"
- mode: Constant
type_: Address
name: "{\"name\":\"e\",\"span\":\"{\\\"line_start\\\":8,\\\"line_stop\\\":8,\\\"col_start\\\":10,\\\"col_stop\\\":11,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"constant e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;\\\"}\"}"
value:
Value:
Address:
- aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8
- span:
line_start: 8
line_stop: 8
col_start: 23
col_stop: 86
path: ""
content: "constant e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;"
span:
line_start: 8
line_stop: 8
col_start: 13
col_stop: 20
path: ""
content: "constant e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;"
span:
line_start: 3
line_stop: 3
col_start: 2
col_stop: 6
path: ""
content: "[main]"
- name: registers
definitions:
- mode: Private
type_: Boolean
name: "{\"name\":\"r0\",\"span\":\"{\\\"line_start\\\":11,\\\"line_stop\\\":11,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r0: bool = true;\\\"}\"}"
value:
Value:
Boolean:
- "true"
- span:
line_start: 11
line_stop: 11
col_start: 13
col_stop: 17
path: ""
content: "r0: bool = true;"
span:
line_start: 11
line_stop: 11
col_start: 5
col_stop: 9
path: ""
content: "r0: bool = true;"
- mode: Private
type_:
IntegerType: U8
name: "{\"name\":\"r1\",\"span\":\"{\\\"line_start\\\":12,\\\"line_stop\\\":12,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r1: u8 = 2;\\\"}\"}"
value:
Value:
Implicit:
- "2"
- span:
line_start: 12
line_stop: 12
col_start: 13
col_stop: 14
path: ""
content: "r1: u8 = 2;"
span:
line_start: 12
line_stop: 12
col_start: 5
col_stop: 7
path: ""
content: "r1: u8 = 2;"
- mode: Private
type_: Field
name: "{\"name\":\"r2\",\"span\":\"{\\\"line_start\\\":13,\\\"line_stop\\\":13,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r2: field = 0;\\\"}\"}"
value:
Value:
Implicit:
- "0"
- span:
line_start: 13
line_stop: 13
col_start: 13
col_stop: 14
path: ""
content: "r2: field = 0;"
span:
line_start: 13
line_stop: 13
col_start: 5
col_stop: 10
path: ""
content: "r2: field = 0;"
- mode: Private
type_: Group
name: "{\"name\":\"r3\",\"span\":\"{\\\"line_start\\\":14,\\\"line_stop\\\":14,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r3: group = (0, 1)group;\\\"}\"}"
value:
Value:
Group:
Tuple:
x:
Number:
- "0"
- span:
line_start: 14
line_stop: 14
col_start: 14
col_stop: 15
path: ""
content: "r3: group = (0, 1)group;"
y:
Number:
- "1"
- span:
line_start: 14
line_stop: 14
col_start: 17
col_stop: 18
path: ""
content: "r3: group = (0, 1)group;"
span:
line_start: 14
line_stop: 14
col_start: 14
col_stop: 24
path: ""
content: "r3: group = (0, 1)group;"
span:
line_start: 14
line_stop: 14
col_start: 5
col_stop: 10
path: ""
content: "r3: group = (0, 1)group;"
- mode: Private
type_: Address
name: "{\"name\":\"r4\",\"span\":\"{\\\"line_start\\\":15,\\\"line_stop\\\":15,\\\"col_start\\\":1,\\\"col_stop\\\":3,\\\"path\\\":\\\"\\\",\\\"content\\\":\\\"r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;\\\"}\"}"
value:
Value:
Address:
- aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8
- span:
line_start: 15
line_stop: 15
col_start: 15
col_stop: 78
path: ""
content: "r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;"
span:
line_start: 15
line_stop: 15
col_start: 5
col_stop: 12
path: ""
content: "r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;"
span:
line_start: 10
line_stop: 10
col_start: 2
col_stop: 11
path: ""
content: "[registers]"

View File

@ -0,0 +1,5 @@
---
namespace: Input
expectation: Fail
outputs:
- "Error [EPAR0370009]: unexpected string: expected 'ident', got 'public'\n --> test:4:10\n |\n 4 | constant public a: bool = true; \n | ^^^^^^"

View File

@ -2,4 +2,4 @@
namespace: Input namespace: Input
expectation: Fail expectation: Fail
outputs: outputs:
- "Error [EPAR0370041]: A parameter cannot be both public and const.\n --> test:4:1\n |\n 4 | public const a: bool = true; \n | ^^^^^^^^^^^^" - "Error [EPAR0370041]: A parameter cannot be both public and const.\n --> test:4:1\n |\n 4 | public constant a: bool = true;\n | ^^^^^^^^^^^^^^^"

View File

@ -0,0 +1,5 @@
---
namespace: Input
expectation: Fail
outputs:
- "Error [EPAR0370041]: A parameter cannot be both public and const.\n --> test:4:1\n |\n 4 | public constant a: bool = true;\n | ^^^^^^^^^^^^^^^"

View File

@ -3,7 +3,7 @@ namespace: Parse
expectation: Pass expectation: Pass
*/ */
function x(const y: u32) { function x(constant y: u32) {
if y < 5u32 { if y < 5u32 {
x(y+1); x(y+1);
} }

View File

@ -6,3 +6,7 @@ expectation: Fail
function x(const input) { function x(const input) {
return (); return ();
} }
function y(constant input) {
return ();
}

View File

@ -3,10 +3,10 @@ namespace: Parse
expectation: Pass expectation: Pass
*/ */
function x(x: u32, const y: i32) { function x(x: u32, constant y: i32) {
return 0; return 0;
} }
function x(const x: u32, y: i32) { function x(constant x: u32, y: i32) {
return 0; return 0;
} }

View File

@ -7,6 +7,6 @@ function x(x: u32, const public y: i32) {
return 0; return 0;
} }
function x(const public x: u32, y: i32) { function x(constant public x: u32, y: i32) {
return 0; return 0;
} }

View File

@ -7,6 +7,6 @@ function x(x: u32, public const y: i32) {
return 0; return 0;
} }
function x(public const x: u32, y: i32) { function x(public constant x: u32, y: i32) {
return 0; return 0;
} }

View File

@ -1,6 +1,6 @@
/* /*
namespace: Input namespace: Input
expectation: Pass expectation: Fail
*/ */
[main] [main]

View File

@ -1,19 +0,0 @@
/*
namespace: Input
expectation: Fail
*/
[main]
const public a: bool = true;
const public b: u8 = 2;
const public c: field = 0;
const public d: group = (0, 1)group;
const public e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;
[registers]
r0: bool = true;
r1: u8 = 2;
r2: field = 0;
r3: group = (0, 1)group;
r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;

View File

@ -0,0 +1,18 @@
/*
namespace: Input
expectation: Pass
*/
[main]
constant a: bool = true;
constant b: u8 = 2;
constant c: field = 0;
constant d: group = (0, 1)group;
constant e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;
[registers]
r0: bool = true;
r1: u8 = 2;
r2: field = 0;
r3: group = (0, 1)group;
r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;

View File

@ -0,0 +1,19 @@
/*
namespace: Input
expectation: Fail
*/
[main]
constant public a: bool = true;
constant public b: u8 = 2;
constant public c: field = 0;
constant public d: group = (0, 1)group;
constant public e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;
[registers]
r0: bool = true;
r1: u8 = 2;
r2: field = 0;
r3: group = (0, 1)group;
r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;

View File

@ -1,19 +0,0 @@
/*
namespace: Input
expectation: Fail
*/
[main]
public const a: bool = true;
public const b: u8 = 2;
public const c: field = 0;
public const d: group = (0, 1)group;
public const e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;
[registers]
r0: bool = true;
r1: u8 = 2;
r2: field = 0;
r3: group = (0, 1)group;
r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;

View File

@ -0,0 +1,19 @@
/*
namespace: Input
expectation: Fail
*/
[main]
public constant a: bool = true;
public constant b: u8 = 2;
public constant c: field = 0;
public constant d: group = (0, 1)group;
public constant e: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;
[registers]
r0: bool = true;
r1: u8 = 2;
r2: field = 0;
r3: group = (0, 1)group;
r4: address = aleo1qnr4dkkvkgfqph0vzc3y6z2eu975wnpz2925ntjccd5cfqxtyu8sta57j8;