mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-04 02:54:00 +00:00
dref-expr
This commit is contained in:
parent
ce3462ce8f
commit
599ca1ad89
@ -129,6 +129,7 @@ Grammar(
|
||||
"METHOD_CALL_EXPR",
|
||||
"FIELD_EXPR",
|
||||
"REF_EXPR",
|
||||
"DEREF_EXPR",
|
||||
"STRUCT_LIT",
|
||||
"STRUCT_LIT_FIELD",
|
||||
|
||||
|
@ -48,6 +48,7 @@ pub(super) fn expr(p: &mut Parser) {
|
||||
fn prefix_expr(p: &mut Parser) -> Option<CompletedMarker> {
|
||||
match p.current() {
|
||||
AMPERSAND => Some(ref_expr(p)),
|
||||
STAR => Some(deref_expr(p)),
|
||||
_ => atom_expr(p),
|
||||
}
|
||||
}
|
||||
@ -66,6 +67,18 @@ fn ref_expr(p: &mut Parser) -> CompletedMarker {
|
||||
m.complete(p, REF_EXPR)
|
||||
}
|
||||
|
||||
// test deref_expr
|
||||
// fn foo() {
|
||||
// **&1;
|
||||
// }
|
||||
fn deref_expr(p: &mut Parser) -> CompletedMarker {
|
||||
assert!(p.at(STAR));
|
||||
let m = p.start();
|
||||
p.bump();
|
||||
expr(p);
|
||||
m.complete(p, DEREF_EXPR)
|
||||
}
|
||||
|
||||
fn atom_expr(p: &mut Parser) -> Option<CompletedMarker> {
|
||||
match literal(p) {
|
||||
Some(m) => return Some(m),
|
||||
|
@ -120,6 +120,7 @@ pub enum SyntaxKind {
|
||||
METHOD_CALL_EXPR,
|
||||
FIELD_EXPR,
|
||||
REF_EXPR,
|
||||
DEREF_EXPR,
|
||||
STRUCT_LIT,
|
||||
STRUCT_LIT_FIELD,
|
||||
EXTERN_BLOCK,
|
||||
@ -279,6 +280,7 @@ impl SyntaxKind {
|
||||
METHOD_CALL_EXPR => &SyntaxInfo { name: "METHOD_CALL_EXPR" },
|
||||
FIELD_EXPR => &SyntaxInfo { name: "FIELD_EXPR" },
|
||||
REF_EXPR => &SyntaxInfo { name: "REF_EXPR" },
|
||||
DEREF_EXPR => &SyntaxInfo { name: "DEREF_EXPR" },
|
||||
STRUCT_LIT => &SyntaxInfo { name: "STRUCT_LIT" },
|
||||
STRUCT_LIT_FIELD => &SyntaxInfo { name: "STRUCT_LIT_FIELD" },
|
||||
EXTERN_BLOCK => &SyntaxInfo { name: "EXTERN_BLOCK" },
|
||||
|
3
tests/data/parser/inline/0062_deref_expr.rs
Normal file
3
tests/data/parser/inline/0062_deref_expr.rs
Normal file
@ -0,0 +1,3 @@
|
||||
fn foo() {
|
||||
**&1;
|
||||
}
|
26
tests/data/parser/inline/0062_deref_expr.txt
Normal file
26
tests/data/parser/inline/0062_deref_expr.txt
Normal file
@ -0,0 +1,26 @@
|
||||
FILE@[0; 23)
|
||||
FN_ITEM@[0; 23)
|
||||
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; 23)
|
||||
L_CURLY@[9; 10)
|
||||
EXPR_STMT@[10; 21)
|
||||
DEREF_EXPR@[10; 19)
|
||||
WHITESPACE@[10; 15)
|
||||
STAR@[15; 16)
|
||||
DEREF_EXPR@[16; 19)
|
||||
STAR@[16; 17)
|
||||
REF_EXPR@[17; 19)
|
||||
AMPERSAND@[17; 18)
|
||||
LITERAL@[18; 19)
|
||||
INT_NUMBER@[18; 19)
|
||||
SEMI@[19; 20)
|
||||
WHITESPACE@[20; 21)
|
||||
R_CURLY@[21; 22)
|
||||
WHITESPACE@[22; 23)
|
Loading…
Reference in New Issue
Block a user