about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/parser/src/grammar/generic_args.rs3
-rw-r--r--crates/parser/src/grammar/generic_params.rs3
-rw-r--r--crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rast30
-rw-r--r--crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rs1
-rw-r--r--crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rast36
-rw-r--r--crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rs1
6 files changed, 41 insertions, 33 deletions
diff --git a/crates/parser/src/grammar/generic_args.rs b/crates/parser/src/grammar/generic_args.rs
index 762d0218c1f..948873ae2da 100644
--- a/crates/parser/src/grammar/generic_args.rs
+++ b/crates/parser/src/grammar/generic_args.rs
@@ -99,9 +99,8 @@ pub(super) fn const_arg_expr(p: &mut Parser) {
             expressions::literal(p);
             lm.complete(p, PREFIX_EXPR);
         }
-        // test const_arg_path
-        // type T = S<u32::MAX>;
         _ => {
+            // This shouldn't be hit by `const_arg`
             let lm = p.start();
             paths::use_path(p);
             lm.complete(p, PATH_EXPR);
diff --git a/crates/parser/src/grammar/generic_params.rs b/crates/parser/src/grammar/generic_params.rs
index 9797de1ff0b..fbd514078d4 100644
--- a/crates/parser/src/grammar/generic_params.rs
+++ b/crates/parser/src/grammar/generic_params.rs
@@ -85,6 +85,9 @@ fn const_param(p: &mut Parser, m: Marker) {
 
         // test const_param_default_expression
         // struct A<const N: i32 = { 1 }>;
+
+        // test const_param_default_path
+        // struct A<const N: i32 = i32::MAX>;
         generic_args::const_arg_expr(p);
     }
 
diff --git a/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rast b/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rast
deleted file mode 100644
index 62ddefa5a8d..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rast
+++ /dev/null
@@ -1,30 +0,0 @@
-SOURCE_FILE
-  TYPE_ALIAS
-    TYPE_KW "type"
-    WHITESPACE " "
-    NAME
-      IDENT "T"
-    WHITESPACE " "
-    EQ "="
-    WHITESPACE " "
-    PATH_TYPE
-      PATH
-        PATH_SEGMENT
-          NAME_REF
-            IDENT "S"
-          GENERIC_ARG_LIST
-            L_ANGLE "<"
-            TYPE_ARG
-              PATH_TYPE
-                PATH
-                  PATH
-                    PATH_SEGMENT
-                      NAME_REF
-                        IDENT "u32"
-                  COLON2 "::"
-                  PATH_SEGMENT
-                    NAME_REF
-                      IDENT "MAX"
-            R_ANGLE ">"
-    SEMICOLON ";"
-  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rs b/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rs
deleted file mode 100644
index 1383d0d6d56..00000000000
--- a/crates/parser/test_data/parser/inline/ok/0188_const_arg_path.rs
+++ /dev/null
@@ -1 +0,0 @@
-type T = S<u32::MAX>;
diff --git a/crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rast b/crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rast
new file mode 100644
index 00000000000..11002bf98d0
--- /dev/null
+++ b/crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rast
@@ -0,0 +1,36 @@
+SOURCE_FILE
+  STRUCT
+    STRUCT_KW "struct"
+    WHITESPACE " "
+    NAME
+      IDENT "A"
+    GENERIC_PARAM_LIST
+      L_ANGLE "<"
+      CONST_PARAM
+        CONST_KW "const"
+        WHITESPACE " "
+        NAME
+          IDENT "N"
+        COLON ":"
+        WHITESPACE " "
+        PATH_TYPE
+          PATH
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "i32"
+        WHITESPACE " "
+        EQ "="
+        WHITESPACE " "
+        PATH_EXPR
+          PATH
+            PATH
+              PATH_SEGMENT
+                NAME_REF
+                  IDENT "i32"
+            COLON2 "::"
+            PATH_SEGMENT
+              NAME_REF
+                IDENT "MAX"
+      R_ANGLE ">"
+    SEMICOLON ";"
+  WHITESPACE "\n"
diff --git a/crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rs b/crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rs
new file mode 100644
index 00000000000..f3da43ca06c
--- /dev/null
+++ b/crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rs
@@ -0,0 +1 @@
+struct A<const N: i32 = i32::MAX>;