use rustc_session::search_paths::PathKind;
use rustc_session::Session;
use rustc_span::symbol::Symbol;
-use rustc_span::FileName;
+use rustc_span::{FileName, RealFileName};
use rustc_trait_selection::traits;
use rustc_typeck as typeck;
recursion_limit: sess.recursion_limit(),
trace_mac: sess.opts.debugging_opts.trace_macros,
should_test: sess.opts.test,
+ span_debug: sess.opts.debugging_opts.span_debug,
..rustc_expand::expand::ExpansionConfig::default(crate_name.to_string())
};
ecx.check_unused_macros();
});
- let mut missing_fragment_specifiers: Vec<_> =
- ecx.parse_sess.missing_fragment_specifiers.borrow().iter().cloned().collect();
- missing_fragment_specifiers.sort();
+ let mut missing_fragment_specifiers: Vec<_> = ecx
+ .parse_sess
+ .missing_fragment_specifiers
+ .borrow()
+ .iter()
+ .map(|(span, node_id)| (*span, *node_id))
+ .collect();
+ missing_fragment_specifiers.sort_unstable_by_key(|(span, _)| *span);
let recursion_limit_hit = ecx.reduced_recursion_limit.is_some();
- for span in missing_fragment_specifiers {
+ for (span, node_id) in missing_fragment_specifiers {
let lint = lint::builtin::MISSING_FRAGMENT_SPECIFIER;
let msg = "missing fragment specifier";
- resolver.lint_buffer().buffer_lint(lint, ast::CRATE_NODE_ID, span, msg);
+ resolver.lint_buffer().buffer_lint(lint, node_id, span, msg);
}
if cfg!(windows) {
env::set_var("PATH", &old_path);
for cnum in resolver.cstore().crates_untracked() {
let source = resolver.cstore().crate_source_untracked(cnum);
if let Some((path, _)) = source.dylib {
- files.push(escape_dep_filename(&FileName::Real(path)));
+ let file_name = FileName::Real(RealFileName::Named(path));
+ files.push(escape_dep_filename(&file_name));
}
if let Some((path, _)) = source.rlib {
- files.push(escape_dep_filename(&FileName::Real(path)));
+ let file_name = FileName::Real(RealFileName::Named(path));
+ files.push(escape_dep_filename(&file_name));
}
if let Some((path, _)) = source.rmeta {
- files.push(escape_dep_filename(&FileName::Real(path)));
+ let file_name = FileName::Real(RealFileName::Named(path));
+ files.push(escape_dep_filename(&file_name));
}
}
});
sess.time("MIR_effect_checking", || {
for def_id in tcx.body_owners() {
- mir::transform::check_unsafety::check_unsafety(tcx, def_id)
+ mir::transform::check_unsafety::check_unsafety(tcx, def_id);
+
+ if tcx.hir().body_const_context(def_id).is_some() {
+ tcx.ensure().mir_drops_elaborated_and_const_checked(def_id);
+ }
}
});