Skip to content

Commit 6f0cc91

Browse files
bors[bot]Avi-D-codermatklad
authored
Merge #4803
4803: Parse default unsafe fn r=matklad a=Avi-D-coder Co-authored-by: Avi Dessauer <avi.the.coder@gmail.com> Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2 parents 7ae2228 + 2785362 commit 6f0cc91

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

crates/ra_parser/src/grammar/items.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,12 @@ pub(super) fn maybe_item(p: &mut Parser, m: Marker, flavor: ItemFlavor) -> Resul
121121
T![unsafe] => {
122122
// test default_unsafe_impl
123123
// default unsafe impl Foo {}
124-
if p.nth(2) == T![impl] {
124+
125+
// test default_unsafe_fn
126+
// impl T for Foo {
127+
// default unsafe fn foo() {}
128+
// }
129+
if p.nth(2) == T![impl] || p.nth(2) == T![fn] {
125130
p.bump_remap(T![default]);
126131
p.bump(T![unsafe]);
127132
has_mods = true;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
SOURCE_FILE@0..50
2+
IMPL_DEF@0..49
3+
IMPL_KW@0..4 "impl"
4+
WHITESPACE@4..5 " "
5+
PATH_TYPE@5..6
6+
PATH@5..6
7+
PATH_SEGMENT@5..6
8+
NAME_REF@5..6
9+
IDENT@5..6 "T"
10+
WHITESPACE@6..7 " "
11+
FOR_KW@7..10 "for"
12+
WHITESPACE@10..11 " "
13+
PATH_TYPE@11..14
14+
PATH@11..14
15+
PATH_SEGMENT@11..14
16+
NAME_REF@11..14
17+
IDENT@11..14 "Foo"
18+
WHITESPACE@14..15 " "
19+
ITEM_LIST@15..49
20+
L_CURLY@15..16 "{"
21+
WHITESPACE@16..21 "\n "
22+
FN_DEF@21..47
23+
DEFAULT_KW@21..28 "default"
24+
WHITESPACE@28..29 " "
25+
UNSAFE_KW@29..35 "unsafe"
26+
WHITESPACE@35..36 " "
27+
FN_KW@36..38 "fn"
28+
WHITESPACE@38..39 " "
29+
NAME@39..42
30+
IDENT@39..42 "foo"
31+
PARAM_LIST@42..44
32+
L_PAREN@42..43 "("
33+
R_PAREN@43..44 ")"
34+
WHITESPACE@44..45 " "
35+
BLOCK_EXPR@45..47
36+
L_CURLY@45..46 "{"
37+
R_CURLY@46..47 "}"
38+
WHITESPACE@47..48 "\n"
39+
R_CURLY@48..49 "}"
40+
WHITESPACE@49..50 "\n"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
impl T for Foo {
2+
default unsafe fn foo() {}
3+
}

0 commit comments

Comments
 (0)