mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +00:00
Type ascription in let
This commit is contained in:
parent
580340d1b8
commit
f843f23aba
3 changed files with 90 additions and 2 deletions
|
@ -267,13 +267,24 @@ fn fn_item(p: &mut Parser) {
|
||||||
m.complete(p, BLOCK);
|
m.complete(p, BLOCK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test let_stmt;
|
||||||
|
// fn foo() {
|
||||||
|
// let a;
|
||||||
|
// let b: i32;
|
||||||
|
// let c = 92;
|
||||||
|
// let d: i32 = 92;
|
||||||
|
// }
|
||||||
fn let_stmt(p: &mut Parser) {
|
fn let_stmt(p: &mut Parser) {
|
||||||
assert!(p.at(LET_KW));
|
assert!(p.at(LET_KW));
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
p.bump();
|
p.bump();
|
||||||
patterns::pattern(p);
|
patterns::pattern(p);
|
||||||
p.expect(EQ);
|
if p.eat(COLON) {
|
||||||
expressions::expr(p);
|
types::type_(p);
|
||||||
|
}
|
||||||
|
if p.eat(EQ) {
|
||||||
|
expressions::expr(p);
|
||||||
|
}
|
||||||
p.expect(SEMI);
|
p.expect(SEMI);
|
||||||
m.complete(p, LET_STMT);
|
m.complete(p, LET_STMT);
|
||||||
}
|
}
|
||||||
|
|
6
tests/data/parser/inline/0050_let_stmt;.rs
Normal file
6
tests/data/parser/inline/0050_let_stmt;.rs
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
fn foo() {
|
||||||
|
let a;
|
||||||
|
let b: i32;
|
||||||
|
let c = 92;
|
||||||
|
let d: i32 = 92;
|
||||||
|
}
|
71
tests/data/parser/inline/0050_let_stmt;.txt
Normal file
71
tests/data/parser/inline/0050_let_stmt;.txt
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
FILE@[0; 77)
|
||||||
|
FN_ITEM@[0; 77)
|
||||||
|
FN_KW@[0; 2)
|
||||||
|
NAME@[2; 6)
|
||||||
|
WHITESPACE@[2; 3)
|
||||||
|
IDENT@[3; 6) "foo"
|
||||||
|
PARAM_LIST@[6; 9)
|
||||||
|
L_PAREN@[6; 7)
|
||||||
|
R_PAREN@[7; 8)
|
||||||
|
WHITESPACE@[8; 9)
|
||||||
|
BLOCK@[9; 77)
|
||||||
|
L_CURLY@[9; 10)
|
||||||
|
LET_STMT@[10; 26)
|
||||||
|
WHITESPACE@[10; 15)
|
||||||
|
LET_KW@[15; 18)
|
||||||
|
BIND_PAT@[18; 20)
|
||||||
|
NAME@[18; 20)
|
||||||
|
WHITESPACE@[18; 19)
|
||||||
|
IDENT@[19; 20) "a"
|
||||||
|
SEMI@[20; 21)
|
||||||
|
WHITESPACE@[21; 26)
|
||||||
|
LET_STMT@[26; 42)
|
||||||
|
LET_KW@[26; 29)
|
||||||
|
BIND_PAT@[29; 31)
|
||||||
|
NAME@[29; 31)
|
||||||
|
WHITESPACE@[29; 30)
|
||||||
|
IDENT@[30; 31) "b"
|
||||||
|
COLON@[31; 32)
|
||||||
|
PATH_TYPE@[32; 36)
|
||||||
|
PATH@[32; 36)
|
||||||
|
PATH_SEGMENT@[32; 36)
|
||||||
|
NAME_REF@[32; 36)
|
||||||
|
WHITESPACE@[32; 33)
|
||||||
|
IDENT@[33; 36) "i32"
|
||||||
|
SEMI@[36; 37)
|
||||||
|
WHITESPACE@[37; 42)
|
||||||
|
LET_STMT@[42; 58)
|
||||||
|
LET_KW@[42; 45)
|
||||||
|
BIND_PAT@[45; 48)
|
||||||
|
NAME@[45; 48)
|
||||||
|
WHITESPACE@[45; 46)
|
||||||
|
IDENT@[46; 47) "c"
|
||||||
|
WHITESPACE@[47; 48)
|
||||||
|
EQ@[48; 49)
|
||||||
|
LITERAL@[49; 52)
|
||||||
|
WHITESPACE@[49; 50)
|
||||||
|
INT_NUMBER@[50; 52)
|
||||||
|
SEMI@[52; 53)
|
||||||
|
WHITESPACE@[53; 58)
|
||||||
|
LET_STMT@[58; 75)
|
||||||
|
LET_KW@[58; 61)
|
||||||
|
BIND_PAT@[61; 63)
|
||||||
|
NAME@[61; 63)
|
||||||
|
WHITESPACE@[61; 62)
|
||||||
|
IDENT@[62; 63) "d"
|
||||||
|
COLON@[63; 64)
|
||||||
|
PATH_TYPE@[64; 69)
|
||||||
|
PATH@[64; 69)
|
||||||
|
PATH_SEGMENT@[64; 69)
|
||||||
|
NAME_REF@[64; 69)
|
||||||
|
WHITESPACE@[64; 65)
|
||||||
|
IDENT@[65; 68) "i32"
|
||||||
|
WHITESPACE@[68; 69)
|
||||||
|
EQ@[69; 70)
|
||||||
|
LITERAL@[70; 73)
|
||||||
|
WHITESPACE@[70; 71)
|
||||||
|
INT_NUMBER@[71; 73)
|
||||||
|
SEMI@[73; 74)
|
||||||
|
WHITESPACE@[74; 75)
|
||||||
|
R_CURLY@[75; 76)
|
||||||
|
WHITESPACE@[76; 77)
|
Loading…
Reference in a new issue