about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorwinstxnhdw <winstxnhdw@gmail.com>2024-07-23 22:32:23 +0100
committerwinstxnhdw <winstxnhdw@gmail.com>2024-07-23 22:36:46 +0100
commita0e1256515e35cf829640f46b6f336462a77d2b1 (patch)
treeb22f5ba79c24fd6a4b605d11c8a9bfbbb8e7548a /src
parent316616af110117f2ef1ce65fc737327992559e4c (diff)
fix: move `use` parsing to outer match arm
Diffstat (limited to 'src')
-rw-r--r--src/tools/rust-analyzer/crates/parser/src/grammar/generic_params.rs12
-rw-r--r--src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/precise_capturing.rast25
2 files changed, 19 insertions, 18 deletions
diff --git a/src/tools/rust-analyzer/crates/parser/src/grammar/generic_params.rs b/src/tools/rust-analyzer/crates/parser/src/grammar/generic_params.rs
index b653d8e060c..cf80a535ac5 100644
--- a/src/tools/rust-analyzer/crates/parser/src/grammar/generic_params.rs
+++ b/src/tools/rust-analyzer/crates/parser/src/grammar/generic_params.rs
@@ -144,6 +144,12 @@ fn type_bound(p: &mut Parser<'_>) -> bool {
     match p.current() {
         LIFETIME_IDENT => lifetime(p),
         T![for] => types::for_type(p, false),
+        // test precise_capturing
+        // fn captures<'a: 'a, 'b: 'b, T>() -> impl Sized + use<'b, T> {}
+        T![use] => {
+            p.bump_any();
+            generic_param_list(p)
+        }
         T![?] if p.nth_at(1, T![for]) => {
             // test question_for_type_trait_bound
             // fn f<T>() where T: ?for<> Sized {}
@@ -167,12 +173,6 @@ fn type_bound(p: &mut Parser<'_>) -> bool {
                 T![async] => {
                     p.bump_any();
                 }
-                // test precise_capturing
-                // fn captures<'a: 'a, 'b: 'b, T>() -> impl Sized + use<'b, T> {}
-                T![use] => {
-                    p.bump_any();
-                    generic_param_list(p);
-                }
                 _ => (),
             }
             if paths::is_use_path_start(p) {
diff --git a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/precise_capturing.rast b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/precise_capturing.rast
index 5a482384f8e..cf52f1e4799 100644
--- a/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/precise_capturing.rast
+++ b/src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/precise_capturing.rast
@@ -48,18 +48,19 @@ SOURCE_FILE
           WHITESPACE " "
           PLUS "+"
           WHITESPACE " "
-          USE_KW "use"
-          GENERIC_PARAM_LIST
-            L_ANGLE "<"
-            LIFETIME_PARAM
-              LIFETIME
-                LIFETIME_IDENT "'b"
-            COMMA ","
-            WHITESPACE " "
-            TYPE_PARAM
-              NAME
-                IDENT "T"
-            R_ANGLE ">"
+          TYPE_BOUND
+            USE_KW "use"
+            GENERIC_PARAM_LIST
+              L_ANGLE "<"
+              LIFETIME_PARAM
+                LIFETIME
+                  LIFETIME_IDENT "'b"
+              COMMA ","
+              WHITESPACE " "
+              TYPE_PARAM
+                NAME
+                  IDENT "T"
+              R_ANGLE ">"
     WHITESPACE " "
     BLOCK_EXPR
       STMT_LIST