Fix invalid special casing of the unreachable! macro
This commit is contained in:
parent
86f5e177bc
commit
565710b33c
15 changed files with 140 additions and 19 deletions
|
@ -1,4 +1,4 @@
|
|||
use crate::panic::use_panic_2021;
|
||||
use crate::edition_panic::use_panic_2021;
|
||||
use rustc_ast::ptr::P;
|
||||
use rustc_ast::token;
|
||||
use rustc_ast::tokenstream::{DelimSpan, TokenStream};
|
||||
|
|
|
@ -20,8 +20,29 @@ pub fn expand_panic<'cx>(
|
|||
sp: Span,
|
||||
tts: TokenStream,
|
||||
) -> Box<dyn MacResult + 'cx> {
|
||||
let panic = if use_panic_2021(sp) { sym::panic_2021 } else { sym::panic_2015 };
|
||||
let mac = if use_panic_2021(sp) { sym::panic_2021 } else { sym::panic_2015 };
|
||||
expand(mac, cx, sp, tts)
|
||||
}
|
||||
|
||||
// This expands to either
|
||||
// - `$crate::panic::unreachable_2015!(...)` or
|
||||
// - `$crate::panic::unreachable_2021!(...)`
|
||||
// depending on the edition.
|
||||
pub fn expand_unreachable<'cx>(
|
||||
cx: &'cx mut ExtCtxt<'_>,
|
||||
sp: Span,
|
||||
tts: TokenStream,
|
||||
) -> Box<dyn MacResult + 'cx> {
|
||||
let mac = if use_panic_2021(sp) { sym::unreachable_2021 } else { sym::unreachable_2015 };
|
||||
expand(mac, cx, sp, tts)
|
||||
}
|
||||
|
||||
fn expand<'cx>(
|
||||
mac: rustc_span::Symbol,
|
||||
cx: &'cx mut ExtCtxt<'_>,
|
||||
sp: Span,
|
||||
tts: TokenStream,
|
||||
) -> Box<dyn MacResult + 'cx> {
|
||||
let sp = cx.with_call_site_ctxt(sp);
|
||||
|
||||
MacEager::expr(
|
||||
|
@ -31,7 +52,7 @@ pub fn expand_panic<'cx>(
|
|||
path: Path {
|
||||
span: sp,
|
||||
segments: cx
|
||||
.std_path(&[sym::panic, panic])
|
||||
.std_path(&[sym::panic, mac])
|
||||
.into_iter()
|
||||
.map(|ident| PathSegment::from_ident(ident))
|
||||
.collect(),
|
|
@ -31,12 +31,12 @@ mod concat_bytes;
|
|||
mod concat_idents;
|
||||
mod derive;
|
||||
mod deriving;
|
||||
mod edition_panic;
|
||||
mod env;
|
||||
mod format;
|
||||
mod format_foreign;
|
||||
mod global_allocator;
|
||||
mod log_syntax;
|
||||
mod panic;
|
||||
mod source_util;
|
||||
mod test;
|
||||
mod trace_macros;
|
||||
|
@ -82,8 +82,9 @@ pub fn register_builtin_macros(resolver: &mut dyn ResolverExpand) {
|
|||
log_syntax: log_syntax::expand_log_syntax,
|
||||
module_path: source_util::expand_mod,
|
||||
option_env: env::expand_option_env,
|
||||
core_panic: panic::expand_panic,
|
||||
std_panic: panic::expand_panic,
|
||||
core_panic: edition_panic::expand_panic,
|
||||
std_panic: edition_panic::expand_panic,
|
||||
unreachable: edition_panic::expand_unreachable,
|
||||
stringify: source_util::expand_stringify,
|
||||
trace_macros: trace_macros::expand_trace_macros,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue