Rollup merge of #42006 - jseyfried:fix_include_regression, r=nrc
Fix ICE on `include!(line!())` (regression) Fixes #41776. r? @nrc
This commit is contained in:
commit
8b93680d28
@ -700,7 +700,7 @@ impl<'a> ExtCtxt<'a> {
|
|||||||
/// Returns span for the macro which originally caused the current expansion to happen.
|
/// Returns span for the macro which originally caused the current expansion to happen.
|
||||||
///
|
///
|
||||||
/// Stops backtracing at include! boundary.
|
/// Stops backtracing at include! boundary.
|
||||||
pub fn expansion_cause(&self) -> Span {
|
pub fn expansion_cause(&self) -> Option<Span> {
|
||||||
let mut ctxt = self.backtrace();
|
let mut ctxt = self.backtrace();
|
||||||
let mut last_macro = None;
|
let mut last_macro = None;
|
||||||
loop {
|
loop {
|
||||||
@ -716,7 +716,7 @@ impl<'a> ExtCtxt<'a> {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
last_macro.expect("missing expansion backtrace")
|
last_macro
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn struct_span_warn(&self,
|
pub fn struct_span_warn(&self,
|
||||||
|
@ -35,7 +35,7 @@ pub fn expand_line(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree])
|
|||||||
-> Box<base::MacResult+'static> {
|
-> Box<base::MacResult+'static> {
|
||||||
base::check_zero_tts(cx, sp, tts, "line!");
|
base::check_zero_tts(cx, sp, tts, "line!");
|
||||||
|
|
||||||
let topmost = cx.expansion_cause();
|
let topmost = cx.expansion_cause().unwrap_or(sp);
|
||||||
let loc = cx.codemap().lookup_char_pos(topmost.lo);
|
let loc = cx.codemap().lookup_char_pos(topmost.lo);
|
||||||
|
|
||||||
base::MacEager::expr(cx.expr_u32(topmost, loc.line as u32))
|
base::MacEager::expr(cx.expr_u32(topmost, loc.line as u32))
|
||||||
@ -46,7 +46,7 @@ pub fn expand_column(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree])
|
|||||||
-> Box<base::MacResult+'static> {
|
-> Box<base::MacResult+'static> {
|
||||||
base::check_zero_tts(cx, sp, tts, "column!");
|
base::check_zero_tts(cx, sp, tts, "column!");
|
||||||
|
|
||||||
let topmost = cx.expansion_cause();
|
let topmost = cx.expansion_cause().unwrap_or(sp);
|
||||||
let loc = cx.codemap().lookup_char_pos(topmost.lo);
|
let loc = cx.codemap().lookup_char_pos(topmost.lo);
|
||||||
|
|
||||||
base::MacEager::expr(cx.expr_u32(topmost, loc.col.to_usize() as u32))
|
base::MacEager::expr(cx.expr_u32(topmost, loc.col.to_usize() as u32))
|
||||||
@ -59,7 +59,7 @@ pub fn expand_file(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree])
|
|||||||
-> Box<base::MacResult+'static> {
|
-> Box<base::MacResult+'static> {
|
||||||
base::check_zero_tts(cx, sp, tts, "file!");
|
base::check_zero_tts(cx, sp, tts, "file!");
|
||||||
|
|
||||||
let topmost = cx.expansion_cause();
|
let topmost = cx.expansion_cause().unwrap_or(sp);
|
||||||
let loc = cx.codemap().lookup_char_pos(topmost.lo);
|
let loc = cx.codemap().lookup_char_pos(topmost.lo);
|
||||||
base::MacEager::expr(cx.expr_str(topmost, Symbol::intern(&loc.file.name)))
|
base::MacEager::expr(cx.expr_str(topmost, Symbol::intern(&loc.file.name)))
|
||||||
}
|
}
|
||||||
|
13
src/test/compile-fail/issue-41776.rs
Normal file
13
src/test/compile-fail/issue-41776.rs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
include!(line!()); //~ ERROR argument must be a string literal
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user