mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-03 05:13:35 +00:00
Merge pull request #18861 from ChayimFriedman2/await-edition
fix: Make edition per-token, not per-file
This commit is contained in:
commit
3fe50ef83c
34 changed files with 480 additions and 316 deletions
|
|
@ -369,7 +369,8 @@ pub fn expect_fragment<'t>(
|
|||
) -> ExpandResult<tt::TokenTreesView<'t, Span>> {
|
||||
use ::parser;
|
||||
let buffer = tt_iter.remaining();
|
||||
let parser_input = to_parser_input(edition, buffer);
|
||||
// FIXME: Pass the correct edition per token. Due to the split between mbe and hir-expand it's complicated.
|
||||
let parser_input = to_parser_input(buffer, &mut |_ctx| edition);
|
||||
let tree_traversal = entry_point.parse(&parser_input, edition);
|
||||
let mut cursor = buffer.cursor();
|
||||
let mut error = false;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ fn check_(
|
|||
file_id: EditionedFileId::new(FileId::from_raw(0), def_edition),
|
||||
ast_id: ErasedFileAstId::from_raw(0),
|
||||
},
|
||||
SyntaxContextId::ROOT,
|
||||
SyntaxContextId::root(Edition::CURRENT),
|
||||
decl,
|
||||
)
|
||||
.unwrap();
|
||||
|
|
@ -39,16 +39,20 @@ fn check_(
|
|||
file_id: EditionedFileId::new(FileId::from_raw(1), call_edition),
|
||||
ast_id: ErasedFileAstId::from_raw(0),
|
||||
};
|
||||
let arg_tt =
|
||||
syntax_bridge::parse_to_token_tree(call_edition, call_anchor, SyntaxContextId::ROOT, arg)
|
||||
.unwrap();
|
||||
let arg_tt = syntax_bridge::parse_to_token_tree(
|
||||
call_edition,
|
||||
call_anchor,
|
||||
SyntaxContextId::root(Edition::CURRENT),
|
||||
arg,
|
||||
)
|
||||
.unwrap();
|
||||
let res = mac.expand(
|
||||
&arg_tt,
|
||||
|_| (),
|
||||
Span {
|
||||
range: TextRange::up_to(TextSize::of(arg)),
|
||||
anchor: call_anchor,
|
||||
ctx: SyntaxContextId::ROOT,
|
||||
ctx: SyntaxContextId::root(Edition::CURRENT),
|
||||
},
|
||||
def_edition,
|
||||
);
|
||||
|
|
@ -59,7 +63,12 @@ fn check_(
|
|||
if render_debug {
|
||||
format_to!(expect_res, "{:#?}\n\n", res.value.0);
|
||||
}
|
||||
let (node, _) = syntax_bridge::token_tree_to_syntax_node(&res.value.0, parse, def_edition);
|
||||
let (node, _) = syntax_bridge::token_tree_to_syntax_node(
|
||||
&res.value.0,
|
||||
parse,
|
||||
&mut |_| def_edition,
|
||||
def_edition,
|
||||
);
|
||||
format_to!(
|
||||
expect_res,
|
||||
"{}",
|
||||
|
|
@ -106,25 +115,25 @@ fn token_mapping_smoke_test() {
|
|||
struct MyTraitMap2
|
||||
"#,
|
||||
expect![[r#"
|
||||
SUBTREE $$ 1:0@0..20#0 1:0@0..20#0
|
||||
IDENT struct 0:0@34..40#0
|
||||
IDENT MyTraitMap2 1:0@8..19#0
|
||||
SUBTREE {} 0:0@48..49#0 0:0@100..101#0
|
||||
IDENT map 0:0@58..61#0
|
||||
PUNCH : [alone] 0:0@61..62#0
|
||||
PUNCH : [joint] 0:0@63..64#0
|
||||
PUNCH : [alone] 0:0@64..65#0
|
||||
IDENT std 0:0@65..68#0
|
||||
PUNCH : [joint] 0:0@68..69#0
|
||||
PUNCH : [alone] 0:0@69..70#0
|
||||
IDENT collections 0:0@70..81#0
|
||||
PUNCH : [joint] 0:0@81..82#0
|
||||
PUNCH : [alone] 0:0@82..83#0
|
||||
IDENT HashSet 0:0@83..90#0
|
||||
PUNCH < [alone] 0:0@90..91#0
|
||||
SUBTREE () 0:0@91..92#0 0:0@92..93#0
|
||||
PUNCH > [joint] 0:0@93..94#0
|
||||
PUNCH , [alone] 0:0@94..95#0
|
||||
SUBTREE $$ 1:0@0..20#2 1:0@0..20#2
|
||||
IDENT struct 0:0@34..40#2
|
||||
IDENT MyTraitMap2 1:0@8..19#2
|
||||
SUBTREE {} 0:0@48..49#2 0:0@100..101#2
|
||||
IDENT map 0:0@58..61#2
|
||||
PUNCH : [alone] 0:0@61..62#2
|
||||
PUNCH : [joint] 0:0@63..64#2
|
||||
PUNCH : [alone] 0:0@64..65#2
|
||||
IDENT std 0:0@65..68#2
|
||||
PUNCH : [joint] 0:0@68..69#2
|
||||
PUNCH : [alone] 0:0@69..70#2
|
||||
IDENT collections 0:0@70..81#2
|
||||
PUNCH : [joint] 0:0@81..82#2
|
||||
PUNCH : [alone] 0:0@82..83#2
|
||||
IDENT HashSet 0:0@83..90#2
|
||||
PUNCH < [alone] 0:0@90..91#2
|
||||
SUBTREE () 0:0@91..92#2 0:0@92..93#2
|
||||
PUNCH > [joint] 0:0@93..94#2
|
||||
PUNCH , [alone] 0:0@94..95#2
|
||||
|
||||
struct MyTraitMap2 {
|
||||
map: ::std::collections::HashSet<()>,
|
||||
|
|
@ -153,28 +162,28 @@ fn main() {
|
|||
}
|
||||
"#,
|
||||
expect![[r#"
|
||||
SUBTREE $$ 1:0@0..63#0 1:0@0..63#0
|
||||
IDENT fn 1:0@1..3#0
|
||||
IDENT main 1:0@4..8#0
|
||||
SUBTREE () 1:0@8..9#0 1:0@9..10#0
|
||||
SUBTREE {} 1:0@11..12#0 1:0@61..62#0
|
||||
LITERAL Integer 1 1:0@17..18#0
|
||||
PUNCH ; [alone] 1:0@18..19#0
|
||||
LITERAL Float 1.0 1:0@24..27#0
|
||||
PUNCH ; [alone] 1:0@27..28#0
|
||||
SUBTREE () 1:0@33..34#0 1:0@39..40#0
|
||||
SUBTREE () 1:0@34..35#0 1:0@37..38#0
|
||||
LITERAL Integer 1 1:0@35..36#0
|
||||
PUNCH , [alone] 1:0@36..37#0
|
||||
PUNCH , [alone] 1:0@38..39#0
|
||||
PUNCH . [alone] 1:0@40..41#0
|
||||
LITERAL Float 0.0 1:0@41..44#0
|
||||
PUNCH ; [alone] 1:0@44..45#0
|
||||
IDENT let 1:0@50..53#0
|
||||
IDENT x 1:0@54..55#0
|
||||
PUNCH = [alone] 1:0@56..57#0
|
||||
LITERAL Integer 1 1:0@58..59#0
|
||||
PUNCH ; [alone] 1:0@59..60#0
|
||||
SUBTREE $$ 1:0@0..63#2 1:0@0..63#2
|
||||
IDENT fn 1:0@1..3#2
|
||||
IDENT main 1:0@4..8#2
|
||||
SUBTREE () 1:0@8..9#2 1:0@9..10#2
|
||||
SUBTREE {} 1:0@11..12#2 1:0@61..62#2
|
||||
LITERAL Integer 1 1:0@17..18#2
|
||||
PUNCH ; [alone] 1:0@18..19#2
|
||||
LITERAL Float 1.0 1:0@24..27#2
|
||||
PUNCH ; [alone] 1:0@27..28#2
|
||||
SUBTREE () 1:0@33..34#2 1:0@39..40#2
|
||||
SUBTREE () 1:0@34..35#2 1:0@37..38#2
|
||||
LITERAL Integer 1 1:0@35..36#2
|
||||
PUNCH , [alone] 1:0@36..37#2
|
||||
PUNCH , [alone] 1:0@38..39#2
|
||||
PUNCH . [alone] 1:0@40..41#2
|
||||
LITERAL Float 0.0 1:0@41..44#2
|
||||
PUNCH ; [alone] 1:0@44..45#2
|
||||
IDENT let 1:0@50..53#2
|
||||
IDENT x 1:0@54..55#2
|
||||
PUNCH = [alone] 1:0@56..57#2
|
||||
LITERAL Integer 1 1:0@58..59#2
|
||||
PUNCH ; [alone] 1:0@59..60#2
|
||||
|
||||
fn main(){
|
||||
1;
|
||||
|
|
@ -200,14 +209,14 @@ fn expr_2021() {
|
|||
const { 1 },
|
||||
"#,
|
||||
expect![[r#"
|
||||
SUBTREE $$ 1:0@0..25#0 1:0@0..25#0
|
||||
IDENT _ 1:0@5..6#0
|
||||
PUNCH ; [joint] 0:0@36..37#0
|
||||
SUBTREE () 0:0@34..35#0 0:0@34..35#0
|
||||
IDENT const 1:0@12..17#0
|
||||
SUBTREE {} 1:0@18..19#0 1:0@22..23#0
|
||||
LITERAL Integer 1 1:0@20..21#0
|
||||
PUNCH ; [alone] 0:0@39..40#0
|
||||
SUBTREE $$ 1:0@0..25#2 1:0@0..25#2
|
||||
IDENT _ 1:0@5..6#2
|
||||
PUNCH ; [joint] 0:0@36..37#2
|
||||
SUBTREE () 0:0@34..35#2 0:0@34..35#2
|
||||
IDENT const 1:0@12..17#2
|
||||
SUBTREE {} 1:0@18..19#2 1:0@22..23#2
|
||||
LITERAL Integer 1 1:0@20..21#2
|
||||
PUNCH ; [alone] 0:0@39..40#2
|
||||
|
||||
_;
|
||||
(const {
|
||||
|
|
@ -228,13 +237,13 @@ fn expr_2021() {
|
|||
expect![[r#"
|
||||
ExpandError {
|
||||
inner: (
|
||||
1:0@5..6#0,
|
||||
1:0@5..6#2,
|
||||
NoMatchingRule,
|
||||
),
|
||||
}
|
||||
|
||||
SUBTREE $$ 1:0@0..8#0 1:0@0..8#0
|
||||
PUNCH ; [alone] 0:0@39..40#0
|
||||
SUBTREE $$ 1:0@0..8#2 1:0@0..8#2
|
||||
PUNCH ; [alone] 0:0@39..40#2
|
||||
|
||||
;"#]],
|
||||
);
|
||||
|
|
@ -252,13 +261,13 @@ fn expr_2021() {
|
|||
expect![[r#"
|
||||
ExpandError {
|
||||
inner: (
|
||||
1:0@5..10#0,
|
||||
1:0@5..10#2,
|
||||
NoMatchingRule,
|
||||
),
|
||||
}
|
||||
|
||||
SUBTREE $$ 1:0@0..18#0 1:0@0..18#0
|
||||
PUNCH ; [alone] 0:0@39..40#0
|
||||
SUBTREE $$ 1:0@0..18#2 1:0@0..18#2
|
||||
PUNCH ; [alone] 0:0@39..40#2
|
||||
|
||||
;"#]],
|
||||
);
|
||||
|
|
@ -278,26 +287,26 @@ fn expr_2021() {
|
|||
break 'foo bar,
|
||||
"#,
|
||||
expect![[r#"
|
||||
SUBTREE $$ 1:0@0..76#0 1:0@0..76#0
|
||||
LITERAL Integer 4 1:0@5..6#0
|
||||
PUNCH ; [joint] 0:0@41..42#0
|
||||
LITERAL Str literal 1:0@12..21#0
|
||||
PUNCH ; [joint] 0:0@41..42#0
|
||||
SUBTREE () 0:0@39..40#0 0:0@39..40#0
|
||||
IDENT funcall 1:0@27..34#0
|
||||
SUBTREE () 1:0@34..35#0 1:0@35..36#0
|
||||
PUNCH ; [joint] 0:0@41..42#0
|
||||
SUBTREE () 0:0@39..40#0 0:0@39..40#0
|
||||
IDENT future 1:0@42..48#0
|
||||
PUNCH . [alone] 1:0@48..49#0
|
||||
IDENT await 1:0@49..54#0
|
||||
PUNCH ; [joint] 0:0@41..42#0
|
||||
SUBTREE () 0:0@39..40#0 0:0@39..40#0
|
||||
IDENT break 1:0@60..65#0
|
||||
PUNCH ' [joint] 1:0@66..67#0
|
||||
IDENT foo 1:0@67..70#0
|
||||
IDENT bar 1:0@71..74#0
|
||||
PUNCH ; [alone] 0:0@44..45#0
|
||||
SUBTREE $$ 1:0@0..76#2 1:0@0..76#2
|
||||
LITERAL Integer 4 1:0@5..6#2
|
||||
PUNCH ; [joint] 0:0@41..42#2
|
||||
LITERAL Str literal 1:0@12..21#2
|
||||
PUNCH ; [joint] 0:0@41..42#2
|
||||
SUBTREE () 0:0@39..40#2 0:0@39..40#2
|
||||
IDENT funcall 1:0@27..34#2
|
||||
SUBTREE () 1:0@34..35#2 1:0@35..36#2
|
||||
PUNCH ; [joint] 0:0@41..42#2
|
||||
SUBTREE () 0:0@39..40#2 0:0@39..40#2
|
||||
IDENT future 1:0@42..48#2
|
||||
PUNCH . [alone] 1:0@48..49#2
|
||||
IDENT await 1:0@49..54#2
|
||||
PUNCH ; [joint] 0:0@41..42#2
|
||||
SUBTREE () 0:0@39..40#2 0:0@39..40#2
|
||||
IDENT break 1:0@60..65#2
|
||||
PUNCH ' [joint] 1:0@66..67#2
|
||||
IDENT foo 1:0@67..70#2
|
||||
IDENT bar 1:0@71..74#2
|
||||
PUNCH ; [alone] 0:0@44..45#2
|
||||
|
||||
4;
|
||||
"literal";
|
||||
|
|
@ -319,13 +328,13 @@ fn expr_2021() {
|
|||
expect![[r#"
|
||||
ExpandError {
|
||||
inner: (
|
||||
1:0@5..6#0,
|
||||
1:0@5..6#2,
|
||||
NoMatchingRule,
|
||||
),
|
||||
}
|
||||
|
||||
SUBTREE $$ 1:0@0..8#0 1:0@0..8#0
|
||||
PUNCH ; [alone] 0:0@44..45#0
|
||||
SUBTREE $$ 1:0@0..8#2 1:0@0..8#2
|
||||
PUNCH ; [alone] 0:0@44..45#2
|
||||
|
||||
;"#]],
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue