diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-06-09 09:56:28 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2020-06-09 09:56:28 +0100 |
commit | 6f0cc91c88395105cd9857a314bf443e1ed7b271 (patch) | |
tree | a964cd7ace762bfdac7f9371d47a21c76ca7d056 | |
parent | 7ae2228039819b7a8f2ef74c9e607ff35d121ee3 (diff) | |
parent | 2785362a1f9a3436072152e5499ac5d7c4d98cc4 (diff) |
Merge #4803
4803: Parse default unsafe fn r=matklad a=Avi-D-coder
Co-authored-by: Avi Dessauer <[email protected]>
Co-authored-by: Aleksey Kladov <[email protected]>
3 files changed, 49 insertions, 1 deletions
diff --git a/crates/ra_parser/src/grammar/items.rs b/crates/ra_parser/src/grammar/items.rs index 9c14b954a..97642bc24 100644 --- a/crates/ra_parser/src/grammar/items.rs +++ b/crates/ra_parser/src/grammar/items.rs | |||
@@ -121,7 +121,12 @@ pub(super) fn maybe_item(p: &mut Parser, m: Marker, flavor: ItemFlavor) -> Resul | |||
121 | T![unsafe] => { | 121 | T![unsafe] => { |
122 | // test default_unsafe_impl | 122 | // test default_unsafe_impl |
123 | // default unsafe impl Foo {} | 123 | // 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] { | ||
125 | p.bump_remap(T![default]); | 130 | p.bump_remap(T![default]); |
126 | p.bump(T![unsafe]); | 131 | p.bump(T![unsafe]); |
127 | has_mods = true; | 132 | has_mods = true; |
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0163_default_unsafe_fn.rast b/crates/ra_syntax/test_data/parser/inline/ok/0163_default_unsafe_fn.rast new file mode 100644 index 000000000..adb6159f4 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0163_default_unsafe_fn.rast | |||
@@ -0,0 +1,40 @@ | |||
1 | [email protected] | ||
2 | [email protected] | ||
3 | [email protected] "impl" | ||
4 | [email protected] " " | ||
5 | [email protected] | ||
6 | [email protected] | ||
7 | [email protected] | ||
8 | [email protected] | ||
9 | [email protected] "T" | ||
10 | [email protected] " " | ||
11 | [email protected] "for" | ||
12 | [email protected] " " | ||
13 | [email protected] | ||
14 | [email protected] | ||
15 | [email protected] | ||
16 | [email protected] | ||
17 | [email protected] "Foo" | ||
18 | [email protected] " " | ||
19 | [email protected] | ||
20 | [email protected] "{" | ||
21 | [email protected] "\n " | ||
22 | [email protected] | ||
23 | [email protected] "default" | ||
24 | [email protected] " " | ||
25 | [email protected] "unsafe" | ||
26 | [email protected] " " | ||
27 | [email protected] "fn" | ||
28 | [email protected] " " | ||
29 | [email protected] | ||
30 | [email protected] "foo" | ||
31 | [email protected] | ||
32 | [email protected] "(" | ||
33 | [email protected] ")" | ||
34 | [email protected] " " | ||
35 | [email protected] | ||
36 | [email protected] "{" | ||
37 | [email protected] "}" | ||
38 | [email protected] "\n" | ||
39 | [email protected] "}" | ||
40 | [email protected] "\n" | ||
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0163_default_unsafe_fn.rs b/crates/ra_syntax/test_data/parser/inline/ok/0163_default_unsafe_fn.rs new file mode 100644 index 000000000..12926cd8a --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0163_default_unsafe_fn.rs | |||
@@ -0,0 +1,3 @@ | |||
1 | impl T for Foo { | ||
2 | default unsafe fn foo() {} | ||
3 | } | ||