rustc_builtin_macros/
gca.rs1use rustc_ast::ast;
2use rustc_ast::tokenstream::TokenStream;
3use rustc_expand::base::{self, DummyResult, ExpandResult, ExtCtxt, MacroExpanderResult};
4use rustc_span::Span;
5
6use crate::util::get_single_expr_from_tts;
7
8pub(crate) fn expand<'cx>(
9 cx: &'cx mut ExtCtxt<'_>,
10 span: Span,
11 tts: TokenStream,
12) -> MacroExpanderResult<'cx> {
13 let ExpandResult::Ready(expr) = get_single_expr_from_tts(cx, span, tts, "gca!") else {
14 return ExpandResult::Retry(());
15 };
16 let expr = match expr {
17 Ok(expr) => expr,
18 Err(err) => return ExpandResult::Ready(DummyResult::any(span, err)),
19 };
20
21 ExpandResult::Ready(Box::new(base::MacEager {
22 expr: Some(cx.expr(span, ast::ExprKind::GcaMacro(expr.clone()))),
23 ty: Some(cx.ty(span, ast::TyKind::GcaMacro(expr))),
24 ..Default::default()
25 }))
26}