mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-29 06:23:25 +00:00
Parse TypePathFn with preceding ::
e.g. `impl Fn::() -> ()`.
This commit is contained in:
parent
989b09d20c
commit
d786a40e73
3 changed files with 49 additions and 0 deletions
|
@ -118,6 +118,11 @@ fn opt_path_type_args(p: &mut Parser<'_>, mode: Mode) {
|
||||||
match mode {
|
match mode {
|
||||||
Mode::Use => {}
|
Mode::Use => {}
|
||||||
Mode::Type => {
|
Mode::Type => {
|
||||||
|
// test typepathfn_with_coloncolon
|
||||||
|
// type F = Start::(Middle) -> (Middle)::End;
|
||||||
|
if p.at(T![::]) && p.nth_at(2, T!['(']) {
|
||||||
|
p.bump(T![::]);
|
||||||
|
}
|
||||||
// test path_fn_trait_args
|
// test path_fn_trait_args
|
||||||
// type F = Box<Fn(i32) -> ()>;
|
// type F = Box<Fn(i32) -> ()>;
|
||||||
if p.at(T!['(']) {
|
if p.at(T!['(']) {
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
SOURCE_FILE
|
||||||
|
TYPE_ALIAS
|
||||||
|
TYPE_KW "type"
|
||||||
|
WHITESPACE " "
|
||||||
|
NAME
|
||||||
|
IDENT "F"
|
||||||
|
WHITESPACE " "
|
||||||
|
EQ "="
|
||||||
|
WHITESPACE " "
|
||||||
|
PATH_TYPE
|
||||||
|
PATH
|
||||||
|
PATH
|
||||||
|
PATH_SEGMENT
|
||||||
|
NAME_REF
|
||||||
|
IDENT "Start"
|
||||||
|
COLON2 "::"
|
||||||
|
PARAM_LIST
|
||||||
|
L_PAREN "("
|
||||||
|
PARAM
|
||||||
|
PATH_TYPE
|
||||||
|
PATH
|
||||||
|
PATH_SEGMENT
|
||||||
|
NAME_REF
|
||||||
|
IDENT "Middle"
|
||||||
|
R_PAREN ")"
|
||||||
|
WHITESPACE " "
|
||||||
|
RET_TYPE
|
||||||
|
THIN_ARROW "->"
|
||||||
|
WHITESPACE " "
|
||||||
|
PAREN_TYPE
|
||||||
|
L_PAREN "("
|
||||||
|
PATH_TYPE
|
||||||
|
PATH
|
||||||
|
PATH_SEGMENT
|
||||||
|
NAME_REF
|
||||||
|
IDENT "Middle"
|
||||||
|
R_PAREN ")"
|
||||||
|
COLON2 "::"
|
||||||
|
PATH_SEGMENT
|
||||||
|
NAME_REF
|
||||||
|
IDENT "End"
|
||||||
|
SEMICOLON ";"
|
||||||
|
WHITESPACE "\n"
|
|
@ -0,0 +1 @@
|
||||||
|
type F = Start::(Middle) -> (Middle)::End;
|
Loading…
Reference in a new issue