]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_builtin_macros/src/compile_error.rs
bump version to 1.81.0+dfsg1-2~bpo12+pve1
[rustc.git] / compiler / rustc_builtin_macros / src / compile_error.rs
CommitLineData
041b39d2
XL
1// The compiler code necessary to support the compile_error! extension.
2
e8be2606 3use crate::util::get_single_str_from_tts;
74b04a01 4use rustc_ast::tokenstream::TokenStream;
c620b35d 5use rustc_expand::base::{DummyResult, ExpandResult, ExtCtxt, MacroExpanderResult};
dfeec247 6use rustc_span::Span;
041b39d2 7
e8be2606 8pub(crate) fn expand_compile_error<'cx>(
dfeec247
XL
9 cx: &'cx mut ExtCtxt<'_>,
10 sp: Span,
11 tts: TokenStream,
c620b35d
FG
12) -> MacroExpanderResult<'cx> {
13 let ExpandResult::Ready(mac) = get_single_str_from_tts(cx, sp, tts, "compile_error!") else {
14 return ExpandResult::Retry(());
15 };
16 let var = match mac {
17 Ok(var) => var,
18 Err(guar) => return ExpandResult::Ready(DummyResult::any(sp, guar)),
041b39d2
XL
19 };
20
c620b35d 21 #[expect(rustc::diagnostic_outside_of_impl, reason = "diagnostic message is specified by user")]
353b0b11 22 #[expect(rustc::untranslatable_diagnostic, reason = "diagnostic message is specified by user")]
c620b35d 23 let guar = cx.dcx().span_err(sp, var.to_string());
041b39d2 24
c620b35d 25 ExpandResult::Ready(DummyResult::any(sp, guar))
041b39d2 26}