diff --git a/crates/mun/build.rs b/crates/mun/build.rs index fe826f600..ce3fc018a 100644 --- a/crates/mun/build.rs +++ b/crates/mun/build.rs @@ -8,10 +8,11 @@ extern crate lazy_static; const LLVM_VERSION_MAJOR: u32 = 7; const LLVM_VERSION_MINOR: u32 = 0; -/// Environment variables that can guide compilation -/// -/// When adding new ones, they should also be added to main() to force a -/// rebuild if they are changed. +// Environment variables that can guide compilation +// +// When adding new ones, they should also be added to main() to force a +// rebuild if they are changed. + lazy_static! { /// A single path to search for LLVM in (containing bin/llvm-config) static ref ENV_LLVM_PREFIX: String = @@ -47,9 +48,9 @@ lazy_static! { static ref LLVM_CONFIG_BINARY_NAMES: Vec = { vec![ - "llvm-config".into(), - format!("llvm-config-{}", LLVM_VERSION_MAJOR), - format!("llvm-config-{}.{}", LLVM_VERSION_MAJOR, LLVM_VERSION_MINOR), + format!("llvm-config{}", std::env::consts::EXE_SUFFIX), + format!("llvm-config-{}{}", LLVM_VERSION_MAJOR, std::env::consts::EXE_SUFFIX), + format!("llvm-config-{}.{}{}", LLVM_VERSION_MAJOR, LLVM_VERSION_MINOR, std::env::consts::EXE_SUFFIX), ] }; diff --git a/crates/mun/test/main.mun b/crates/mun/test/main.mun index 82c44a1e9..50827b6c9 100644 --- a/crates/mun/test/main.mun +++ b/crates/mun/test/main.mun @@ -1,19 +1,19 @@ -// Function to add two floats -function add(a:float, b:float):float { +// function to add two floats +fn add(a:float, b:float):float { let c = a+b+5.0 c } -// Function to subtract two floats -function subtract(a:float, b:float):float { +// function to subtract two floats +fn subtract(a:float, b:float):float { a-b } -// Function to subtract two floats -function multiply(a:float, b:float):float { +// function to subtract two floats +fn multiply(a:float, b:float):float { a*b } -function main():int { +fn main():int { 5 } \ No newline at end of file diff --git a/crates/mun_codegen/tests/data/ir/0001_function.mun b/crates/mun_codegen/tests/data/ir/0001_function.mun index d0ad62ef8..ea3850b23 100644 --- a/crates/mun_codegen/tests/data/ir/0001_function.mun +++ b/crates/mun_codegen/tests/data/ir/0001_function.mun @@ -1,2 +1,2 @@ -function main() { +fn main() { } \ No newline at end of file diff --git a/crates/mun_codegen/tests/data/ir/0002_return_type.mun b/crates/mun_codegen/tests/data/ir/0002_return_type.mun index d01041f47..2d1d7f392 100644 --- a/crates/mun_codegen/tests/data/ir/0002_return_type.mun +++ b/crates/mun_codegen/tests/data/ir/0002_return_type.mun @@ -1,3 +1,3 @@ -function main():int { +fn main():int { 0 } \ No newline at end of file diff --git a/crates/mun_codegen/tests/data/ir/0003_function_arguments.mun b/crates/mun_codegen/tests/data/ir/0003_function_arguments.mun index c3b7f7ac0..c434783c8 100644 --- a/crates/mun_codegen/tests/data/ir/0003_function_arguments.mun +++ b/crates/mun_codegen/tests/data/ir/0003_function_arguments.mun @@ -1,3 +1,3 @@ -function main(a:int):int { +fn main(a:int):int { a } \ No newline at end of file diff --git a/crates/mun_codegen/tests/data/ir/0004_binary_expressions.mun b/crates/mun_codegen/tests/data/ir/0004_binary_expressions.mun index f0e039f0e..2d55262bf 100644 --- a/crates/mun_codegen/tests/data/ir/0004_binary_expressions.mun +++ b/crates/mun_codegen/tests/data/ir/0004_binary_expressions.mun @@ -1,11 +1,11 @@ -function add(a:int, b:int):int { +fn add(a:int, b:int):int { a+b } -function subtract(a:int, b:int):int { +fn subtract(a:int, b:int):int { a-b } -function multiply(a:int, b:int):int { +fn multiply(a:int, b:int):int { a*b } \ No newline at end of file diff --git a/crates/mun_codegen/tests/data/ir/0005_let_statement.mun b/crates/mun_codegen/tests/data/ir/0005_let_statement.mun index 09a667166..5efc51382 100644 --- a/crates/mun_codegen/tests/data/ir/0005_let_statement.mun +++ b/crates/mun_codegen/tests/data/ir/0005_let_statement.mun @@ -1,4 +1,4 @@ -function main(a:int):int { +fn main(a:int):int { let b = a+1 b } \ No newline at end of file diff --git a/crates/mun_codegen/tests/data/ir/0006_invalid_binary_ops.mun b/crates/mun_codegen/tests/data/ir/0006_invalid_binary_ops.mun index 2d80d8495..8e20a3773 100644 --- a/crates/mun_codegen/tests/data/ir/0006_invalid_binary_ops.mun +++ b/crates/mun_codegen/tests/data/ir/0006_invalid_binary_ops.mun @@ -1,4 +1,4 @@ -function main() { +fn main() { let a = 3+3.0; let b = 3.0+3; } \ No newline at end of file diff --git a/crates/mun_codegen/tests/data/ir/0007_update_operators.mun b/crates/mun_codegen/tests/data/ir/0007_update_operators.mun index b4b32dbad..c37333aa2 100644 --- a/crates/mun_codegen/tests/data/ir/0007_update_operators.mun +++ b/crates/mun_codegen/tests/data/ir/0007_update_operators.mun @@ -1,16 +1,16 @@ -function add(a:int, b:int):int { +fn add(a:int, b:int):int { let result = a result += b result } -function subtract(a:int, b:int):int { +fn subtract(a:int, b:int):int { let result = a result -= b result } -function multiply(a:int, b:int):int { +fn multiply(a:int, b:int):int { let result = a result *= b result diff --git a/crates/mun_runtime/tmp/main.dll b/crates/mun_runtime/tmp/main.dll new file mode 100644 index 000000000..12dd3df75 Binary files /dev/null and b/crates/mun_runtime/tmp/main.dll differ diff --git a/crates/mun_syntax/src/ast/generated.rs.tera b/crates/mun_syntax/src/ast/generated.rs.tera index 6e57da7ea..b88305d96 100644 --- a/crates/mun_syntax/src/ast/generated.rs.tera +++ b/crates/mun_syntax/src/ast/generated.rs.tera @@ -9,15 +9,13 @@ the below applies to the result of this template //! `.borrowed` functions. Most of the code works with borrowed mode, and only //! this mode has all AST accessors. -use rowan::TransparentNewType; - use crate::{ - SyntaxNode, SyntaxKind::{self, *}, ast::{self, AstNode}, + SyntaxKind::{self, *}, + SyntaxNode, }; -{% for node, methods in ast %} -// {{ node }} +{% for node, methods in ast %}// {{ node }} #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct {{ node }} { @@ -36,14 +34,20 @@ impl AstNode for {{ node }} { } } fn cast(syntax: SyntaxNode) -> Option { - if Self::can_cast(syntax.kind()) { Some({{ node }} { syntax }) } else { None } + if Self::can_cast(syntax.kind()) { + Some({{ node }} { syntax }) + } else { + None + } + } + fn syntax(&self) -> &SyntaxNode { + &self.syntax } - fn syntax(&self) -> &SyntaxNode { &self.syntax } } {%- if methods.enum %} #[derive(Debug, Clone, PartialEq, Eq)] -pub enum {{ node }}Kind{ +pub enum {{ node }}Kind { {%- for kind in methods.enum %} {{ kind }}({{ kind }}), {%- endfor %} @@ -51,7 +55,9 @@ pub enum {{ node }}Kind{ {%- for kind in methods.enum %} impl From<{{ kind }}> for {{ node }} { - fn from(n: {{ kind }}) -> {{ node }} { {{ node }} { syntax: n.syntax } } + fn from(n: {{ kind }}) -> {{ node }} { + {{ node }} { syntax: n.syntax } + } } {%- endfor %} diff --git a/crates/mun_syntax/src/grammar.ron b/crates/mun_syntax/src/grammar.ron index 971f40124..2826e529b 100644 --- a/crates/mun_syntax/src/grammar.ron +++ b/crates/mun_syntax/src/grammar.ron @@ -58,7 +58,7 @@ Grammar( // "end", // We use braces "false", "for", - "function", + "fn", "if", "in", // "local", // We use let diff --git a/crates/mun_syntax/src/lib.rs b/crates/mun_syntax/src/lib.rs index a8dfd6217..b8b1a10ac 100644 --- a/crates/mun_syntax/src/lib.rs +++ b/crates/mun_syntax/src/lib.rs @@ -151,7 +151,7 @@ fn api_walkthrough() { use ast::NameOwner; let source_code = " - function foo() { + fn foo() { } "; diff --git a/crates/mun_syntax/src/parsing/grammar/declarations.rs b/crates/mun_syntax/src/parsing/grammar/declarations.rs index 95319b704..ab682a3be 100644 --- a/crates/mun_syntax/src/parsing/grammar/declarations.rs +++ b/crates/mun_syntax/src/parsing/grammar/declarations.rs @@ -1,7 +1,7 @@ use super::*; use crate::T; -pub(super) const DECLARATION_RECOVERY_SET: TokenSet = token_set![FUNCTION_KW, EXPORT_KW]; +pub(super) const DECLARATION_RECOVERY_SET: TokenSet = token_set![FN_KW, EXPORT_KW]; pub(super) fn mod_contents(p: &mut Parser) { while !p.matches(EOF) { @@ -35,7 +35,7 @@ pub(super) fn maybe_declaration(p: &mut Parser, m: Marker) -> Result<(), Marker> opt_visibility(p); match p.current() { - FUNCTION_KW => { + FN_KW => { fn_def(p); m.complete(p, FUNCTION_DEF); } @@ -45,7 +45,7 @@ pub(super) fn maybe_declaration(p: &mut Parser, m: Marker) -> Result<(), Marker> } pub(super) fn fn_def(p: &mut Parser) { - assert!(p.matches(FUNCTION_KW)); + assert!(p.matches(FN_KW)); p.bump(); name_recovery(p, DECLARATION_RECOVERY_SET.union(token_set![L_PAREN])); diff --git a/crates/mun_syntax/src/parsing/lexer/numbers.rs b/crates/mun_syntax/src/parsing/lexer/numbers.rs index a1912ab60..789d8876b 100644 --- a/crates/mun_syntax/src/parsing/lexer/numbers.rs +++ b/crates/mun_syntax/src/parsing/lexer/numbers.rs @@ -13,7 +13,7 @@ pub(crate) fn scan_number(c: char, cursor: &mut Cursor) -> SyntaxKind { cursor.bump(); scan_digits(cursor, true); } - '0'...'9' | '_' | '.' | 'e' | 'E' => { + '0'..='9' | '_' | '.' | 'e' | 'E' => { scan_digits(cursor, true); } _ => return INT_NUMBER, @@ -42,10 +42,10 @@ pub(crate) fn scan_number(c: char, cursor: &mut Cursor) -> SyntaxKind { fn scan_digits(cursor: &mut Cursor, allow_hex: bool) { while let Some(c) = cursor.current() { match c { - '_' | '0'...'9' => { + '_' | '0'..='9' => { cursor.bump(); } - 'a'...'f' | 'A'...'F' if allow_hex => { + 'a'..='f' | 'A'..='F' if allow_hex => { cursor.bump(); } _ => return, diff --git a/crates/mun_syntax/src/syntax_kind/generated.rs b/crates/mun_syntax/src/syntax_kind/generated.rs index 892337436..42f8aa12a 100644 --- a/crates/mun_syntax/src/syntax_kind/generated.rs +++ b/crates/mun_syntax/src/syntax_kind/generated.rs @@ -56,7 +56,7 @@ pub enum SyntaxKind { ELSE_KW, FALSE_KW, FOR_KW, - FUNCTION_KW, + FN_KW, IF_KW, IN_KW, NIL_KW, @@ -154,7 +154,7 @@ macro_rules! T { (else) => { $crate::SyntaxKind::ELSE_KW }; (false) => { $crate::SyntaxKind::FALSE_KW }; (for) => { $crate::SyntaxKind::FOR_KW }; - (function) => { $crate::SyntaxKind::FUNCTION_KW }; + (fn) => { $crate::SyntaxKind::FN_KW }; (if) => { $crate::SyntaxKind::IF_KW }; (in) => { $crate::SyntaxKind::IN_KW }; (nil) => { $crate::SyntaxKind::NIL_KW }; @@ -197,7 +197,7 @@ impl SyntaxKind { | ELSE_KW | FALSE_KW | FOR_KW - | FUNCTION_KW + | FN_KW | IF_KW | IN_KW | NIL_KW @@ -316,7 +316,7 @@ impl SyntaxKind { ELSE_KW => &SyntaxInfo { name: "ELSE_KW" }, FALSE_KW => &SyntaxInfo { name: "FALSE_KW" }, FOR_KW => &SyntaxInfo { name: "FOR_KW" }, - FUNCTION_KW => &SyntaxInfo { name: "FUNCTION_KW" }, + FN_KW => &SyntaxInfo { name: "FN_KW" }, IF_KW => &SyntaxInfo { name: "IF_KW" }, IN_KW => &SyntaxInfo { name: "IN_KW" }, NIL_KW => &SyntaxInfo { name: "NIL_KW" }, @@ -379,7 +379,7 @@ impl SyntaxKind { "else" => ELSE_KW, "false" => FALSE_KW, "for" => FOR_KW, - "function" => FUNCTION_KW, + "fn" => FN_KW, "if" => IF_KW, "in" => IN_KW, "nil" => NIL_KW, @@ -431,6 +431,3 @@ impl SyntaxKind { Some(tok) } } - - - diff --git a/crates/mun_syntax/tests/data/lexer/0007_keywords.mun b/crates/mun_syntax/tests/data/lexer/0007_keywords.mun index 84397c6ef..6603f0205 100644 --- a/crates/mun_syntax/tests/data/lexer/0007_keywords.mun +++ b/crates/mun_syntax/tests/data/lexer/0007_keywords.mun @@ -1,3 +1,3 @@ -and break do else false for function if in nil not or +and break do else false for fn if in nil not or return then true while let mut class public protected private \ No newline at end of file diff --git a/crates/mun_syntax/tests/data/lexer/0007_keywords.txt b/crates/mun_syntax/tests/data/lexer/0007_keywords.txt index d85125b45..239ea9ba7 100644 --- a/crates/mun_syntax/tests/data/lexer/0007_keywords.txt +++ b/crates/mun_syntax/tests/data/lexer/0007_keywords.txt @@ -10,7 +10,7 @@ FALSE_KW 5 "false" WHITESPACE 1 " " FOR_KW 3 "for" WHITESPACE 1 " " -FUNCTION_KW 8 "function" +FN_KW 2 "fn" WHITESPACE 1 " " IF_KW 2 "if" WHITESPACE 1 " " diff --git a/crates/mun_syntax/tests/data/parser/ok/0001_function.mun b/crates/mun_syntax/tests/data/parser/ok/0001_function.mun index 6458b88ac..011faf427 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0001_function.mun +++ b/crates/mun_syntax/tests/data/parser/ok/0001_function.mun @@ -1,7 +1,7 @@ // Source file comment // Comment that belongs to the function -function a() {} -function b(value:number) {} -export function c() {} -function b(value:number):number {} \ No newline at end of file +fn a() {} +fn b(value:number) {} +export fn c() {} +fn b(value:number):number {} \ No newline at end of file diff --git a/crates/mun_syntax/tests/data/parser/ok/0001_function.txt b/crates/mun_syntax/tests/data/parser/ok/0001_function.txt index 58f203096..e30757668 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0001_function.txt +++ b/crates/mun_syntax/tests/data/parser/ok/0001_function.txt @@ -1,86 +1,86 @@ -SOURCE_FILE@[0; 165) +SOURCE_FILE@[0; 141) COMMENT@[0; 22) "// Source file comment" WHITESPACE@[22; 24) "\n\n" - FUNCTION_DEF@[24; 79) + FUNCTION_DEF@[24; 73) COMMENT@[24; 63) "// Comment that belon ..." WHITESPACE@[63; 64) "\n" - FUNCTION_KW@[64; 72) "function" - WHITESPACE@[72; 73) " " - NAME@[73; 74) - IDENT@[73; 74) "a" - PARAM_LIST@[74; 76) - L_PAREN@[74; 75) "(" - R_PAREN@[75; 76) ")" + FN_KW@[64; 66) "fn" + WHITESPACE@[66; 67) " " + NAME@[67; 68) + IDENT@[67; 68) "a" + PARAM_LIST@[68; 70) + L_PAREN@[68; 69) "(" + R_PAREN@[69; 70) ")" + WHITESPACE@[70; 71) " " + BLOCK@[71; 73) + L_CURLY@[71; 72) "{" + R_CURLY@[72; 73) "}" + FUNCTION_DEF@[73; 95) + WHITESPACE@[73; 74) "\n" + FN_KW@[74; 76) "fn" WHITESPACE@[76; 77) " " - BLOCK@[77; 79) - L_CURLY@[77; 78) "{" - R_CURLY@[78; 79) "}" - FUNCTION_DEF@[79; 107) - WHITESPACE@[79; 80) "\n" - FUNCTION_KW@[80; 88) "function" - WHITESPACE@[88; 89) " " - NAME@[89; 90) - IDENT@[89; 90) "b" - PARAM_LIST@[90; 104) - L_PAREN@[90; 91) "(" - PARAM@[91; 103) - BIND_PAT@[91; 96) - NAME@[91; 96) - IDENT@[91; 96) "value" - COLON@[96; 97) ":" - PATH_TYPE@[97; 103) - PATH@[97; 103) - PATH_SEGMENT@[97; 103) - NAME_REF@[97; 103) - IDENT@[97; 103) "number" - R_PAREN@[103; 104) ")" - WHITESPACE@[104; 105) " " - BLOCK@[105; 107) - L_CURLY@[105; 106) "{" - R_CURLY@[106; 107) "}" - FUNCTION_DEF@[107; 130) - WHITESPACE@[107; 108) "\n" - VISIBILITY@[108; 114) - EXPORT_KW@[108; 114) "export" - WHITESPACE@[114; 115) " " - FUNCTION_KW@[115; 123) "function" - WHITESPACE@[123; 124) " " - NAME@[124; 125) - IDENT@[124; 125) "c" - PARAM_LIST@[125; 127) - L_PAREN@[125; 126) "(" - R_PAREN@[126; 127) ")" - WHITESPACE@[127; 128) " " - BLOCK@[128; 130) - L_CURLY@[128; 129) "{" - R_CURLY@[129; 130) "}" - FUNCTION_DEF@[130; 165) - WHITESPACE@[130; 131) "\n" - FUNCTION_KW@[131; 139) "function" - WHITESPACE@[139; 140) " " - NAME@[140; 141) - IDENT@[140; 141) "b" - PARAM_LIST@[141; 155) - L_PAREN@[141; 142) "(" - PARAM@[142; 154) - BIND_PAT@[142; 147) - NAME@[142; 147) - IDENT@[142; 147) "value" - COLON@[147; 148) ":" - PATH_TYPE@[148; 154) - PATH@[148; 154) - PATH_SEGMENT@[148; 154) - NAME_REF@[148; 154) - IDENT@[148; 154) "number" - R_PAREN@[154; 155) ")" - RET_TYPE@[155; 162) - COLON@[155; 156) ":" - PATH_TYPE@[156; 162) - PATH@[156; 162) - PATH_SEGMENT@[156; 162) - NAME_REF@[156; 162) - IDENT@[156; 162) "number" - WHITESPACE@[162; 163) " " - BLOCK@[163; 165) - L_CURLY@[163; 164) "{" - R_CURLY@[164; 165) "}" + NAME@[77; 78) + IDENT@[77; 78) "b" + PARAM_LIST@[78; 92) + L_PAREN@[78; 79) "(" + PARAM@[79; 91) + BIND_PAT@[79; 84) + NAME@[79; 84) + IDENT@[79; 84) "value" + COLON@[84; 85) ":" + PATH_TYPE@[85; 91) + PATH@[85; 91) + PATH_SEGMENT@[85; 91) + NAME_REF@[85; 91) + IDENT@[85; 91) "number" + R_PAREN@[91; 92) ")" + WHITESPACE@[92; 93) " " + BLOCK@[93; 95) + L_CURLY@[93; 94) "{" + R_CURLY@[94; 95) "}" + FUNCTION_DEF@[95; 112) + WHITESPACE@[95; 96) "\n" + VISIBILITY@[96; 102) + EXPORT_KW@[96; 102) "export" + WHITESPACE@[102; 103) " " + FN_KW@[103; 105) "fn" + WHITESPACE@[105; 106) " " + NAME@[106; 107) + IDENT@[106; 107) "c" + PARAM_LIST@[107; 109) + L_PAREN@[107; 108) "(" + R_PAREN@[108; 109) ")" + WHITESPACE@[109; 110) " " + BLOCK@[110; 112) + L_CURLY@[110; 111) "{" + R_CURLY@[111; 112) "}" + FUNCTION_DEF@[112; 141) + WHITESPACE@[112; 113) "\n" + FN_KW@[113; 115) "fn" + WHITESPACE@[115; 116) " " + NAME@[116; 117) + IDENT@[116; 117) "b" + PARAM_LIST@[117; 131) + L_PAREN@[117; 118) "(" + PARAM@[118; 130) + BIND_PAT@[118; 123) + NAME@[118; 123) + IDENT@[118; 123) "value" + COLON@[123; 124) ":" + PATH_TYPE@[124; 130) + PATH@[124; 130) + PATH_SEGMENT@[124; 130) + NAME_REF@[124; 130) + IDENT@[124; 130) "number" + R_PAREN@[130; 131) ")" + RET_TYPE@[131; 138) + COLON@[131; 132) ":" + PATH_TYPE@[132; 138) + PATH@[132; 138) + PATH_SEGMENT@[132; 138) + NAME_REF@[132; 138) + IDENT@[132; 138) "number" + WHITESPACE@[138; 139) " " + BLOCK@[139; 141) + L_CURLY@[139; 140) "{" + R_CURLY@[140; 141) "}" diff --git a/crates/mun_syntax/tests/data/parser/ok/0002_block.mun b/crates/mun_syntax/tests/data/parser/ok/0002_block.mun index 3ac3fdec3..b904ba195 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0002_block.mun +++ b/crates/mun_syntax/tests/data/parser/ok/0002_block.mun @@ -1,4 +1,4 @@ -function foo() { +fn foo() { let a; let b:i32; let c:string; diff --git a/crates/mun_syntax/tests/data/parser/ok/0002_block.txt b/crates/mun_syntax/tests/data/parser/ok/0002_block.txt index c203fdd7f..0d13b7e53 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0002_block.txt +++ b/crates/mun_syntax/tests/data/parser/ok/0002_block.txt @@ -1,50 +1,50 @@ -SOURCE_FILE@[0; 62) - FUNCTION_DEF@[0; 62) - FUNCTION_KW@[0; 8) "function" +SOURCE_FILE@[0; 56) + FUNCTION_DEF@[0; 56) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 8) + L_PAREN@[6; 7) "(" + R_PAREN@[7; 8) ")" WHITESPACE@[8; 9) " " - NAME@[9; 12) - IDENT@[9; 12) "foo" - PARAM_LIST@[12; 14) - L_PAREN@[12; 13) "(" - R_PAREN@[13; 14) ")" - WHITESPACE@[14; 15) " " - BLOCK@[15; 62) - L_CURLY@[15; 16) "{" - WHITESPACE@[16; 21) "\n " - LET_STMT@[21; 27) - LET_KW@[21; 24) "let" - WHITESPACE@[24; 25) " " - BIND_PAT@[25; 26) - NAME@[25; 26) - IDENT@[25; 26) "a" - SEMI@[26; 27) ";" - WHITESPACE@[27; 32) "\n " - LET_STMT@[32; 42) - LET_KW@[32; 35) "let" - WHITESPACE@[35; 36) " " - BIND_PAT@[36; 37) - NAME@[36; 37) - IDENT@[36; 37) "b" - COLON@[37; 38) ":" - PATH_TYPE@[38; 41) - PATH@[38; 41) - PATH_SEGMENT@[38; 41) - NAME_REF@[38; 41) - IDENT@[38; 41) "i32" - SEMI@[41; 42) ";" - WHITESPACE@[42; 47) "\n " - LET_STMT@[47; 60) - LET_KW@[47; 50) "let" - WHITESPACE@[50; 51) " " - BIND_PAT@[51; 52) - NAME@[51; 52) - IDENT@[51; 52) "c" - COLON@[52; 53) ":" - PATH_TYPE@[53; 59) - PATH@[53; 59) - PATH_SEGMENT@[53; 59) - NAME_REF@[53; 59) - IDENT@[53; 59) "string" - SEMI@[59; 60) ";" - WHITESPACE@[60; 61) "\n" - R_CURLY@[61; 62) "}" + BLOCK@[9; 56) + L_CURLY@[9; 10) "{" + WHITESPACE@[10; 15) "\n " + LET_STMT@[15; 21) + LET_KW@[15; 18) "let" + WHITESPACE@[18; 19) " " + BIND_PAT@[19; 20) + NAME@[19; 20) + IDENT@[19; 20) "a" + SEMI@[20; 21) ";" + WHITESPACE@[21; 26) "\n " + LET_STMT@[26; 36) + LET_KW@[26; 29) "let" + WHITESPACE@[29; 30) " " + BIND_PAT@[30; 31) + NAME@[30; 31) + IDENT@[30; 31) "b" + COLON@[31; 32) ":" + PATH_TYPE@[32; 35) + PATH@[32; 35) + PATH_SEGMENT@[32; 35) + NAME_REF@[32; 35) + IDENT@[32; 35) "i32" + SEMI@[35; 36) ";" + WHITESPACE@[36; 41) "\n " + LET_STMT@[41; 54) + LET_KW@[41; 44) "let" + WHITESPACE@[44; 45) " " + BIND_PAT@[45; 46) + NAME@[45; 46) + IDENT@[45; 46) "c" + COLON@[46; 47) ":" + PATH_TYPE@[47; 53) + PATH@[47; 53) + PATH_SEGMENT@[47; 53) + NAME_REF@[47; 53) + IDENT@[47; 53) "string" + SEMI@[53; 54) ";" + WHITESPACE@[54; 55) "\n" + R_CURLY@[55; 56) "}" diff --git a/crates/mun_syntax/tests/data/parser/ok/0003_literals.mun b/crates/mun_syntax/tests/data/parser/ok/0003_literals.mun index aa928c45b..1f9842ce1 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0003_literals.mun +++ b/crates/mun_syntax/tests/data/parser/ok/0003_literals.mun @@ -1,4 +1,4 @@ -function foo() { +fn foo() { let a = true; let b = false; let c = 1; diff --git a/crates/mun_syntax/tests/data/parser/ok/0003_literals.txt b/crates/mun_syntax/tests/data/parser/ok/0003_literals.txt index 0527c00db..74adb7abc 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0003_literals.txt +++ b/crates/mun_syntax/tests/data/parser/ok/0003_literals.txt @@ -1,79 +1,79 @@ -SOURCE_FILE@[0; 117) - FUNCTION_DEF@[0; 117) - FUNCTION_KW@[0; 8) "function" +SOURCE_FILE@[0; 111) + FUNCTION_DEF@[0; 111) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 8) + L_PAREN@[6; 7) "(" + R_PAREN@[7; 8) ")" WHITESPACE@[8; 9) " " - NAME@[9; 12) - IDENT@[9; 12) "foo" - PARAM_LIST@[12; 14) - L_PAREN@[12; 13) "(" - R_PAREN@[13; 14) ")" - WHITESPACE@[14; 15) " " - BLOCK@[15; 117) - L_CURLY@[15; 16) "{" - WHITESPACE@[16; 21) "\n " - LET_STMT@[21; 34) - LET_KW@[21; 24) "let" - WHITESPACE@[24; 25) " " - BIND_PAT@[25; 26) - NAME@[25; 26) - IDENT@[25; 26) "a" - WHITESPACE@[26; 27) " " - EQ@[27; 28) "=" - WHITESPACE@[28; 29) " " - LITERAL@[29; 33) - TRUE_KW@[29; 33) "true" - SEMI@[33; 34) ";" - WHITESPACE@[34; 39) "\n " - LET_STMT@[39; 53) - LET_KW@[39; 42) "let" - WHITESPACE@[42; 43) " " - BIND_PAT@[43; 44) - NAME@[43; 44) - IDENT@[43; 44) "b" - WHITESPACE@[44; 45) " " - EQ@[45; 46) "=" - WHITESPACE@[46; 47) " " - LITERAL@[47; 52) - FALSE_KW@[47; 52) "false" - SEMI@[52; 53) ";" - WHITESPACE@[53; 58) "\n " - LET_STMT@[58; 68) - LET_KW@[58; 61) "let" - WHITESPACE@[61; 62) " " - BIND_PAT@[62; 63) - NAME@[62; 63) - IDENT@[62; 63) "c" - WHITESPACE@[63; 64) " " - EQ@[64; 65) "=" - WHITESPACE@[65; 66) " " - LITERAL@[66; 67) - INT_NUMBER@[66; 67) "1" - SEMI@[67; 68) ";" - WHITESPACE@[68; 73) "\n " - LET_STMT@[73; 86) - LET_KW@[73; 76) "let" - WHITESPACE@[76; 77) " " - BIND_PAT@[77; 78) - NAME@[77; 78) - IDENT@[77; 78) "d" - WHITESPACE@[78; 79) " " - EQ@[79; 80) "=" - WHITESPACE@[80; 81) " " - LITERAL@[81; 85) - FLOAT_NUMBER@[81; 85) "1.12" - SEMI@[85; 86) ";" - WHITESPACE@[86; 91) "\n " - LET_STMT@[91; 115) - LET_KW@[91; 94) "let" - WHITESPACE@[94; 95) " " - BIND_PAT@[95; 96) - NAME@[95; 96) - IDENT@[95; 96) "e" - WHITESPACE@[96; 97) " " - EQ@[97; 98) "=" - WHITESPACE@[98; 99) " " - LITERAL@[99; 114) - STRING@[99; 114) "\"Hello, world!\"" - SEMI@[114; 115) ";" - WHITESPACE@[115; 116) "\n" - R_CURLY@[116; 117) "}" + BLOCK@[9; 111) + L_CURLY@[9; 10) "{" + WHITESPACE@[10; 15) "\n " + LET_STMT@[15; 28) + LET_KW@[15; 18) "let" + WHITESPACE@[18; 19) " " + BIND_PAT@[19; 20) + NAME@[19; 20) + IDENT@[19; 20) "a" + WHITESPACE@[20; 21) " " + EQ@[21; 22) "=" + WHITESPACE@[22; 23) " " + LITERAL@[23; 27) + TRUE_KW@[23; 27) "true" + SEMI@[27; 28) ";" + WHITESPACE@[28; 33) "\n " + LET_STMT@[33; 47) + LET_KW@[33; 36) "let" + WHITESPACE@[36; 37) " " + BIND_PAT@[37; 38) + NAME@[37; 38) + IDENT@[37; 38) "b" + WHITESPACE@[38; 39) " " + EQ@[39; 40) "=" + WHITESPACE@[40; 41) " " + LITERAL@[41; 46) + FALSE_KW@[41; 46) "false" + SEMI@[46; 47) ";" + WHITESPACE@[47; 52) "\n " + LET_STMT@[52; 62) + LET_KW@[52; 55) "let" + WHITESPACE@[55; 56) " " + BIND_PAT@[56; 57) + NAME@[56; 57) + IDENT@[56; 57) "c" + WHITESPACE@[57; 58) " " + EQ@[58; 59) "=" + WHITESPACE@[59; 60) " " + LITERAL@[60; 61) + INT_NUMBER@[60; 61) "1" + SEMI@[61; 62) ";" + WHITESPACE@[62; 67) "\n " + LET_STMT@[67; 80) + LET_KW@[67; 70) "let" + WHITESPACE@[70; 71) " " + BIND_PAT@[71; 72) + NAME@[71; 72) + IDENT@[71; 72) "d" + WHITESPACE@[72; 73) " " + EQ@[73; 74) "=" + WHITESPACE@[74; 75) " " + LITERAL@[75; 79) + FLOAT_NUMBER@[75; 79) "1.12" + SEMI@[79; 80) ";" + WHITESPACE@[80; 85) "\n " + LET_STMT@[85; 109) + LET_KW@[85; 88) "let" + WHITESPACE@[88; 89) " " + BIND_PAT@[89; 90) + NAME@[89; 90) + IDENT@[89; 90) "e" + WHITESPACE@[90; 91) " " + EQ@[91; 92) "=" + WHITESPACE@[92; 93) " " + LITERAL@[93; 108) + STRING@[93; 108) "\"Hello, world!\"" + SEMI@[108; 109) ";" + WHITESPACE@[109; 110) "\n" + R_CURLY@[110; 111) "}" diff --git a/crates/mun_syntax/tests/data/parser/ok/0004_unary_expr.mun b/crates/mun_syntax/tests/data/parser/ok/0004_unary_expr.mun index 78ea171df..92967b6dc 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0004_unary_expr.mun +++ b/crates/mun_syntax/tests/data/parser/ok/0004_unary_expr.mun @@ -1,4 +1,4 @@ -function foo() { +fn foo() { let a = --3; let b = not not true; } \ No newline at end of file diff --git a/crates/mun_syntax/tests/data/parser/ok/0004_unary_expr.txt b/crates/mun_syntax/tests/data/parser/ok/0004_unary_expr.txt index 1d41a16f0..b7a814f80 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0004_unary_expr.txt +++ b/crates/mun_syntax/tests/data/parser/ok/0004_unary_expr.txt @@ -1,50 +1,50 @@ -SOURCE_FILE@[0; 61) - FUNCTION_DEF@[0; 61) - FUNCTION_KW@[0; 8) "function" +SOURCE_FILE@[0; 55) + FUNCTION_DEF@[0; 55) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 8) + L_PAREN@[6; 7) "(" + R_PAREN@[7; 8) ")" WHITESPACE@[8; 9) " " - NAME@[9; 12) - IDENT@[9; 12) "foo" - PARAM_LIST@[12; 14) - L_PAREN@[12; 13) "(" - R_PAREN@[13; 14) ")" - WHITESPACE@[14; 15) " " - BLOCK@[15; 61) - L_CURLY@[15; 16) "{" - WHITESPACE@[16; 21) "\n " - LET_STMT@[21; 33) - LET_KW@[21; 24) "let" - WHITESPACE@[24; 25) " " - BIND_PAT@[25; 26) - NAME@[25; 26) - IDENT@[25; 26) "a" - WHITESPACE@[26; 27) " " - EQ@[27; 28) "=" - WHITESPACE@[28; 29) " " - PREFIX_EXPR@[29; 32) - MINUS@[29; 30) "-" - PREFIX_EXPR@[30; 32) - MINUS@[30; 31) "-" - LITERAL@[31; 32) - INT_NUMBER@[31; 32) "3" - SEMI@[32; 33) ";" - WHITESPACE@[33; 38) "\n " - LET_STMT@[38; 59) - LET_KW@[38; 41) "let" - WHITESPACE@[41; 42) " " - BIND_PAT@[42; 43) - NAME@[42; 43) - IDENT@[42; 43) "b" - WHITESPACE@[43; 44) " " - EQ@[44; 45) "=" - WHITESPACE@[45; 46) " " - PREFIX_EXPR@[46; 58) - NOT_KW@[46; 49) "not" - WHITESPACE@[49; 50) " " - PREFIX_EXPR@[50; 58) - NOT_KW@[50; 53) "not" - WHITESPACE@[53; 54) " " - LITERAL@[54; 58) - TRUE_KW@[54; 58) "true" - SEMI@[58; 59) ";" - WHITESPACE@[59; 60) "\n" - R_CURLY@[60; 61) "}" + BLOCK@[9; 55) + L_CURLY@[9; 10) "{" + WHITESPACE@[10; 15) "\n " + LET_STMT@[15; 27) + LET_KW@[15; 18) "let" + WHITESPACE@[18; 19) " " + BIND_PAT@[19; 20) + NAME@[19; 20) + IDENT@[19; 20) "a" + WHITESPACE@[20; 21) " " + EQ@[21; 22) "=" + WHITESPACE@[22; 23) " " + PREFIX_EXPR@[23; 26) + MINUS@[23; 24) "-" + PREFIX_EXPR@[24; 26) + MINUS@[24; 25) "-" + LITERAL@[25; 26) + INT_NUMBER@[25; 26) "3" + SEMI@[26; 27) ";" + WHITESPACE@[27; 32) "\n " + LET_STMT@[32; 53) + LET_KW@[32; 35) "let" + WHITESPACE@[35; 36) " " + BIND_PAT@[36; 37) + NAME@[36; 37) + IDENT@[36; 37) "b" + WHITESPACE@[37; 38) " " + EQ@[38; 39) "=" + WHITESPACE@[39; 40) " " + PREFIX_EXPR@[40; 52) + NOT_KW@[40; 43) "not" + WHITESPACE@[43; 44) " " + PREFIX_EXPR@[44; 52) + NOT_KW@[44; 47) "not" + WHITESPACE@[47; 48) " " + LITERAL@[48; 52) + TRUE_KW@[48; 52) "true" + SEMI@[52; 53) ";" + WHITESPACE@[53; 54) "\n" + R_CURLY@[54; 55) "}" diff --git a/crates/mun_syntax/tests/data/parser/ok/0005_binary_expr.mun b/crates/mun_syntax/tests/data/parser/ok/0005_binary_expr.mun index bcf1bc544..bdc54c5d6 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0005_binary_expr.mun +++ b/crates/mun_syntax/tests/data/parser/ok/0005_binary_expr.mun @@ -1,4 +1,4 @@ -function foo() { +fn foo() { let a = 3+4*5 let b = 3*4+10/2 } \ No newline at end of file diff --git a/crates/mun_syntax/tests/data/parser/ok/0005_binary_expr.txt b/crates/mun_syntax/tests/data/parser/ok/0005_binary_expr.txt index a3de96946..b1f3a76d4 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0005_binary_expr.txt +++ b/crates/mun_syntax/tests/data/parser/ok/0005_binary_expr.txt @@ -1,58 +1,58 @@ -SOURCE_FILE@[0; 57) - FUNCTION_DEF@[0; 57) - FUNCTION_KW@[0; 8) "function" +SOURCE_FILE@[0; 51) + FUNCTION_DEF@[0; 51) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 8) + L_PAREN@[6; 7) "(" + R_PAREN@[7; 8) ")" WHITESPACE@[8; 9) " " - NAME@[9; 12) - IDENT@[9; 12) "foo" - PARAM_LIST@[12; 14) - L_PAREN@[12; 13) "(" - R_PAREN@[13; 14) ")" - WHITESPACE@[14; 15) " " - BLOCK@[15; 57) - L_CURLY@[15; 16) "{" - WHITESPACE@[16; 21) "\n " - LET_STMT@[21; 34) - LET_KW@[21; 24) "let" - WHITESPACE@[24; 25) " " - BIND_PAT@[25; 26) - NAME@[25; 26) - IDENT@[25; 26) "a" - WHITESPACE@[26; 27) " " - EQ@[27; 28) "=" - WHITESPACE@[28; 29) " " - BIN_EXPR@[29; 34) - LITERAL@[29; 30) - INT_NUMBER@[29; 30) "3" - PLUS@[30; 31) "+" - BIN_EXPR@[31; 34) - LITERAL@[31; 32) - INT_NUMBER@[31; 32) "4" - STAR@[32; 33) "*" - LITERAL@[33; 34) - INT_NUMBER@[33; 34) "5" - WHITESPACE@[34; 39) "\n " - LET_STMT@[39; 55) - LET_KW@[39; 42) "let" - WHITESPACE@[42; 43) " " - BIND_PAT@[43; 44) - NAME@[43; 44) - IDENT@[43; 44) "b" - WHITESPACE@[44; 45) " " - EQ@[45; 46) "=" - WHITESPACE@[46; 47) " " - BIN_EXPR@[47; 55) - BIN_EXPR@[47; 50) - LITERAL@[47; 48) - INT_NUMBER@[47; 48) "3" - STAR@[48; 49) "*" - LITERAL@[49; 50) - INT_NUMBER@[49; 50) "4" - PLUS@[50; 51) "+" - BIN_EXPR@[51; 55) - LITERAL@[51; 53) - INT_NUMBER@[51; 53) "10" - SLASH@[53; 54) "/" - LITERAL@[54; 55) - INT_NUMBER@[54; 55) "2" - WHITESPACE@[55; 56) "\n" - R_CURLY@[56; 57) "}" + BLOCK@[9; 51) + L_CURLY@[9; 10) "{" + WHITESPACE@[10; 15) "\n " + LET_STMT@[15; 28) + LET_KW@[15; 18) "let" + WHITESPACE@[18; 19) " " + BIND_PAT@[19; 20) + NAME@[19; 20) + IDENT@[19; 20) "a" + WHITESPACE@[20; 21) " " + EQ@[21; 22) "=" + WHITESPACE@[22; 23) " " + BIN_EXPR@[23; 28) + LITERAL@[23; 24) + INT_NUMBER@[23; 24) "3" + PLUS@[24; 25) "+" + BIN_EXPR@[25; 28) + LITERAL@[25; 26) + INT_NUMBER@[25; 26) "4" + STAR@[26; 27) "*" + LITERAL@[27; 28) + INT_NUMBER@[27; 28) "5" + WHITESPACE@[28; 33) "\n " + LET_STMT@[33; 49) + LET_KW@[33; 36) "let" + WHITESPACE@[36; 37) " " + BIND_PAT@[37; 38) + NAME@[37; 38) + IDENT@[37; 38) "b" + WHITESPACE@[38; 39) " " + EQ@[39; 40) "=" + WHITESPACE@[40; 41) " " + BIN_EXPR@[41; 49) + BIN_EXPR@[41; 44) + LITERAL@[41; 42) + INT_NUMBER@[41; 42) "3" + STAR@[42; 43) "*" + LITERAL@[43; 44) + INT_NUMBER@[43; 44) "4" + PLUS@[44; 45) "+" + BIN_EXPR@[45; 49) + LITERAL@[45; 47) + INT_NUMBER@[45; 47) "10" + SLASH@[47; 48) "/" + LITERAL@[48; 49) + INT_NUMBER@[48; 49) "2" + WHITESPACE@[49; 50) "\n" + R_CURLY@[50; 51) "}" diff --git a/crates/mun_syntax/tests/data/parser/ok/0006_expr_stmt.mun b/crates/mun_syntax/tests/data/parser/ok/0006_expr_stmt.mun index f2d851771..552e61201 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0006_expr_stmt.mun +++ b/crates/mun_syntax/tests/data/parser/ok/0006_expr_stmt.mun @@ -1,4 +1,4 @@ -function foo() { +fn foo() { let a = "hello" let b = "world" let c diff --git a/crates/mun_syntax/tests/data/parser/ok/0006_expr_stmt.txt b/crates/mun_syntax/tests/data/parser/ok/0006_expr_stmt.txt index 371b7fffd..ab09bd51d 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0006_expr_stmt.txt +++ b/crates/mun_syntax/tests/data/parser/ok/0006_expr_stmt.txt @@ -1,94 +1,94 @@ -SOURCE_FILE@[0; 119) - FUNCTION_DEF@[0; 119) - FUNCTION_KW@[0; 8) "function" +SOURCE_FILE@[0; 113) + FUNCTION_DEF@[0; 113) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 6) + IDENT@[3; 6) "foo" + PARAM_LIST@[6; 8) + L_PAREN@[6; 7) "(" + R_PAREN@[7; 8) ")" WHITESPACE@[8; 9) " " - NAME@[9; 12) - IDENT@[9; 12) "foo" - PARAM_LIST@[12; 14) - L_PAREN@[12; 13) "(" - R_PAREN@[13; 14) ")" - WHITESPACE@[14; 15) " " - BLOCK@[15; 119) - L_CURLY@[15; 16) "{" - WHITESPACE@[16; 21) "\n " - LET_STMT@[21; 36) - LET_KW@[21; 24) "let" - WHITESPACE@[24; 25) " " - BIND_PAT@[25; 26) - NAME@[25; 26) - IDENT@[25; 26) "a" - WHITESPACE@[26; 27) " " - EQ@[27; 28) "=" - WHITESPACE@[28; 29) " " - LITERAL@[29; 36) - STRING@[29; 36) "\"hello\"" - WHITESPACE@[36; 41) "\n " - LET_STMT@[41; 56) - LET_KW@[41; 44) "let" - WHITESPACE@[44; 45) " " - BIND_PAT@[45; 46) - NAME@[45; 46) - IDENT@[45; 46) "b" - WHITESPACE@[46; 47) " " - EQ@[47; 48) "=" - WHITESPACE@[48; 49) " " - LITERAL@[49; 56) - STRING@[49; 56) "\"world\"" - WHITESPACE@[56; 61) "\n " - LET_STMT@[61; 66) - LET_KW@[61; 64) "let" - WHITESPACE@[64; 65) " " - BIND_PAT@[65; 66) - NAME@[65; 66) - IDENT@[65; 66) "c" - WHITESPACE@[66; 71) "\n " - EXPR_STMT@[71; 90) - BIN_EXPR@[71; 90) - PATH_EXPR@[71; 72) - PATH@[71; 72) - PATH_SEGMENT@[71; 72) - NAME_REF@[71; 72) - IDENT@[71; 72) "b" - WHITESPACE@[72; 73) " " - EQ@[73; 74) "=" - WHITESPACE@[74; 75) " " - LITERAL@[75; 90) - STRING@[75; 90) "\"Hello, world!\"" - WHITESPACE@[90; 95) "\n " - EXPR_STMT@[95; 110) - BIN_EXPR@[95; 109) - PREFIX_EXPR@[95; 101) - NOT_KW@[95; 98) "not" - WHITESPACE@[98; 99) " " - PREFIX_EXPR@[99; 101) - MINUS@[99; 100) "-" - LITERAL@[100; 101) - INT_NUMBER@[100; 101) "5" - PLUS@[101; 102) "+" - BIN_EXPR@[102; 109) - LITERAL@[102; 103) - INT_NUMBER@[102; 103) "2" - STAR@[103; 104) "*" - PAREN_EXPR@[104; 109) - L_PAREN@[104; 105) "(" - BIN_EXPR@[105; 108) - PATH_EXPR@[105; 106) - PATH@[105; 106) - PATH_SEGMENT@[105; 106) - NAME_REF@[105; 106) - IDENT@[105; 106) "a" - PLUS@[106; 107) "+" - PATH_EXPR@[107; 108) - PATH@[107; 108) - PATH_SEGMENT@[107; 108) - NAME_REF@[107; 108) - IDENT@[107; 108) "b" - R_PAREN@[108; 109) ")" - SEMI@[109; 110) ";" - WHITESPACE@[110; 115) "\n " - PREFIX_EXPR@[115; 117) - MINUS@[115; 116) "-" - LITERAL@[116; 117) - INT_NUMBER@[116; 117) "3" - WHITESPACE@[117; 118) "\n" - R_CURLY@[118; 119) "}" + BLOCK@[9; 113) + L_CURLY@[9; 10) "{" + WHITESPACE@[10; 15) "\n " + LET_STMT@[15; 30) + LET_KW@[15; 18) "let" + WHITESPACE@[18; 19) " " + BIND_PAT@[19; 20) + NAME@[19; 20) + IDENT@[19; 20) "a" + WHITESPACE@[20; 21) " " + EQ@[21; 22) "=" + WHITESPACE@[22; 23) " " + LITERAL@[23; 30) + STRING@[23; 30) "\"hello\"" + WHITESPACE@[30; 35) "\n " + LET_STMT@[35; 50) + LET_KW@[35; 38) "let" + WHITESPACE@[38; 39) " " + BIND_PAT@[39; 40) + NAME@[39; 40) + IDENT@[39; 40) "b" + WHITESPACE@[40; 41) " " + EQ@[41; 42) "=" + WHITESPACE@[42; 43) " " + LITERAL@[43; 50) + STRING@[43; 50) "\"world\"" + WHITESPACE@[50; 55) "\n " + LET_STMT@[55; 60) + LET_KW@[55; 58) "let" + WHITESPACE@[58; 59) " " + BIND_PAT@[59; 60) + NAME@[59; 60) + IDENT@[59; 60) "c" + WHITESPACE@[60; 65) "\n " + EXPR_STMT@[65; 84) + BIN_EXPR@[65; 84) + PATH_EXPR@[65; 66) + PATH@[65; 66) + PATH_SEGMENT@[65; 66) + NAME_REF@[65; 66) + IDENT@[65; 66) "b" + WHITESPACE@[66; 67) " " + EQ@[67; 68) "=" + WHITESPACE@[68; 69) " " + LITERAL@[69; 84) + STRING@[69; 84) "\"Hello, world!\"" + WHITESPACE@[84; 89) "\n " + EXPR_STMT@[89; 104) + BIN_EXPR@[89; 103) + PREFIX_EXPR@[89; 95) + NOT_KW@[89; 92) "not" + WHITESPACE@[92; 93) " " + PREFIX_EXPR@[93; 95) + MINUS@[93; 94) "-" + LITERAL@[94; 95) + INT_NUMBER@[94; 95) "5" + PLUS@[95; 96) "+" + BIN_EXPR@[96; 103) + LITERAL@[96; 97) + INT_NUMBER@[96; 97) "2" + STAR@[97; 98) "*" + PAREN_EXPR@[98; 103) + L_PAREN@[98; 99) "(" + BIN_EXPR@[99; 102) + PATH_EXPR@[99; 100) + PATH@[99; 100) + PATH_SEGMENT@[99; 100) + NAME_REF@[99; 100) + IDENT@[99; 100) "a" + PLUS@[100; 101) "+" + PATH_EXPR@[101; 102) + PATH@[101; 102) + PATH_SEGMENT@[101; 102) + NAME_REF@[101; 102) + IDENT@[101; 102) "b" + R_PAREN@[102; 103) ")" + SEMI@[103; 104) ";" + WHITESPACE@[104; 109) "\n " + PREFIX_EXPR@[109; 111) + MINUS@[109; 110) "-" + LITERAL@[110; 111) + INT_NUMBER@[110; 111) "3" + WHITESPACE@[111; 112) "\n" + R_CURLY@[112; 113) "}" diff --git a/crates/mun_syntax/tests/data/parser/ok/0007_fn_calls.mun b/crates/mun_syntax/tests/data/parser/ok/0007_fn_calls.mun index 411c2cc9c..1ef621632 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0007_fn_calls.mun +++ b/crates/mun_syntax/tests/data/parser/ok/0007_fn_calls.mun @@ -1,4 +1,4 @@ -function bar(i:number) { } -function foo(i:number) { +fn bar(i:number) { } +fn foo(i:number) { bar(i+1) } \ No newline at end of file diff --git a/crates/mun_syntax/tests/data/parser/ok/0007_fn_calls.txt b/crates/mun_syntax/tests/data/parser/ok/0007_fn_calls.txt index 2d0a2464f..a7f784105 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0007_fn_calls.txt +++ b/crates/mun_syntax/tests/data/parser/ok/0007_fn_calls.txt @@ -1,67 +1,67 @@ -SOURCE_FILE@[0; 64) - FUNCTION_DEF@[0; 26) - FUNCTION_KW@[0; 8) "function" - WHITESPACE@[8; 9) " " - NAME@[9; 12) - IDENT@[9; 12) "bar" - PARAM_LIST@[12; 22) - L_PAREN@[12; 13) "(" - PARAM@[13; 21) - BIND_PAT@[13; 14) - NAME@[13; 14) - IDENT@[13; 14) "i" - COLON@[14; 15) ":" - PATH_TYPE@[15; 21) - PATH@[15; 21) - PATH_SEGMENT@[15; 21) - NAME_REF@[15; 21) - IDENT@[15; 21) "number" - R_PAREN@[21; 22) ")" - WHITESPACE@[22; 23) " " - BLOCK@[23; 26) - L_CURLY@[23; 24) "{" - WHITESPACE@[24; 25) " " - R_CURLY@[25; 26) "}" - FUNCTION_DEF@[26; 64) - WHITESPACE@[26; 27) "\n" - FUNCTION_KW@[27; 35) "function" - WHITESPACE@[35; 36) " " - NAME@[36; 39) - IDENT@[36; 39) "foo" - PARAM_LIST@[39; 49) - L_PAREN@[39; 40) "(" - PARAM@[40; 48) - BIND_PAT@[40; 41) - NAME@[40; 41) - IDENT@[40; 41) "i" - COLON@[41; 42) ":" - PATH_TYPE@[42; 48) - PATH@[42; 48) - PATH_SEGMENT@[42; 48) - NAME_REF@[42; 48) - IDENT@[42; 48) "number" - R_PAREN@[48; 49) ")" - WHITESPACE@[49; 50) " " - BLOCK@[50; 64) - L_CURLY@[50; 51) "{" - WHITESPACE@[51; 54) "\n " - CALL_EXPR@[54; 62) - PATH_EXPR@[54; 57) - PATH@[54; 57) - PATH_SEGMENT@[54; 57) - NAME_REF@[54; 57) - IDENT@[54; 57) "bar" - ARG_LIST@[57; 62) - L_PAREN@[57; 58) "(" - BIN_EXPR@[58; 61) - PATH_EXPR@[58; 59) - PATH@[58; 59) - PATH_SEGMENT@[58; 59) - NAME_REF@[58; 59) - IDENT@[58; 59) "i" - PLUS@[59; 60) "+" - LITERAL@[60; 61) - INT_NUMBER@[60; 61) "1" - R_PAREN@[61; 62) ")" - WHITESPACE@[62; 63) "\n" - R_CURLY@[63; 64) "}" +SOURCE_FILE@[0; 52) + FUNCTION_DEF@[0; 20) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 6) + IDENT@[3; 6) "bar" + PARAM_LIST@[6; 16) + L_PAREN@[6; 7) "(" + PARAM@[7; 15) + BIND_PAT@[7; 8) + NAME@[7; 8) + IDENT@[7; 8) "i" + COLON@[8; 9) ":" + PATH_TYPE@[9; 15) + PATH@[9; 15) + PATH_SEGMENT@[9; 15) + NAME_REF@[9; 15) + IDENT@[9; 15) "number" + R_PAREN@[15; 16) ")" + WHITESPACE@[16; 17) " " + BLOCK@[17; 20) + L_CURLY@[17; 18) "{" + WHITESPACE@[18; 19) " " + R_CURLY@[19; 20) "}" + FUNCTION_DEF@[20; 52) + WHITESPACE@[20; 21) "\n" + FN_KW@[21; 23) "fn" + WHITESPACE@[23; 24) " " + NAME@[24; 27) + IDENT@[24; 27) "foo" + PARAM_LIST@[27; 37) + L_PAREN@[27; 28) "(" + PARAM@[28; 36) + BIND_PAT@[28; 29) + NAME@[28; 29) + IDENT@[28; 29) "i" + COLON@[29; 30) ":" + PATH_TYPE@[30; 36) + PATH@[30; 36) + PATH_SEGMENT@[30; 36) + NAME_REF@[30; 36) + IDENT@[30; 36) "number" + R_PAREN@[36; 37) ")" + WHITESPACE@[37; 38) " " + BLOCK@[38; 52) + L_CURLY@[38; 39) "{" + WHITESPACE@[39; 42) "\n " + CALL_EXPR@[42; 50) + PATH_EXPR@[42; 45) + PATH@[42; 45) + PATH_SEGMENT@[42; 45) + NAME_REF@[42; 45) + IDENT@[42; 45) "bar" + ARG_LIST@[45; 50) + L_PAREN@[45; 46) "(" + BIN_EXPR@[46; 49) + PATH_EXPR@[46; 47) + PATH@[46; 47) + PATH_SEGMENT@[46; 47) + NAME_REF@[46; 47) + IDENT@[46; 47) "i" + PLUS@[47; 48) "+" + LITERAL@[48; 49) + INT_NUMBER@[48; 49) "1" + R_PAREN@[49; 50) ")" + WHITESPACE@[50; 51) "\n" + R_CURLY@[51; 52) "}" diff --git a/crates/mun_syntax/tests/data/parser/ok/0008_patterns.mun b/crates/mun_syntax/tests/data/parser/ok/0008_patterns.mun index 0508d1eb1..01b4ce126 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0008_patterns.mun +++ b/crates/mun_syntax/tests/data/parser/ok/0008_patterns.mun @@ -1,4 +1,4 @@ -function main(_:number) { +fn main(_:number) { let a = 0; let _ = a; } \ No newline at end of file diff --git a/crates/mun_syntax/tests/data/parser/ok/0008_patterns.txt b/crates/mun_syntax/tests/data/parser/ok/0008_patterns.txt index b4c443e08..040ce9cb1 100644 --- a/crates/mun_syntax/tests/data/parser/ok/0008_patterns.txt +++ b/crates/mun_syntax/tests/data/parser/ok/0008_patterns.txt @@ -1,51 +1,51 @@ -SOURCE_FILE@[0; 55) - FUNCTION_DEF@[0; 55) - FUNCTION_KW@[0; 8) "function" - WHITESPACE@[8; 9) " " - NAME@[9; 13) - IDENT@[9; 13) "main" - PARAM_LIST@[13; 23) - L_PAREN@[13; 14) "(" - PARAM@[14; 22) - PLACEHOLDER_PAT@[14; 15) - UNDERSCORE@[14; 15) "_" - COLON@[15; 16) ":" - PATH_TYPE@[16; 22) - PATH@[16; 22) - PATH_SEGMENT@[16; 22) - NAME_REF@[16; 22) - IDENT@[16; 22) "number" - R_PAREN@[22; 23) ")" - WHITESPACE@[23; 24) " " - BLOCK@[24; 55) - L_CURLY@[24; 25) "{" - WHITESPACE@[25; 29) "\n " - LET_STMT@[29; 39) - LET_KW@[29; 32) "let" - WHITESPACE@[32; 33) " " - BIND_PAT@[33; 34) - NAME@[33; 34) - IDENT@[33; 34) "a" - WHITESPACE@[34; 35) " " - EQ@[35; 36) "=" - WHITESPACE@[36; 37) " " - LITERAL@[37; 38) - INT_NUMBER@[37; 38) "0" - SEMI@[38; 39) ";" - WHITESPACE@[39; 43) "\n " - LET_STMT@[43; 53) - LET_KW@[43; 46) "let" - WHITESPACE@[46; 47) " " - PLACEHOLDER_PAT@[47; 48) - UNDERSCORE@[47; 48) "_" - WHITESPACE@[48; 49) " " - EQ@[49; 50) "=" - WHITESPACE@[50; 51) " " - PATH_EXPR@[51; 52) - PATH@[51; 52) - PATH_SEGMENT@[51; 52) - NAME_REF@[51; 52) - IDENT@[51; 52) "a" - SEMI@[52; 53) ";" - WHITESPACE@[53; 54) "\n" - R_CURLY@[54; 55) "}" +SOURCE_FILE@[0; 49) + FUNCTION_DEF@[0; 49) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 7) + IDENT@[3; 7) "main" + PARAM_LIST@[7; 17) + L_PAREN@[7; 8) "(" + PARAM@[8; 16) + PLACEHOLDER_PAT@[8; 9) + UNDERSCORE@[8; 9) "_" + COLON@[9; 10) ":" + PATH_TYPE@[10; 16) + PATH@[10; 16) + PATH_SEGMENT@[10; 16) + NAME_REF@[10; 16) + IDENT@[10; 16) "number" + R_PAREN@[16; 17) ")" + WHITESPACE@[17; 18) " " + BLOCK@[18; 49) + L_CURLY@[18; 19) "{" + WHITESPACE@[19; 23) "\n " + LET_STMT@[23; 33) + LET_KW@[23; 26) "let" + WHITESPACE@[26; 27) " " + BIND_PAT@[27; 28) + NAME@[27; 28) + IDENT@[27; 28) "a" + WHITESPACE@[28; 29) " " + EQ@[29; 30) "=" + WHITESPACE@[30; 31) " " + LITERAL@[31; 32) + INT_NUMBER@[31; 32) "0" + SEMI@[32; 33) ";" + WHITESPACE@[33; 37) "\n " + LET_STMT@[37; 47) + LET_KW@[37; 40) "let" + WHITESPACE@[40; 41) " " + PLACEHOLDER_PAT@[41; 42) + UNDERSCORE@[41; 42) "_" + WHITESPACE@[42; 43) " " + EQ@[43; 44) "=" + WHITESPACE@[44; 45) " " + PATH_EXPR@[45; 46) + PATH@[45; 46) + PATH_SEGMENT@[45; 46) + NAME_REF@[45; 46) + IDENT@[45; 46) "a" + SEMI@[46; 47) ";" + WHITESPACE@[47; 48) "\n" + R_CURLY@[48; 49) "}"