Namerefs in methods&fields
This commit is contained in:
parent
a26390b06b
commit
5b43010083
@ -39,6 +39,7 @@ pub(super) fn expr(p: &mut Parser) {
|
|||||||
} else {
|
} else {
|
||||||
field_expr(p, lhs)
|
field_expr(p, lhs)
|
||||||
},
|
},
|
||||||
|
DOT if p.nth(1) == INT_NUMBER => field_expr(p, lhs),
|
||||||
_ => break,
|
_ => break,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -202,7 +203,7 @@ fn method_call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
|
|||||||
assert!(p.at(DOT) && p.nth(1) == IDENT && p.nth(2) == L_PAREN);
|
assert!(p.at(DOT) && p.nth(1) == IDENT && p.nth(2) == L_PAREN);
|
||||||
let m = lhs.precede(p);
|
let m = lhs.precede(p);
|
||||||
p.bump();
|
p.bump();
|
||||||
p.bump();
|
name_ref(p);
|
||||||
arg_list(p);
|
arg_list(p);
|
||||||
m.complete(p, METHOD_CALL_EXPR)
|
m.complete(p, METHOD_CALL_EXPR)
|
||||||
}
|
}
|
||||||
@ -212,10 +213,14 @@ fn method_call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
|
|||||||
// x.foo.bar;
|
// x.foo.bar;
|
||||||
// }
|
// }
|
||||||
fn field_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
|
fn field_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker {
|
||||||
assert!(p.at(DOT) && p.nth(1) == IDENT);
|
assert!(p.at(DOT) && (p.nth(1) == IDENT || p.nth(1) == INT_NUMBER));
|
||||||
let m = lhs.precede(p);
|
let m = lhs.precede(p);
|
||||||
p.bump();
|
p.bump();
|
||||||
p.bump();
|
if p.at(IDENT) {
|
||||||
|
name_ref(p)
|
||||||
|
} else {
|
||||||
|
p.bump()
|
||||||
|
}
|
||||||
m.complete(p, FIELD_EXPR)
|
m.complete(p, FIELD_EXPR)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ FILE@[0; 44)
|
|||||||
WHITESPACE@[10; 15)
|
WHITESPACE@[10; 15)
|
||||||
IDENT@[15; 16) "x"
|
IDENT@[15; 16) "x"
|
||||||
DOT@[16; 17)
|
DOT@[16; 17)
|
||||||
|
NAME_REF@[17; 20)
|
||||||
IDENT@[17; 20) "foo"
|
IDENT@[17; 20) "foo"
|
||||||
ARG_LIST@[20; 22)
|
ARG_LIST@[20; 22)
|
||||||
L_PAREN@[20; 21)
|
L_PAREN@[20; 21)
|
||||||
@ -33,6 +34,7 @@ FILE@[0; 44)
|
|||||||
NAME_REF@[28; 29)
|
NAME_REF@[28; 29)
|
||||||
IDENT@[28; 29) "y"
|
IDENT@[28; 29) "y"
|
||||||
DOT@[29; 30)
|
DOT@[29; 30)
|
||||||
|
NAME_REF@[30; 33)
|
||||||
IDENT@[30; 33) "bar"
|
IDENT@[30; 33) "bar"
|
||||||
ARG_LIST@[33; 40)
|
ARG_LIST@[33; 40)
|
||||||
L_PAREN@[33; 34)
|
L_PAREN@[33; 34)
|
||||||
|
@ -20,8 +20,10 @@ FILE@[0; 28)
|
|||||||
WHITESPACE@[10; 15)
|
WHITESPACE@[10; 15)
|
||||||
IDENT@[15; 16) "x"
|
IDENT@[15; 16) "x"
|
||||||
DOT@[16; 17)
|
DOT@[16; 17)
|
||||||
|
NAME_REF@[17; 20)
|
||||||
IDENT@[17; 20) "foo"
|
IDENT@[17; 20) "foo"
|
||||||
DOT@[20; 21)
|
DOT@[20; 21)
|
||||||
|
NAME_REF@[21; 24)
|
||||||
IDENT@[21; 24) "bar"
|
IDENT@[21; 24) "bar"
|
||||||
SEMI@[24; 25)
|
SEMI@[24; 25)
|
||||||
WHITESPACE@[25; 26)
|
WHITESPACE@[25; 26)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user