mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-08-19 18:10:25 +00:00
parser: fix parsing of macro call inside generic args
This commit is contained in:
parent
94fa49c0a3
commit
07cd19dcef
4 changed files with 43 additions and 3 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -1761,9 +1761,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ungrammar"
|
name = "ungrammar"
|
||||||
version = "1.14.5"
|
version = "1.14.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "395e988af2480b8a8118ad1d5f1f790197d332e3e2585231f742949b63080ef5"
|
checksum = "fb1cd6666863b2ff36bab1ced85c4b5e651638705f306f3cfad0a367f85ea715"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicase"
|
name = "unicase"
|
||||||
|
|
|
@ -32,7 +32,10 @@ fn generic_arg(p: &mut Parser) {
|
||||||
k if k.is_literal() => const_arg(p),
|
k if k.is_literal() => const_arg(p),
|
||||||
// test associated_type_bounds
|
// test associated_type_bounds
|
||||||
// fn print_all<T: Iterator<Item, Item::Item, Item::<true>, Item: Display, Item<'a> = Item>>(printables: T) {}
|
// fn print_all<T: Iterator<Item, Item::Item, Item::<true>, Item: Display, Item<'a> = Item>>(printables: T) {}
|
||||||
IDENT if [T![<], T![=], T![:]].contains(&p.nth(1)) => {
|
|
||||||
|
// test macro_inside_generic_arg
|
||||||
|
// type A = Foo<syn::Token![_]>;
|
||||||
|
IDENT if [T![<], T![=], T![:]].contains(&p.nth(1)) && !p.nth_at(1, T![::]) => {
|
||||||
let m = p.start();
|
let m = p.start();
|
||||||
name_ref(p);
|
name_ref(p);
|
||||||
opt_generic_arg_list(p, false);
|
opt_generic_arg_list(p, false);
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
SOURCE_FILE@0..30
|
||||||
|
TYPE_ALIAS@0..29
|
||||||
|
TYPE_KW@0..4 "type"
|
||||||
|
WHITESPACE@4..5 " "
|
||||||
|
NAME@5..6
|
||||||
|
IDENT@5..6 "A"
|
||||||
|
WHITESPACE@6..7 " "
|
||||||
|
EQ@7..8 "="
|
||||||
|
WHITESPACE@8..9 " "
|
||||||
|
PATH_TYPE@9..28
|
||||||
|
PATH@9..28
|
||||||
|
PATH_SEGMENT@9..28
|
||||||
|
NAME_REF@9..12
|
||||||
|
IDENT@9..12 "Foo"
|
||||||
|
GENERIC_ARG_LIST@12..28
|
||||||
|
L_ANGLE@12..13 "<"
|
||||||
|
TYPE_ARG@13..27
|
||||||
|
MACRO_TYPE@13..27
|
||||||
|
MACRO_CALL@13..27
|
||||||
|
PATH@13..23
|
||||||
|
PATH@13..16
|
||||||
|
PATH_SEGMENT@13..16
|
||||||
|
NAME_REF@13..16
|
||||||
|
IDENT@13..16 "syn"
|
||||||
|
COLON2@16..18 "::"
|
||||||
|
PATH_SEGMENT@18..23
|
||||||
|
NAME_REF@18..23
|
||||||
|
IDENT@18..23 "Token"
|
||||||
|
BANG@23..24 "!"
|
||||||
|
TOKEN_TREE@24..27
|
||||||
|
L_BRACK@24..25 "["
|
||||||
|
UNDERSCORE@25..26 "_"
|
||||||
|
R_BRACK@26..27 "]"
|
||||||
|
R_ANGLE@27..28 ">"
|
||||||
|
SEMICOLON@28..29 ";"
|
||||||
|
WHITESPACE@29..30 "\n"
|
|
@ -0,0 +1 @@
|
||||||
|
type A = Foo<syn::Token![_]>;
|
Loading…
Add table
Add a link
Reference in a new issue