about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOli Scherer <github333195615777966@oli-obk.de>2025-02-27 14:23:55 +0000
committerOli Scherer <github333195615777966@oli-obk.de>2025-04-28 07:36:59 +0000
commit2134793792f0e53504076f037265ed6aefe12fd6 (patch)
treec53982e59cb1b212c5f182b73889607920a393ea
parent6338e364f007a0fe4b0bf7dfb425000890336d8a (diff)
downloadrust-2134793792f0e53504076f037265ed6aefe12fd6.tar.gz
rust-2134793792f0e53504076f037265ed6aefe12fd6.zip
Directly generate TyPat instead of TyPatKind
-rw-r--r--compiler/rustc_builtin_macros/src/pattern_type.rs14
1 files changed, 5 insertions, 9 deletions
diff --git a/compiler/rustc_builtin_macros/src/pattern_type.rs b/compiler/rustc_builtin_macros/src/pattern_type.rs
index e9d66693912..aaf5b233651 100644
--- a/compiler/rustc_builtin_macros/src/pattern_type.rs
+++ b/compiler/rustc_builtin_macros/src/pattern_type.rs
@@ -27,12 +27,7 @@ fn parse_pat_ty<'a>(cx: &mut ExtCtxt<'a>, stream: TokenStream) -> PResult<'a, (P
     let ty = parser.parse_ty()?;
     parser.expect_keyword(exp!(Is))?;
 
-    let start = parser.token.span;
-    let pat = parser.parse_pat_no_top_alt(None, None)?.into_inner();
-    let kind = pat_to_ty_pat(cx, pat);
-
-    let span = start.to(parser.token.span);
-    let pat = ty_pat(kind, span);
+    let pat = pat_to_ty_pat(cx, parser.parse_pat_no_top_alt(None, None)?.into_inner());
 
     if parser.token != token::Eof {
         parser.unexpected()?;
@@ -45,8 +40,8 @@ fn ty_pat(kind: TyPatKind, span: Span) -> P<TyPat> {
     P(TyPat { id: DUMMY_NODE_ID, kind, span, tokens: None })
 }
 
-fn pat_to_ty_pat(cx: &mut ExtCtxt<'_>, pat: ast::Pat) -> TyPatKind {
-    match pat.kind {
+fn pat_to_ty_pat(cx: &mut ExtCtxt<'_>, pat: ast::Pat) -> P<TyPat> {
+    let kind = match pat.kind {
         ast::PatKind::Range(start, end, include_end) => TyPatKind::Range(
             start.map(|value| P(AnonConst { id: DUMMY_NODE_ID, value })),
             end.map(|value| P(AnonConst { id: DUMMY_NODE_ID, value })),
@@ -54,5 +49,6 @@ fn pat_to_ty_pat(cx: &mut ExtCtxt<'_>, pat: ast::Pat) -> TyPatKind {
         ),
         ast::PatKind::Err(guar) => TyPatKind::Err(guar),
         _ => TyPatKind::Err(cx.dcx().span_err(pat.span, "pattern not supported in pattern types")),
-    }
+    };
+    ty_pat(kind, pat.span)
 }