about summary refs log tree commit diff
path: root/crates/parser/src
diff options
context:
space:
mode:
authorChayim Refael Friedman <chayimfr@gmail.com>2022-08-31 23:19:09 +0000
committerChayim Refael Friedman <chayimfr@gmail.com>2022-08-31 23:19:09 +0000
commitd786a40e73f2b2f7ab4f77e9fb880b5d06ca1cdb (patch)
tree0ca27c0377104c0afa65d959c2230de1ead0b171 /crates/parser/src
parent989b09d20cafc2b1eb9198e25701b9e2234d8ba0 (diff)
downloadrust-d786a40e73f2b2f7ab4f77e9fb880b5d06ca1cdb.tar.gz
rust-d786a40e73f2b2f7ab4f77e9fb880b5d06ca1cdb.zip
Parse TypePathFn with preceding `::`
e.g. `impl Fn::() -> ()`.
Diffstat (limited to 'crates/parser/src')
-rw-r--r--crates/parser/src/grammar/paths.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/crates/parser/src/grammar/paths.rs b/crates/parser/src/grammar/paths.rs
index 8de5d33a193..5dc9c6c82a1 100644
--- a/crates/parser/src/grammar/paths.rs
+++ b/crates/parser/src/grammar/paths.rs
@@ -118,6 +118,11 @@ fn opt_path_type_args(p: &mut Parser<'_>, mode: Mode) {
     match mode {
         Mode::Use => {}
         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
             // type F = Box<Fn(i32) -> ()>;
             if p.at(T!['(']) {