mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-14 14:13:58 +00:00
G: value_parameters, patterns & let statement
This commit is contained in:
parent
8c4c5b5b80
commit
c6f4a06b42
31 changed files with 541 additions and 107 deletions
11
grammar.ron
11
grammar.ron
|
@ -27,6 +27,8 @@ Grammar(
|
||||||
"mut",
|
"mut",
|
||||||
"unsafe",
|
"unsafe",
|
||||||
"type",
|
"type",
|
||||||
|
"ref",
|
||||||
|
"let",
|
||||||
],
|
],
|
||||||
contextual_keywords: [
|
contextual_keywords: [
|
||||||
"auto",
|
"auto",
|
||||||
|
@ -113,6 +115,12 @@ Grammar(
|
||||||
"FN_POINTER_TYPE",
|
"FN_POINTER_TYPE",
|
||||||
"FOR_TYPE",
|
"FOR_TYPE",
|
||||||
|
|
||||||
|
"REF_PAT",
|
||||||
|
"BIND_PAT",
|
||||||
|
"PLACEHOLDER_PAT",
|
||||||
|
|
||||||
|
"TUPLE_EXPR",
|
||||||
|
|
||||||
"EXTERN_BLOCK",
|
"EXTERN_BLOCK",
|
||||||
"ENUM_VARIANT",
|
"ENUM_VARIANT",
|
||||||
"NAMED_FIELD",
|
"NAMED_FIELD",
|
||||||
|
@ -132,5 +140,8 @@ Grammar(
|
||||||
"ABI",
|
"ABI",
|
||||||
"NAME",
|
"NAME",
|
||||||
"NAME_REF",
|
"NAME_REF",
|
||||||
|
"VALUE_PARAMETER",
|
||||||
|
"BLOCK",
|
||||||
|
"LET_STMT",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
|
@ -14,7 +14,20 @@ pub(super) fn literal(p: &mut Parser) -> bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn expr(p: &mut Parser) {
|
pub(super) fn expr(p: &mut Parser) {
|
||||||
if !literal(p) {
|
if literal(p) {
|
||||||
p.error("expected expression");
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
match p.current() {
|
||||||
|
L_PAREN => tuple_expr(p),
|
||||||
|
_ => p.error("expected expression"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn tuple_expr(p: &mut Parser) {
|
||||||
|
assert!(p.at(L_PAREN));
|
||||||
|
let m = p.start();
|
||||||
|
p.expect(L_PAREN);
|
||||||
|
p.expect(R_PAREN);
|
||||||
|
m.complete(p, TUPLE_EXPR);
|
||||||
|
}
|
||||||
|
|
|
@ -218,9 +218,33 @@ fn fn_item(p: &mut Parser) {
|
||||||
p.error("expected function arguments");
|
p.error("expected function arguments");
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.at(L_CURLY) {
|
block(p);
|
||||||
p.expect(L_CURLY);
|
|
||||||
|
fn block(p: &mut Parser) {
|
||||||
|
if !p.at(L_CURLY) {
|
||||||
|
p.error("expected block");
|
||||||
|
}
|
||||||
|
let m = p.start();
|
||||||
|
p.bump();
|
||||||
|
while !p.at(EOF) && !p.at(R_CURLY) {
|
||||||
|
match p.current() {
|
||||||
|
LET_KW => let_stmt(p),
|
||||||
|
_ => p.err_and_bump("expected statement"),
|
||||||
|
}
|
||||||
|
}
|
||||||
p.expect(R_CURLY);
|
p.expect(R_CURLY);
|
||||||
|
m.complete(p, BLOCK);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn let_stmt(p: &mut Parser) {
|
||||||
|
assert!(p.at(LET_KW));
|
||||||
|
let m = p.start();
|
||||||
|
p.bump();
|
||||||
|
patterns::pattern(p);
|
||||||
|
p.expect(EQ);
|
||||||
|
expressions::expr(p);
|
||||||
|
p.expect(SEMI);
|
||||||
|
m.complete(p, LET_STMT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ mod items;
|
||||||
mod attributes;
|
mod attributes;
|
||||||
mod expressions;
|
mod expressions;
|
||||||
mod types;
|
mod types;
|
||||||
|
mod patterns;
|
||||||
mod paths;
|
mod paths;
|
||||||
mod type_params;
|
mod type_params;
|
||||||
|
|
||||||
|
@ -85,10 +86,29 @@ fn abi(p: &mut Parser) {
|
||||||
abi.complete(p, ABI);
|
abi.complete(p, ABI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test fn_value_parameters
|
||||||
|
// fn a() {}
|
||||||
|
// fn b(x: i32) {}
|
||||||
|
// fn c(x: i32, ) {}
|
||||||
|
// fn d(x: i32, y: ()) {}
|
||||||
fn fn_value_parameters(p: &mut Parser) {
|
fn fn_value_parameters(p: &mut Parser) {
|
||||||
assert!(p.at(L_PAREN));
|
assert!(p.at(L_PAREN));
|
||||||
p.bump();
|
p.bump();
|
||||||
|
while !p.at(EOF) && !p.at(R_PAREN) {
|
||||||
|
value_parameter(p);
|
||||||
|
if !p.at(R_PAREN) {
|
||||||
|
p.expect(COMMA);
|
||||||
|
}
|
||||||
|
}
|
||||||
p.expect(R_PAREN);
|
p.expect(R_PAREN);
|
||||||
|
|
||||||
|
fn value_parameter(p: &mut Parser) {
|
||||||
|
let m = p.start();
|
||||||
|
patterns::pattern(p);
|
||||||
|
p.expect(COLON);
|
||||||
|
types::type_(p);
|
||||||
|
m.complete(p, VALUE_PARAMETER);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fn_ret_type(p: &mut Parser) {
|
fn fn_ret_type(p: &mut Parser) {
|
||||||
|
|
52
src/parser/grammar/patterns.rs
Normal file
52
src/parser/grammar/patterns.rs
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
pub(super) fn pattern(p: &mut Parser) {
|
||||||
|
match p.current() {
|
||||||
|
UNDERSCORE => placeholder_pat(p),
|
||||||
|
AMPERSAND => ref_pat(p),
|
||||||
|
IDENT | REF_KW => bind_pat(p),
|
||||||
|
_ => p.err_and_bump("expected pattern"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// test placeholder_pat
|
||||||
|
// fn main() { let _ = (); }
|
||||||
|
fn placeholder_pat(p: &mut Parser) {
|
||||||
|
assert!(p.at(UNDERSCORE));
|
||||||
|
let m = p.start();
|
||||||
|
p.bump();
|
||||||
|
m.complete(p, PLACEHOLDER_PAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
// test ref_pat
|
||||||
|
// fn main() {
|
||||||
|
// let &a = ();
|
||||||
|
// let &mut b = ();
|
||||||
|
// }
|
||||||
|
fn ref_pat(p: &mut Parser) {
|
||||||
|
assert!(p.at(AMPERSAND));
|
||||||
|
let m = p.start();
|
||||||
|
p.bump();
|
||||||
|
p.eat(MUT_KW);
|
||||||
|
pattern(p);
|
||||||
|
m.complete(p, REF_PAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
// test bind_pat
|
||||||
|
// fn main() {
|
||||||
|
// let a = ();
|
||||||
|
// let ref b = ();
|
||||||
|
// let ref mut c = ();
|
||||||
|
// let d @ _ = ();
|
||||||
|
// }
|
||||||
|
fn bind_pat(p: &mut Parser) {
|
||||||
|
let m = p.start();
|
||||||
|
if p.eat(REF_KW) {
|
||||||
|
p.eat(MUT_KW);
|
||||||
|
}
|
||||||
|
name(p);
|
||||||
|
if p.eat(AT) {
|
||||||
|
pattern(p);
|
||||||
|
}
|
||||||
|
m.complete(p, BIND_PAT);
|
||||||
|
}
|
|
@ -84,6 +84,8 @@ pub enum SyntaxKind {
|
||||||
MUT_KW,
|
MUT_KW,
|
||||||
UNSAFE_KW,
|
UNSAFE_KW,
|
||||||
TYPE_KW,
|
TYPE_KW,
|
||||||
|
REF_KW,
|
||||||
|
LET_KW,
|
||||||
AUTO_KW,
|
AUTO_KW,
|
||||||
DEFAULT_KW,
|
DEFAULT_KW,
|
||||||
UNION_KW,
|
UNION_KW,
|
||||||
|
@ -110,6 +112,10 @@ pub enum SyntaxKind {
|
||||||
PLACEHOLDER_TYPE,
|
PLACEHOLDER_TYPE,
|
||||||
FN_POINTER_TYPE,
|
FN_POINTER_TYPE,
|
||||||
FOR_TYPE,
|
FOR_TYPE,
|
||||||
|
REF_PAT,
|
||||||
|
BIND_PAT,
|
||||||
|
PLACEHOLDER_PAT,
|
||||||
|
TUPLE_EXPR,
|
||||||
EXTERN_BLOCK,
|
EXTERN_BLOCK,
|
||||||
ENUM_VARIANT,
|
ENUM_VARIANT,
|
||||||
NAMED_FIELD,
|
NAMED_FIELD,
|
||||||
|
@ -129,6 +135,9 @@ pub enum SyntaxKind {
|
||||||
ABI,
|
ABI,
|
||||||
NAME,
|
NAME,
|
||||||
NAME_REF,
|
NAME_REF,
|
||||||
|
VALUE_PARAMETER,
|
||||||
|
BLOCK,
|
||||||
|
LET_STMT,
|
||||||
|
|
||||||
// Technical SyntaxKinds: they appear temporally during parsing,
|
// Technical SyntaxKinds: they appear temporally during parsing,
|
||||||
// but never end up in the final tree
|
// but never end up in the final tree
|
||||||
|
@ -220,6 +229,8 @@ impl SyntaxKind {
|
||||||
MUT_KW => &SyntaxInfo { name: "MUT_KW" },
|
MUT_KW => &SyntaxInfo { name: "MUT_KW" },
|
||||||
UNSAFE_KW => &SyntaxInfo { name: "UNSAFE_KW" },
|
UNSAFE_KW => &SyntaxInfo { name: "UNSAFE_KW" },
|
||||||
TYPE_KW => &SyntaxInfo { name: "TYPE_KW" },
|
TYPE_KW => &SyntaxInfo { name: "TYPE_KW" },
|
||||||
|
REF_KW => &SyntaxInfo { name: "REF_KW" },
|
||||||
|
LET_KW => &SyntaxInfo { name: "LET_KW" },
|
||||||
AUTO_KW => &SyntaxInfo { name: "AUTO_KW" },
|
AUTO_KW => &SyntaxInfo { name: "AUTO_KW" },
|
||||||
DEFAULT_KW => &SyntaxInfo { name: "DEFAULT_KW" },
|
DEFAULT_KW => &SyntaxInfo { name: "DEFAULT_KW" },
|
||||||
UNION_KW => &SyntaxInfo { name: "UNION_KW" },
|
UNION_KW => &SyntaxInfo { name: "UNION_KW" },
|
||||||
|
@ -246,6 +257,10 @@ impl SyntaxKind {
|
||||||
PLACEHOLDER_TYPE => &SyntaxInfo { name: "PLACEHOLDER_TYPE" },
|
PLACEHOLDER_TYPE => &SyntaxInfo { name: "PLACEHOLDER_TYPE" },
|
||||||
FN_POINTER_TYPE => &SyntaxInfo { name: "FN_POINTER_TYPE" },
|
FN_POINTER_TYPE => &SyntaxInfo { name: "FN_POINTER_TYPE" },
|
||||||
FOR_TYPE => &SyntaxInfo { name: "FOR_TYPE" },
|
FOR_TYPE => &SyntaxInfo { name: "FOR_TYPE" },
|
||||||
|
REF_PAT => &SyntaxInfo { name: "REF_PAT" },
|
||||||
|
BIND_PAT => &SyntaxInfo { name: "BIND_PAT" },
|
||||||
|
PLACEHOLDER_PAT => &SyntaxInfo { name: "PLACEHOLDER_PAT" },
|
||||||
|
TUPLE_EXPR => &SyntaxInfo { name: "TUPLE_EXPR" },
|
||||||
EXTERN_BLOCK => &SyntaxInfo { name: "EXTERN_BLOCK" },
|
EXTERN_BLOCK => &SyntaxInfo { name: "EXTERN_BLOCK" },
|
||||||
ENUM_VARIANT => &SyntaxInfo { name: "ENUM_VARIANT" },
|
ENUM_VARIANT => &SyntaxInfo { name: "ENUM_VARIANT" },
|
||||||
NAMED_FIELD => &SyntaxInfo { name: "NAMED_FIELD" },
|
NAMED_FIELD => &SyntaxInfo { name: "NAMED_FIELD" },
|
||||||
|
@ -265,6 +280,9 @@ impl SyntaxKind {
|
||||||
ABI => &SyntaxInfo { name: "ABI" },
|
ABI => &SyntaxInfo { name: "ABI" },
|
||||||
NAME => &SyntaxInfo { name: "NAME" },
|
NAME => &SyntaxInfo { name: "NAME" },
|
||||||
NAME_REF => &SyntaxInfo { name: "NAME_REF" },
|
NAME_REF => &SyntaxInfo { name: "NAME_REF" },
|
||||||
|
VALUE_PARAMETER => &SyntaxInfo { name: "VALUE_PARAMETER" },
|
||||||
|
BLOCK => &SyntaxInfo { name: "BLOCK" },
|
||||||
|
LET_STMT => &SyntaxInfo { name: "LET_STMT" },
|
||||||
|
|
||||||
TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" },
|
TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" },
|
||||||
EOF => &SyntaxInfo { name: "EOF" },
|
EOF => &SyntaxInfo { name: "EOF" },
|
||||||
|
@ -301,6 +319,8 @@ pub(crate) fn ident_to_keyword(ident: &str) -> Option<SyntaxKind> {
|
||||||
"mut" => Some(MUT_KW),
|
"mut" => Some(MUT_KW),
|
||||||
"unsafe" => Some(UNSAFE_KW),
|
"unsafe" => Some(UNSAFE_KW),
|
||||||
"type" => Some(TYPE_KW),
|
"type" => Some(TYPE_KW),
|
||||||
|
"ref" => Some(REF_KW),
|
||||||
|
"let" => Some(LET_KW),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
fn use struct trait enum impl true false as extern crate
|
fn use struct trait enum impl true false as extern crate
|
||||||
mod pub self super in where for loop while if match const
|
mod pub self super in where for loop while if match const
|
||||||
static mut type
|
static mut type ref let
|
||||||
|
|
|
@ -49,4 +49,8 @@ WHITESPACE 1 " "
|
||||||
MUT_KW 3 "mut"
|
MUT_KW 3 "mut"
|
||||||
WHITESPACE 1 " "
|
WHITESPACE 1 " "
|
||||||
TYPE_KW 4 "type"
|
TYPE_KW 4 "type"
|
||||||
|
WHITESPACE 1 " "
|
||||||
|
REF_KW 3 "ref"
|
||||||
|
WHITESPACE 1 " "
|
||||||
|
LET_KW 3 "let"
|
||||||
WHITESPACE 1 "\n"
|
WHITESPACE 1 "\n"
|
||||||
|
|
|
@ -28,11 +28,12 @@ FILE@[0; 54)
|
||||||
IDENT@[22; 25) "foo"
|
IDENT@[22; 25) "foo"
|
||||||
L_PAREN@[25; 26)
|
L_PAREN@[25; 26)
|
||||||
R_PAREN@[26; 27)
|
R_PAREN@[26; 27)
|
||||||
WHITESPACE@[27; 28)
|
BLOCK@[27; 34)
|
||||||
L_CURLY@[28; 29)
|
WHITESPACE@[27; 28)
|
||||||
WHITESPACE@[29; 30)
|
L_CURLY@[28; 29)
|
||||||
R_CURLY@[30; 31)
|
WHITESPACE@[29; 30)
|
||||||
WHITESPACE@[31; 34)
|
R_CURLY@[30; 31)
|
||||||
|
WHITESPACE@[31; 34)
|
||||||
FN_ITEM@[34; 54)
|
FN_ITEM@[34; 54)
|
||||||
ATTR@[34; 41)
|
ATTR@[34; 41)
|
||||||
POUND@[34; 35)
|
POUND@[34; 35)
|
||||||
|
@ -49,8 +50,9 @@ FILE@[0; 54)
|
||||||
IDENT@[44; 47) "foo"
|
IDENT@[44; 47) "foo"
|
||||||
L_PAREN@[47; 48)
|
L_PAREN@[47; 48)
|
||||||
R_PAREN@[48; 49)
|
R_PAREN@[48; 49)
|
||||||
WHITESPACE@[49; 50)
|
BLOCK@[49; 54)
|
||||||
L_CURLY@[50; 51)
|
WHITESPACE@[49; 50)
|
||||||
WHITESPACE@[51; 52)
|
L_CURLY@[50; 51)
|
||||||
R_CURLY@[52; 53)
|
WHITESPACE@[51; 52)
|
||||||
WHITESPACE@[53; 54)
|
R_CURLY@[52; 53)
|
||||||
|
WHITESPACE@[53; 54)
|
||||||
|
|
|
@ -21,9 +21,10 @@ FILE@[0; 31)
|
||||||
IDENT@[20; 23) "foo"
|
IDENT@[20; 23) "foo"
|
||||||
L_PAREN@[23; 24)
|
L_PAREN@[23; 24)
|
||||||
R_PAREN@[24; 25)
|
R_PAREN@[24; 25)
|
||||||
L_CURLY@[25; 26)
|
BLOCK@[25; 29)
|
||||||
R_CURLY@[26; 27)
|
L_CURLY@[25; 26)
|
||||||
WHITESPACE@[27; 29)
|
R_CURLY@[26; 27)
|
||||||
|
WHITESPACE@[27; 29)
|
||||||
ERROR@[29; 31)
|
ERROR@[29; 31)
|
||||||
err: `expected item`
|
err: `expected item`
|
||||||
R_CURLY@[29; 30)
|
R_CURLY@[29; 30)
|
||||||
|
|
|
@ -6,11 +6,12 @@ FILE@[0; 95)
|
||||||
IDENT@[3; 6) "foo"
|
IDENT@[3; 6) "foo"
|
||||||
L_PAREN@[6; 7)
|
L_PAREN@[6; 7)
|
||||||
R_PAREN@[7; 8)
|
R_PAREN@[7; 8)
|
||||||
WHITESPACE@[8; 9)
|
BLOCK@[8; 14)
|
||||||
L_CURLY@[9; 10)
|
WHITESPACE@[8; 9)
|
||||||
WHITESPACE@[10; 11)
|
L_CURLY@[9; 10)
|
||||||
R_CURLY@[11; 12)
|
WHITESPACE@[10; 11)
|
||||||
WHITESPACE@[12; 14)
|
R_CURLY@[11; 12)
|
||||||
|
WHITESPACE@[12; 14)
|
||||||
ERROR@[14; 17)
|
ERROR@[14; 17)
|
||||||
err: `expected item`
|
err: `expected item`
|
||||||
IDENT@[14; 17) "bar"
|
IDENT@[14; 17) "bar"
|
||||||
|
@ -56,8 +57,9 @@ FILE@[0; 95)
|
||||||
IDENT@[85; 88) "baz"
|
IDENT@[85; 88) "baz"
|
||||||
L_PAREN@[88; 89)
|
L_PAREN@[88; 89)
|
||||||
R_PAREN@[89; 90)
|
R_PAREN@[89; 90)
|
||||||
WHITESPACE@[90; 91)
|
BLOCK@[90; 95)
|
||||||
L_CURLY@[91; 92)
|
WHITESPACE@[90; 91)
|
||||||
WHITESPACE@[92; 93)
|
L_CURLY@[91; 92)
|
||||||
R_CURLY@[93; 94)
|
WHITESPACE@[92; 93)
|
||||||
WHITESPACE@[94; 95)
|
R_CURLY@[93; 94)
|
||||||
|
WHITESPACE@[94; 95)
|
||||||
|
|
|
@ -10,7 +10,8 @@ FILE@[0; 25)
|
||||||
IDENT@[16; 19) "foo"
|
IDENT@[16; 19) "foo"
|
||||||
L_PAREN@[19; 20)
|
L_PAREN@[19; 20)
|
||||||
R_PAREN@[20; 21)
|
R_PAREN@[20; 21)
|
||||||
WHITESPACE@[21; 22)
|
BLOCK@[21; 25)
|
||||||
L_CURLY@[22; 23)
|
WHITESPACE@[21; 22)
|
||||||
R_CURLY@[23; 24)
|
L_CURLY@[22; 23)
|
||||||
WHITESPACE@[24; 25)
|
R_CURLY@[23; 24)
|
||||||
|
WHITESPACE@[24; 25)
|
||||||
|
|
|
@ -8,7 +8,8 @@ FILE@[0; 18)
|
||||||
IDENT@[9; 12) "foo"
|
IDENT@[9; 12) "foo"
|
||||||
L_PAREN@[12; 13)
|
L_PAREN@[12; 13)
|
||||||
R_PAREN@[13; 14)
|
R_PAREN@[13; 14)
|
||||||
WHITESPACE@[14; 15)
|
BLOCK@[14; 18)
|
||||||
L_CURLY@[15; 16)
|
WHITESPACE@[14; 15)
|
||||||
R_CURLY@[16; 17)
|
L_CURLY@[15; 16)
|
||||||
WHITESPACE@[17; 18)
|
R_CURLY@[16; 17)
|
||||||
|
WHITESPACE@[17; 18)
|
||||||
|
|
|
@ -9,7 +9,8 @@ FILE@[0; 19)
|
||||||
IDENT@[10; 13) "foo"
|
IDENT@[10; 13) "foo"
|
||||||
L_PAREN@[13; 14)
|
L_PAREN@[13; 14)
|
||||||
R_PAREN@[14; 15)
|
R_PAREN@[14; 15)
|
||||||
WHITESPACE@[15; 16)
|
BLOCK@[15; 19)
|
||||||
L_CURLY@[16; 17)
|
WHITESPACE@[15; 16)
|
||||||
R_CURLY@[17; 18)
|
L_CURLY@[16; 17)
|
||||||
WHITESPACE@[18; 19)
|
R_CURLY@[17; 18)
|
||||||
|
WHITESPACE@[18; 19)
|
||||||
|
|
|
@ -8,7 +8,8 @@ FILE@[0; 19)
|
||||||
IDENT@[10; 13) "foo"
|
IDENT@[10; 13) "foo"
|
||||||
L_PAREN@[13; 14)
|
L_PAREN@[13; 14)
|
||||||
R_PAREN@[14; 15)
|
R_PAREN@[14; 15)
|
||||||
WHITESPACE@[15; 16)
|
BLOCK@[15; 19)
|
||||||
L_CURLY@[16; 17)
|
WHITESPACE@[15; 16)
|
||||||
R_CURLY@[17; 18)
|
L_CURLY@[16; 17)
|
||||||
WHITESPACE@[18; 19)
|
R_CURLY@[17; 18)
|
||||||
|
WHITESPACE@[18; 19)
|
||||||
|
|
|
@ -13,7 +13,8 @@ FILE@[0; 30)
|
||||||
IDENT@[21; 24) "foo"
|
IDENT@[21; 24) "foo"
|
||||||
L_PAREN@[24; 25)
|
L_PAREN@[24; 25)
|
||||||
R_PAREN@[25; 26)
|
R_PAREN@[25; 26)
|
||||||
WHITESPACE@[26; 27)
|
BLOCK@[26; 30)
|
||||||
L_CURLY@[27; 28)
|
WHITESPACE@[26; 27)
|
||||||
R_CURLY@[28; 29)
|
L_CURLY@[27; 28)
|
||||||
WHITESPACE@[29; 30)
|
R_CURLY@[28; 29)
|
||||||
|
WHITESPACE@[29; 30)
|
||||||
|
|
|
@ -6,9 +6,10 @@ FILE@[0; 33)
|
||||||
IDENT@[3; 6) "foo"
|
IDENT@[3; 6) "foo"
|
||||||
L_PAREN@[6; 7)
|
L_PAREN@[6; 7)
|
||||||
R_PAREN@[7; 8)
|
R_PAREN@[7; 8)
|
||||||
L_CURLY@[8; 9)
|
BLOCK@[8; 11)
|
||||||
R_CURLY@[9; 10)
|
L_CURLY@[8; 9)
|
||||||
WHITESPACE@[10; 11)
|
R_CURLY@[9; 10)
|
||||||
|
WHITESPACE@[10; 11)
|
||||||
UNSAFE_KW@[11; 17)
|
UNSAFE_KW@[11; 17)
|
||||||
ERROR@[17; 22)
|
ERROR@[17; 22)
|
||||||
err: `expected `trait`, `impl` or `fn``
|
err: `expected `trait`, `impl` or `fn``
|
||||||
|
@ -24,6 +25,7 @@ FILE@[0; 33)
|
||||||
IDENT@[25; 28) "bar"
|
IDENT@[25; 28) "bar"
|
||||||
L_PAREN@[28; 29)
|
L_PAREN@[28; 29)
|
||||||
R_PAREN@[29; 30)
|
R_PAREN@[29; 30)
|
||||||
L_CURLY@[30; 31)
|
BLOCK@[30; 33)
|
||||||
R_CURLY@[31; 32)
|
L_CURLY@[30; 31)
|
||||||
WHITESPACE@[32; 33)
|
R_CURLY@[31; 32)
|
||||||
|
WHITESPACE@[32; 33)
|
||||||
|
|
4
tests/data/parser/inline/0033_fn_value_parameters.rs
Normal file
4
tests/data/parser/inline/0033_fn_value_parameters.rs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
fn a() {}
|
||||||
|
fn b(x: i32) {}
|
||||||
|
fn c(x: i32, ) {}
|
||||||
|
fn d(x: i32, y: ()) {}
|
95
tests/data/parser/inline/0033_fn_value_parameters.txt
Normal file
95
tests/data/parser/inline/0033_fn_value_parameters.txt
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
FILE@[0; 67)
|
||||||
|
FN_ITEM@[0; 10)
|
||||||
|
FN_KW@[0; 2)
|
||||||
|
NAME@[2; 4)
|
||||||
|
WHITESPACE@[2; 3)
|
||||||
|
IDENT@[3; 4) "a"
|
||||||
|
L_PAREN@[4; 5)
|
||||||
|
R_PAREN@[5; 6)
|
||||||
|
BLOCK@[6; 10)
|
||||||
|
WHITESPACE@[6; 7)
|
||||||
|
L_CURLY@[7; 8)
|
||||||
|
R_CURLY@[8; 9)
|
||||||
|
WHITESPACE@[9; 10)
|
||||||
|
FN_ITEM@[10; 26)
|
||||||
|
FN_KW@[10; 12)
|
||||||
|
NAME@[12; 14)
|
||||||
|
WHITESPACE@[12; 13)
|
||||||
|
IDENT@[13; 14) "b"
|
||||||
|
L_PAREN@[14; 15)
|
||||||
|
VALUE_PARAMETER@[15; 21)
|
||||||
|
BIND_PAT@[15; 16)
|
||||||
|
NAME@[15; 16)
|
||||||
|
IDENT@[15; 16) "x"
|
||||||
|
COLON@[16; 17)
|
||||||
|
PATH_TYPE@[17; 21)
|
||||||
|
PATH@[17; 21)
|
||||||
|
PATH_SEGMENT@[17; 21)
|
||||||
|
NAME_REF@[17; 21)
|
||||||
|
WHITESPACE@[17; 18)
|
||||||
|
IDENT@[18; 21) "i32"
|
||||||
|
R_PAREN@[21; 22)
|
||||||
|
BLOCK@[22; 26)
|
||||||
|
WHITESPACE@[22; 23)
|
||||||
|
L_CURLY@[23; 24)
|
||||||
|
R_CURLY@[24; 25)
|
||||||
|
WHITESPACE@[25; 26)
|
||||||
|
FN_ITEM@[26; 44)
|
||||||
|
FN_KW@[26; 28)
|
||||||
|
NAME@[28; 30)
|
||||||
|
WHITESPACE@[28; 29)
|
||||||
|
IDENT@[29; 30) "c"
|
||||||
|
L_PAREN@[30; 31)
|
||||||
|
VALUE_PARAMETER@[31; 37)
|
||||||
|
BIND_PAT@[31; 32)
|
||||||
|
NAME@[31; 32)
|
||||||
|
IDENT@[31; 32) "x"
|
||||||
|
COLON@[32; 33)
|
||||||
|
PATH_TYPE@[33; 37)
|
||||||
|
PATH@[33; 37)
|
||||||
|
PATH_SEGMENT@[33; 37)
|
||||||
|
NAME_REF@[33; 37)
|
||||||
|
WHITESPACE@[33; 34)
|
||||||
|
IDENT@[34; 37) "i32"
|
||||||
|
COMMA@[37; 38)
|
||||||
|
WHITESPACE@[38; 39)
|
||||||
|
R_PAREN@[39; 40)
|
||||||
|
BLOCK@[40; 44)
|
||||||
|
WHITESPACE@[40; 41)
|
||||||
|
L_CURLY@[41; 42)
|
||||||
|
R_CURLY@[42; 43)
|
||||||
|
WHITESPACE@[43; 44)
|
||||||
|
FN_ITEM@[44; 67)
|
||||||
|
FN_KW@[44; 46)
|
||||||
|
NAME@[46; 48)
|
||||||
|
WHITESPACE@[46; 47)
|
||||||
|
IDENT@[47; 48) "d"
|
||||||
|
L_PAREN@[48; 49)
|
||||||
|
VALUE_PARAMETER@[49; 55)
|
||||||
|
BIND_PAT@[49; 50)
|
||||||
|
NAME@[49; 50)
|
||||||
|
IDENT@[49; 50) "x"
|
||||||
|
COLON@[50; 51)
|
||||||
|
PATH_TYPE@[51; 55)
|
||||||
|
PATH@[51; 55)
|
||||||
|
PATH_SEGMENT@[51; 55)
|
||||||
|
NAME_REF@[51; 55)
|
||||||
|
WHITESPACE@[51; 52)
|
||||||
|
IDENT@[52; 55) "i32"
|
||||||
|
COMMA@[55; 56)
|
||||||
|
VALUE_PARAMETER@[56; 62)
|
||||||
|
BIND_PAT@[56; 58)
|
||||||
|
NAME@[56; 58)
|
||||||
|
WHITESPACE@[56; 57)
|
||||||
|
IDENT@[57; 58) "y"
|
||||||
|
COLON@[58; 59)
|
||||||
|
TUPLE_TYPE@[59; 62)
|
||||||
|
WHITESPACE@[59; 60)
|
||||||
|
L_PAREN@[60; 61)
|
||||||
|
R_PAREN@[61; 62)
|
||||||
|
R_PAREN@[62; 63)
|
||||||
|
BLOCK@[63; 67)
|
||||||
|
WHITESPACE@[63; 64)
|
||||||
|
L_CURLY@[64; 65)
|
||||||
|
R_CURLY@[65; 66)
|
||||||
|
WHITESPACE@[66; 67)
|
6
tests/data/parser/inline/0034_bind_pat.rs
Normal file
6
tests/data/parser/inline/0034_bind_pat.rs
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
fn main() {
|
||||||
|
let a = ();
|
||||||
|
let ref b = ();
|
||||||
|
let ref mut c = ();
|
||||||
|
let d @ _ = ();
|
||||||
|
}
|
81
tests/data/parser/inline/0034_bind_pat.txt
Normal file
81
tests/data/parser/inline/0034_bind_pat.txt
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
FILE@[0; 94)
|
||||||
|
FN_ITEM@[0; 94)
|
||||||
|
FN_KW@[0; 2)
|
||||||
|
NAME@[2; 7)
|
||||||
|
WHITESPACE@[2; 3)
|
||||||
|
IDENT@[3; 7) "main"
|
||||||
|
L_PAREN@[7; 8)
|
||||||
|
R_PAREN@[8; 9)
|
||||||
|
BLOCK@[9; 94)
|
||||||
|
WHITESPACE@[9; 10)
|
||||||
|
L_CURLY@[10; 11)
|
||||||
|
LET_STMT@[11; 32)
|
||||||
|
WHITESPACE@[11; 16)
|
||||||
|
LET_KW@[16; 19)
|
||||||
|
BIND_PAT@[19; 22)
|
||||||
|
NAME@[19; 22)
|
||||||
|
WHITESPACE@[19; 20)
|
||||||
|
IDENT@[20; 21) "a"
|
||||||
|
WHITESPACE@[21; 22)
|
||||||
|
EQ@[22; 23)
|
||||||
|
TUPLE_EXPR@[23; 26)
|
||||||
|
WHITESPACE@[23; 24)
|
||||||
|
L_PAREN@[24; 25)
|
||||||
|
R_PAREN@[25; 26)
|
||||||
|
SEMI@[26; 27)
|
||||||
|
WHITESPACE@[27; 32)
|
||||||
|
LET_STMT@[32; 52)
|
||||||
|
LET_KW@[32; 35)
|
||||||
|
BIND_PAT@[35; 42)
|
||||||
|
WHITESPACE@[35; 36)
|
||||||
|
REF_KW@[36; 39)
|
||||||
|
NAME@[39; 42)
|
||||||
|
WHITESPACE@[39; 40)
|
||||||
|
IDENT@[40; 41) "b"
|
||||||
|
WHITESPACE@[41; 42)
|
||||||
|
EQ@[42; 43)
|
||||||
|
TUPLE_EXPR@[43; 46)
|
||||||
|
WHITESPACE@[43; 44)
|
||||||
|
L_PAREN@[44; 45)
|
||||||
|
R_PAREN@[45; 46)
|
||||||
|
SEMI@[46; 47)
|
||||||
|
WHITESPACE@[47; 52)
|
||||||
|
LET_STMT@[52; 76)
|
||||||
|
LET_KW@[52; 55)
|
||||||
|
BIND_PAT@[55; 66)
|
||||||
|
WHITESPACE@[55; 56)
|
||||||
|
REF_KW@[56; 59)
|
||||||
|
WHITESPACE@[59; 60)
|
||||||
|
MUT_KW@[60; 63)
|
||||||
|
NAME@[63; 66)
|
||||||
|
WHITESPACE@[63; 64)
|
||||||
|
IDENT@[64; 65) "c"
|
||||||
|
WHITESPACE@[65; 66)
|
||||||
|
EQ@[66; 67)
|
||||||
|
TUPLE_EXPR@[67; 70)
|
||||||
|
WHITESPACE@[67; 68)
|
||||||
|
L_PAREN@[68; 69)
|
||||||
|
R_PAREN@[69; 70)
|
||||||
|
SEMI@[70; 71)
|
||||||
|
WHITESPACE@[71; 76)
|
||||||
|
LET_STMT@[76; 92)
|
||||||
|
LET_KW@[76; 79)
|
||||||
|
BIND_PAT@[79; 86)
|
||||||
|
NAME@[79; 82)
|
||||||
|
WHITESPACE@[79; 80)
|
||||||
|
IDENT@[80; 81) "d"
|
||||||
|
WHITESPACE@[81; 82)
|
||||||
|
AT@[82; 83)
|
||||||
|
PLACEHOLDER_PAT@[83; 86)
|
||||||
|
WHITESPACE@[83; 84)
|
||||||
|
UNDERSCORE@[84; 85)
|
||||||
|
WHITESPACE@[85; 86)
|
||||||
|
EQ@[86; 87)
|
||||||
|
TUPLE_EXPR@[87; 90)
|
||||||
|
WHITESPACE@[87; 88)
|
||||||
|
L_PAREN@[88; 89)
|
||||||
|
R_PAREN@[89; 90)
|
||||||
|
SEMI@[90; 91)
|
||||||
|
WHITESPACE@[91; 92)
|
||||||
|
R_CURLY@[92; 93)
|
||||||
|
WHITESPACE@[93; 94)
|
4
tests/data/parser/inline/0035_ref_pat.rs
Normal file
4
tests/data/parser/inline/0035_ref_pat.rs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
fn main() {
|
||||||
|
let &a = ();
|
||||||
|
let &mut b = ();
|
||||||
|
}
|
48
tests/data/parser/inline/0035_ref_pat.txt
Normal file
48
tests/data/parser/inline/0035_ref_pat.txt
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
FILE@[0; 52)
|
||||||
|
FN_ITEM@[0; 52)
|
||||||
|
FN_KW@[0; 2)
|
||||||
|
NAME@[2; 7)
|
||||||
|
WHITESPACE@[2; 3)
|
||||||
|
IDENT@[3; 7) "main"
|
||||||
|
L_PAREN@[7; 8)
|
||||||
|
R_PAREN@[8; 9)
|
||||||
|
BLOCK@[9; 52)
|
||||||
|
WHITESPACE@[9; 10)
|
||||||
|
L_CURLY@[10; 11)
|
||||||
|
LET_STMT@[11; 33)
|
||||||
|
WHITESPACE@[11; 16)
|
||||||
|
LET_KW@[16; 19)
|
||||||
|
REF_PAT@[19; 23)
|
||||||
|
WHITESPACE@[19; 20)
|
||||||
|
AMPERSAND@[20; 21)
|
||||||
|
BIND_PAT@[21; 23)
|
||||||
|
NAME@[21; 23)
|
||||||
|
IDENT@[21; 22) "a"
|
||||||
|
WHITESPACE@[22; 23)
|
||||||
|
EQ@[23; 24)
|
||||||
|
TUPLE_EXPR@[24; 27)
|
||||||
|
WHITESPACE@[24; 25)
|
||||||
|
L_PAREN@[25; 26)
|
||||||
|
R_PAREN@[26; 27)
|
||||||
|
SEMI@[27; 28)
|
||||||
|
WHITESPACE@[28; 33)
|
||||||
|
LET_STMT@[33; 50)
|
||||||
|
LET_KW@[33; 36)
|
||||||
|
REF_PAT@[36; 44)
|
||||||
|
WHITESPACE@[36; 37)
|
||||||
|
AMPERSAND@[37; 38)
|
||||||
|
MUT_KW@[38; 41)
|
||||||
|
BIND_PAT@[41; 44)
|
||||||
|
NAME@[41; 44)
|
||||||
|
WHITESPACE@[41; 42)
|
||||||
|
IDENT@[42; 43) "b"
|
||||||
|
WHITESPACE@[43; 44)
|
||||||
|
EQ@[44; 45)
|
||||||
|
TUPLE_EXPR@[45; 48)
|
||||||
|
WHITESPACE@[45; 46)
|
||||||
|
L_PAREN@[46; 47)
|
||||||
|
R_PAREN@[47; 48)
|
||||||
|
SEMI@[48; 49)
|
||||||
|
WHITESPACE@[49; 50)
|
||||||
|
R_CURLY@[50; 51)
|
||||||
|
WHITESPACE@[51; 52)
|
1
tests/data/parser/inline/0036_placeholder_pat.rs
Normal file
1
tests/data/parser/inline/0036_placeholder_pat.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
fn main() { let _ = (); }
|
27
tests/data/parser/inline/0036_placeholder_pat.txt
Normal file
27
tests/data/parser/inline/0036_placeholder_pat.txt
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
FILE@[0; 26)
|
||||||
|
FN_ITEM@[0; 26)
|
||||||
|
FN_KW@[0; 2)
|
||||||
|
NAME@[2; 7)
|
||||||
|
WHITESPACE@[2; 3)
|
||||||
|
IDENT@[3; 7) "main"
|
||||||
|
L_PAREN@[7; 8)
|
||||||
|
R_PAREN@[8; 9)
|
||||||
|
BLOCK@[9; 26)
|
||||||
|
WHITESPACE@[9; 10)
|
||||||
|
L_CURLY@[10; 11)
|
||||||
|
LET_STMT@[11; 24)
|
||||||
|
WHITESPACE@[11; 12)
|
||||||
|
LET_KW@[12; 15)
|
||||||
|
PLACEHOLDER_PAT@[15; 18)
|
||||||
|
WHITESPACE@[15; 16)
|
||||||
|
UNDERSCORE@[16; 17)
|
||||||
|
WHITESPACE@[17; 18)
|
||||||
|
EQ@[18; 19)
|
||||||
|
TUPLE_EXPR@[19; 22)
|
||||||
|
WHITESPACE@[19; 20)
|
||||||
|
L_PAREN@[20; 21)
|
||||||
|
R_PAREN@[21; 22)
|
||||||
|
SEMI@[22; 23)
|
||||||
|
WHITESPACE@[23; 24)
|
||||||
|
R_CURLY@[24; 25)
|
||||||
|
WHITESPACE@[25; 26)
|
|
@ -6,8 +6,9 @@ FILE@[0; 13)
|
||||||
IDENT@[3; 6) "foo"
|
IDENT@[3; 6) "foo"
|
||||||
L_PAREN@[6; 7)
|
L_PAREN@[6; 7)
|
||||||
R_PAREN@[7; 8)
|
R_PAREN@[7; 8)
|
||||||
WHITESPACE@[8; 9)
|
BLOCK@[8; 13)
|
||||||
L_CURLY@[9; 10)
|
WHITESPACE@[8; 9)
|
||||||
WHITESPACE@[10; 11)
|
L_CURLY@[9; 10)
|
||||||
R_CURLY@[11; 12)
|
WHITESPACE@[10; 11)
|
||||||
WHITESPACE@[12; 13)
|
R_CURLY@[11; 12)
|
||||||
|
WHITESPACE@[12; 13)
|
||||||
|
|
|
@ -31,11 +31,12 @@ FILE@[0; 118)
|
||||||
IDENT@[34; 37) "foo"
|
IDENT@[34; 37) "foo"
|
||||||
L_PAREN@[37; 38)
|
L_PAREN@[37; 38)
|
||||||
R_PAREN@[38; 39)
|
R_PAREN@[38; 39)
|
||||||
WHITESPACE@[39; 40)
|
BLOCK@[39; 52)
|
||||||
L_CURLY@[40; 41)
|
WHITESPACE@[39; 40)
|
||||||
WHITESPACE@[41; 46)
|
L_CURLY@[40; 41)
|
||||||
R_CURLY@[46; 47)
|
WHITESPACE@[41; 46)
|
||||||
WHITESPACE@[47; 52)
|
R_CURLY@[46; 47)
|
||||||
|
WHITESPACE@[47; 52)
|
||||||
STRUCT_ITEM@[52; 64)
|
STRUCT_ITEM@[52; 64)
|
||||||
STRUCT_KW@[52; 58)
|
STRUCT_KW@[52; 58)
|
||||||
NAME@[58; 61)
|
NAME@[58; 61)
|
||||||
|
|
|
@ -24,7 +24,8 @@ FILE@[0; 35)
|
||||||
IDENT@[26; 29) "foo"
|
IDENT@[26; 29) "foo"
|
||||||
L_PAREN@[29; 30)
|
L_PAREN@[29; 30)
|
||||||
R_PAREN@[30; 31)
|
R_PAREN@[30; 31)
|
||||||
WHITESPACE@[31; 32)
|
BLOCK@[31; 35)
|
||||||
L_CURLY@[32; 33)
|
WHITESPACE@[31; 32)
|
||||||
R_CURLY@[33; 34)
|
L_CURLY@[32; 33)
|
||||||
WHITESPACE@[34; 35)
|
R_CURLY@[33; 34)
|
||||||
|
WHITESPACE@[34; 35)
|
||||||
|
|
|
@ -6,10 +6,11 @@ FILE@[0; 98)
|
||||||
IDENT@[3; 4) "a"
|
IDENT@[3; 4) "a"
|
||||||
L_PAREN@[4; 5)
|
L_PAREN@[4; 5)
|
||||||
R_PAREN@[5; 6)
|
R_PAREN@[5; 6)
|
||||||
WHITESPACE@[6; 7)
|
BLOCK@[6; 10)
|
||||||
L_CURLY@[7; 8)
|
WHITESPACE@[6; 7)
|
||||||
R_CURLY@[8; 9)
|
L_CURLY@[7; 8)
|
||||||
WHITESPACE@[9; 10)
|
R_CURLY@[8; 9)
|
||||||
|
WHITESPACE@[9; 10)
|
||||||
FN_ITEM@[10; 24)
|
FN_ITEM@[10; 24)
|
||||||
VISIBILITY@[10; 14)
|
VISIBILITY@[10; 14)
|
||||||
PUB_KW@[10; 13)
|
PUB_KW@[10; 13)
|
||||||
|
@ -20,10 +21,11 @@ FILE@[0; 98)
|
||||||
IDENT@[17; 18) "b"
|
IDENT@[17; 18) "b"
|
||||||
L_PAREN@[18; 19)
|
L_PAREN@[18; 19)
|
||||||
R_PAREN@[19; 20)
|
R_PAREN@[19; 20)
|
||||||
WHITESPACE@[20; 21)
|
BLOCK@[20; 24)
|
||||||
L_CURLY@[21; 22)
|
WHITESPACE@[20; 21)
|
||||||
R_CURLY@[22; 23)
|
L_CURLY@[21; 22)
|
||||||
WHITESPACE@[23; 24)
|
R_CURLY@[22; 23)
|
||||||
|
WHITESPACE@[23; 24)
|
||||||
FN_ITEM@[24; 45)
|
FN_ITEM@[24; 45)
|
||||||
VISIBILITY@[24; 35)
|
VISIBILITY@[24; 35)
|
||||||
PUB_KW@[24; 27)
|
PUB_KW@[24; 27)
|
||||||
|
@ -37,10 +39,11 @@ FILE@[0; 98)
|
||||||
IDENT@[38; 39) "c"
|
IDENT@[38; 39) "c"
|
||||||
L_PAREN@[39; 40)
|
L_PAREN@[39; 40)
|
||||||
R_PAREN@[40; 41)
|
R_PAREN@[40; 41)
|
||||||
WHITESPACE@[41; 42)
|
BLOCK@[41; 45)
|
||||||
L_CURLY@[42; 43)
|
WHITESPACE@[41; 42)
|
||||||
R_CURLY@[43; 44)
|
L_CURLY@[42; 43)
|
||||||
WHITESPACE@[44; 45)
|
R_CURLY@[43; 44)
|
||||||
|
WHITESPACE@[44; 45)
|
||||||
FN_ITEM@[45; 66)
|
FN_ITEM@[45; 66)
|
||||||
VISIBILITY@[45; 56)
|
VISIBILITY@[45; 56)
|
||||||
PUB_KW@[45; 48)
|
PUB_KW@[45; 48)
|
||||||
|
@ -54,10 +57,11 @@ FILE@[0; 98)
|
||||||
IDENT@[59; 60) "d"
|
IDENT@[59; 60) "d"
|
||||||
L_PAREN@[60; 61)
|
L_PAREN@[60; 61)
|
||||||
R_PAREN@[61; 62)
|
R_PAREN@[61; 62)
|
||||||
WHITESPACE@[62; 63)
|
BLOCK@[62; 66)
|
||||||
L_CURLY@[63; 64)
|
WHITESPACE@[62; 63)
|
||||||
R_CURLY@[64; 65)
|
L_CURLY@[63; 64)
|
||||||
WHITESPACE@[65; 66)
|
R_CURLY@[64; 65)
|
||||||
|
WHITESPACE@[65; 66)
|
||||||
FN_ITEM@[66; 98)
|
FN_ITEM@[66; 98)
|
||||||
VISIBILITY@[66; 88)
|
VISIBILITY@[66; 88)
|
||||||
PUB_KW@[66; 69)
|
PUB_KW@[66; 69)
|
||||||
|
@ -86,7 +90,8 @@ FILE@[0; 98)
|
||||||
IDENT@[91; 92) "e"
|
IDENT@[91; 92) "e"
|
||||||
L_PAREN@[92; 93)
|
L_PAREN@[92; 93)
|
||||||
R_PAREN@[93; 94)
|
R_PAREN@[93; 94)
|
||||||
WHITESPACE@[94; 95)
|
BLOCK@[94; 98)
|
||||||
L_CURLY@[95; 96)
|
WHITESPACE@[94; 95)
|
||||||
R_CURLY@[96; 97)
|
L_CURLY@[95; 96)
|
||||||
WHITESPACE@[97; 98)
|
R_CURLY@[96; 97)
|
||||||
|
WHITESPACE@[97; 98)
|
||||||
|
|
|
@ -18,7 +18,8 @@ FILE@[0; 23)
|
||||||
IDENT@[14; 17) "foo"
|
IDENT@[14; 17) "foo"
|
||||||
L_PAREN@[17; 18)
|
L_PAREN@[17; 18)
|
||||||
R_PAREN@[18; 19)
|
R_PAREN@[18; 19)
|
||||||
WHITESPACE@[19; 20)
|
BLOCK@[19; 23)
|
||||||
L_CURLY@[20; 21)
|
WHITESPACE@[19; 20)
|
||||||
R_CURLY@[21; 22)
|
L_CURLY@[20; 21)
|
||||||
WHITESPACE@[22; 23)
|
R_CURLY@[21; 22)
|
||||||
|
WHITESPACE@[22; 23)
|
||||||
|
|
|
@ -9,11 +9,12 @@ FILE@[0; 71)
|
||||||
IDENT@[10; 13) "foo"
|
IDENT@[10; 13) "foo"
|
||||||
L_PAREN@[13; 14)
|
L_PAREN@[13; 14)
|
||||||
R_PAREN@[14; 15)
|
R_PAREN@[14; 15)
|
||||||
WHITESPACE@[15; 16)
|
BLOCK@[15; 21)
|
||||||
L_CURLY@[16; 17)
|
WHITESPACE@[15; 16)
|
||||||
WHITESPACE@[17; 18)
|
L_CURLY@[16; 17)
|
||||||
R_CURLY@[18; 19)
|
WHITESPACE@[17; 18)
|
||||||
WHITESPACE@[19; 21)
|
R_CURLY@[18; 19)
|
||||||
|
WHITESPACE@[19; 21)
|
||||||
FN_ITEM@[21; 46)
|
FN_ITEM@[21; 46)
|
||||||
ABI@[21; 32)
|
ABI@[21; 32)
|
||||||
EXTERN_KW@[21; 27)
|
EXTERN_KW@[21; 27)
|
||||||
|
@ -26,11 +27,12 @@ FILE@[0; 71)
|
||||||
IDENT@[35; 38) "bar"
|
IDENT@[35; 38) "bar"
|
||||||
L_PAREN@[38; 39)
|
L_PAREN@[38; 39)
|
||||||
R_PAREN@[39; 40)
|
R_PAREN@[39; 40)
|
||||||
WHITESPACE@[40; 41)
|
BLOCK@[40; 46)
|
||||||
L_CURLY@[41; 42)
|
WHITESPACE@[40; 41)
|
||||||
WHITESPACE@[42; 43)
|
L_CURLY@[41; 42)
|
||||||
R_CURLY@[43; 44)
|
WHITESPACE@[42; 43)
|
||||||
WHITESPACE@[44; 46)
|
R_CURLY@[43; 44)
|
||||||
|
WHITESPACE@[44; 46)
|
||||||
FN_ITEM@[46; 71)
|
FN_ITEM@[46; 71)
|
||||||
ABI@[46; 58)
|
ABI@[46; 58)
|
||||||
EXTERN_KW@[46; 52)
|
EXTERN_KW@[46; 52)
|
||||||
|
@ -43,8 +45,9 @@ FILE@[0; 71)
|
||||||
IDENT@[61; 64) "baz"
|
IDENT@[61; 64) "baz"
|
||||||
L_PAREN@[64; 65)
|
L_PAREN@[64; 65)
|
||||||
R_PAREN@[65; 66)
|
R_PAREN@[65; 66)
|
||||||
WHITESPACE@[66; 67)
|
BLOCK@[66; 71)
|
||||||
L_CURLY@[67; 68)
|
WHITESPACE@[66; 67)
|
||||||
WHITESPACE@[68; 69)
|
L_CURLY@[67; 68)
|
||||||
R_CURLY@[69; 70)
|
WHITESPACE@[68; 69)
|
||||||
WHITESPACE@[70; 71)
|
R_CURLY@[69; 70)
|
||||||
|
WHITESPACE@[70; 71)
|
||||||
|
|
Loading…
Reference in a new issue