mirror of https://github.com/rust-lang/rust.git
Move DebuggerVisualizerFile types from rustc_span to rustc_middle
This commit is contained in:
parent
a7d48800f9
commit
d623668551
|
@ -9,10 +9,9 @@ use rustc_ast::attr;
|
|||
use rustc_codegen_ssa::base::collect_debugger_visualizers_transitive;
|
||||
use rustc_codegen_ssa::traits::*;
|
||||
use rustc_hir::def_id::LOCAL_CRATE;
|
||||
use rustc_middle::bug;
|
||||
use rustc_middle::{bug, middle::debugger_visualizer::DebuggerVisualizerType};
|
||||
use rustc_session::config::{CrateType, DebugInfo};
|
||||
use rustc_span::symbol::sym;
|
||||
use rustc_span::DebuggerVisualizerType;
|
||||
|
||||
/// Inserts a side-effect free instruction sequence that makes sure that the
|
||||
/// .debug_gdb_scripts global is referenced, so it isn't removed by the linker.
|
||||
|
|
|
@ -9,6 +9,7 @@ use rustc_fs_util::fix_windows_verbatim_for_gcc;
|
|||
use rustc_hir::def_id::{CrateNum, LOCAL_CRATE};
|
||||
use rustc_metadata::find_native_static_library;
|
||||
use rustc_metadata::fs::{emit_wrapper_file, METADATA_FILENAME};
|
||||
use rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
|
||||
use rustc_middle::middle::dependency_format::Linkage;
|
||||
use rustc_middle::middle::exported_symbols::SymbolExportKind;
|
||||
use rustc_session::config::{self, CFGuard, CrateType, DebugInfo, LdImpl, Strip};
|
||||
|
@ -21,7 +22,6 @@ use rustc_session::utils::NativeLibKind;
|
|||
/// need out of the shared crate context before we get rid of it.
|
||||
use rustc_session::{filesearch, Session};
|
||||
use rustc_span::symbol::Symbol;
|
||||
use rustc_span::DebuggerVisualizerFile;
|
||||
use rustc_target::spec::crt_objects::{CrtObjects, LinkSelfContainedDefault};
|
||||
use rustc_target::spec::{Cc, LinkOutputKind, LinkerFlavor, LinkerFlavorCli, Lld, PanicStrategy};
|
||||
use rustc_target::spec::{RelocModel, RelroLevel, SanitizerSet, SplitDebuginfo};
|
||||
|
|
|
@ -23,6 +23,7 @@ use rustc_hir::def_id::{DefId, LOCAL_CRATE};
|
|||
use rustc_hir::lang_items::LangItem;
|
||||
use rustc_metadata::EncodedMetadata;
|
||||
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs;
|
||||
use rustc_middle::middle::debugger_visualizer::{DebuggerVisualizerFile, DebuggerVisualizerType};
|
||||
use rustc_middle::middle::exported_symbols;
|
||||
use rustc_middle::middle::exported_symbols::SymbolExportKind;
|
||||
use rustc_middle::middle::lang_items;
|
||||
|
@ -35,7 +36,6 @@ use rustc_session::config::{self, CrateType, EntryFnType, OutputType};
|
|||
use rustc_session::Session;
|
||||
use rustc_span::symbol::sym;
|
||||
use rustc_span::Symbol;
|
||||
use rustc_span::{DebuggerVisualizerFile, DebuggerVisualizerType};
|
||||
use rustc_target::abi::{Align, FIRST_VARIANT};
|
||||
|
||||
use std::collections::BTreeSet;
|
||||
|
|
|
@ -28,6 +28,7 @@ use rustc_errors::{DiagnosticMessage, SubdiagnosticMessage};
|
|||
use rustc_fluent_macro::fluent_messages;
|
||||
use rustc_hir::def_id::CrateNum;
|
||||
use rustc_middle::dep_graph::WorkProduct;
|
||||
use rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
|
||||
use rustc_middle::middle::dependency_format::Dependencies;
|
||||
use rustc_middle::middle::exported_symbols::SymbolExportKind;
|
||||
use rustc_middle::query::{ExternProviders, Providers};
|
||||
|
@ -37,7 +38,6 @@ use rustc_session::config::{CrateType, OutputFilenames, OutputType, RUST_CGU_EXT
|
|||
use rustc_session::cstore::{self, CrateSource};
|
||||
use rustc_session::utils::NativeLibKind;
|
||||
use rustc_span::symbol::Symbol;
|
||||
use rustc_span::DebuggerVisualizerFile;
|
||||
use std::collections::BTreeSet;
|
||||
use std::io;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
|
|
@ -18,6 +18,7 @@ use rustc_hir::definitions::{DefKey, DefPath, DefPathData, DefPathHash};
|
|||
use rustc_hir::diagnostic_items::DiagnosticItems;
|
||||
use rustc_index::{Idx, IndexVec};
|
||||
use rustc_middle::metadata::ModChild;
|
||||
use rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
|
||||
use rustc_middle::middle::exported_symbols::{ExportedSymbol, SymbolExportInfo};
|
||||
use rustc_middle::mir::interpret::{AllocDecodingSession, AllocDecodingState};
|
||||
use rustc_middle::ty::codec::TyDecoder;
|
||||
|
@ -961,7 +962,7 @@ impl<'a, 'tcx> CrateMetadataRef<'a> {
|
|||
.decode((self, sess))
|
||||
}
|
||||
|
||||
fn get_debugger_visualizers(self) -> Vec<rustc_span::DebuggerVisualizerFile> {
|
||||
fn get_debugger_visualizers(self) -> Vec<DebuggerVisualizerFile> {
|
||||
self.root.debugger_visualizers.decode(self).collect::<Vec<_>>()
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ use rustc_hir::definitions::DefPathData;
|
|||
use rustc_hir::intravisit::{self, Visitor};
|
||||
use rustc_hir::lang_items::LangItem;
|
||||
use rustc_middle::hir::nested_filter;
|
||||
use rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
|
||||
use rustc_middle::middle::dependency_format::Linkage;
|
||||
use rustc_middle::middle::exported_symbols::{
|
||||
metadata_symbol_name, ExportedSymbol, SymbolExportInfo,
|
||||
|
@ -36,9 +37,7 @@ use rustc_session::config::{CrateType, OptLevel};
|
|||
use rustc_session::cstore::{ForeignModule, LinkagePreference, NativeLib};
|
||||
use rustc_span::hygiene::{ExpnIndex, HygieneEncodeContext, MacroKind};
|
||||
use rustc_span::symbol::{sym, Symbol};
|
||||
use rustc_span::{
|
||||
self, DebuggerVisualizerFile, ExternalSource, FileName, SourceFile, Span, SyntaxContext,
|
||||
};
|
||||
use rustc_span::{self, ExternalSource, FileName, SourceFile, Span, SyntaxContext};
|
||||
use std::borrow::Borrow;
|
||||
use std::collections::hash_map::Entry;
|
||||
use std::hash::Hash;
|
||||
|
|
|
@ -2,6 +2,7 @@ use crate::creader::CrateMetadataRef;
|
|||
use decoder::Metadata;
|
||||
use def_path_hash_map::DefPathHashMapRef;
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_middle::middle::debugger_visualizer::DebuggerVisualizerFile;
|
||||
use table::TableBuilder;
|
||||
|
||||
use rustc_ast as ast;
|
||||
|
@ -246,7 +247,7 @@ pub(crate) struct CrateRoot {
|
|||
proc_macro_data: Option<ProcMacroData>,
|
||||
|
||||
tables: LazyTables,
|
||||
debugger_visualizers: LazyArray<rustc_span::DebuggerVisualizerFile>,
|
||||
debugger_visualizers: LazyArray<DebuggerVisualizerFile>,
|
||||
|
||||
exported_symbols: LazyArray<(ExportedSymbol<'static>, SymbolExportInfo)>,
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use crate::hir::{ModuleItems, Owner};
|
||||
use crate::middle::debugger_visualizer::DebuggerVisualizerFile;
|
||||
use crate::query::LocalCrate;
|
||||
use crate::ty::TyCtxt;
|
||||
use rustc_ast as ast;
|
||||
|
@ -15,7 +16,7 @@ use rustc_index::Idx;
|
|||
use rustc_middle::hir::nested_filter;
|
||||
use rustc_span::def_id::StableCrateId;
|
||||
use rustc_span::symbol::{kw, sym, Ident, Symbol};
|
||||
use rustc_span::{DebuggerVisualizerFile, Span};
|
||||
use rustc_span::Span;
|
||||
use rustc_target::spec::abi::Abi;
|
||||
|
||||
#[inline]
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
use rustc_data_structures::sync::Lrc;
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[derive(HashStable)]
|
||||
#[derive(Copy, PartialEq, PartialOrd, Clone, Ord, Eq, Hash, Debug, Encodable, Decodable)]
|
||||
pub enum DebuggerVisualizerType {
|
||||
Natvis,
|
||||
GdbPrettyPrinter,
|
||||
}
|
||||
|
||||
/// A single debugger visualizer file.
|
||||
#[derive(HashStable)]
|
||||
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Encodable, Decodable)]
|
||||
pub struct DebuggerVisualizerFile {
|
||||
/// The complete debugger visualizer source.
|
||||
pub src: Lrc<[u8]>,
|
||||
/// Indicates which visualizer type this targets.
|
||||
pub visualizer_type: DebuggerVisualizerType,
|
||||
/// The file path to the visualizer file. This is used for reporting
|
||||
/// visualizer files in dep-info. Before it is written to crate metadata,
|
||||
/// the path is erased to `None`, so as not to emit potentially privacy
|
||||
/// sensitive data.
|
||||
pub path: Option<PathBuf>,
|
||||
}
|
||||
|
||||
impl DebuggerVisualizerFile {
|
||||
pub fn new(src: Lrc<[u8]>, visualizer_type: DebuggerVisualizerType, path: PathBuf) -> Self {
|
||||
DebuggerVisualizerFile { src, visualizer_type, path: Some(path) }
|
||||
}
|
||||
|
||||
pub fn path_erased(&self) -> Self {
|
||||
DebuggerVisualizerFile {
|
||||
src: self.src.clone(),
|
||||
visualizer_type: self.visualizer_type,
|
||||
path: None,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
pub mod codegen_fn_attrs;
|
||||
pub mod debugger_visualizer;
|
||||
pub mod dependency_format;
|
||||
pub mod exported_symbols;
|
||||
pub mod lang_items;
|
||||
|
|
|
@ -12,6 +12,7 @@ use crate::infer::canonical::{self, Canonical};
|
|||
use crate::lint::LintExpectation;
|
||||
use crate::metadata::ModChild;
|
||||
use crate::middle::codegen_fn_attrs::CodegenFnAttrs;
|
||||
use crate::middle::debugger_visualizer::DebuggerVisualizerFile;
|
||||
use crate::middle::exported_symbols::{ExportedSymbol, SymbolExportInfo};
|
||||
use crate::middle::lib_features::LibFeatures;
|
||||
use crate::middle::privacy::EffectiveVisibilities;
|
||||
|
@ -1795,7 +1796,7 @@ rustc_queries! {
|
|||
/// NOTE: This query has to be marked `eval_always` because it reads data
|
||||
/// directly from disk that is not tracked anywhere else. I.e. it
|
||||
/// represents a genuine input to the query system.
|
||||
query debugger_visualizers(_: CrateNum) -> &'tcx Vec<rustc_span::DebuggerVisualizerFile> {
|
||||
query debugger_visualizers(_: CrateNum) -> &'tcx Vec<DebuggerVisualizerFile> {
|
||||
arena_cache
|
||||
desc { "looking up the debugger visualizers for this crate" }
|
||||
separate_provide_extern
|
||||
|
|
|
@ -56,6 +56,7 @@ trivially_parameterized_over_tcx! {
|
|||
std::string::String,
|
||||
crate::metadata::ModChild,
|
||||
crate::middle::codegen_fn_attrs::CodegenFnAttrs,
|
||||
crate::middle::debugger_visualizer::DebuggerVisualizerFile,
|
||||
crate::middle::exported_symbols::SymbolExportInfo,
|
||||
crate::middle::resolve_bound_vars::ObjectLifetimeDefault,
|
||||
crate::mir::ConstQualifs,
|
||||
|
@ -91,7 +92,6 @@ trivially_parameterized_over_tcx! {
|
|||
rustc_session::cstore::ForeignModule,
|
||||
rustc_session::cstore::LinkagePreference,
|
||||
rustc_session::cstore::NativeLib,
|
||||
rustc_span::DebuggerVisualizerFile,
|
||||
rustc_span::ExpnData,
|
||||
rustc_span::ExpnHash,
|
||||
rustc_span::ExpnId,
|
||||
|
|
|
@ -1915,7 +1915,10 @@ impl CheckAttrVisitor<'_> {
|
|||
|
||||
/// Checks if the items on the `#[debugger_visualizer]` attribute are valid.
|
||||
fn check_debugger_visualizer(&self, attr: &Attribute, target: Target) -> bool {
|
||||
// FIXME: mention that other checks are done in the query provider
|
||||
// Here we only check that the #[debugger_visualizer] attribute is attached
|
||||
// to nothing other than a module. All other checks are done in the
|
||||
// `debugger_visualizer` query where they need to be done for decoding
|
||||
// anyway.
|
||||
match target {
|
||||
Target::Mod => {}
|
||||
_ => {
|
||||
|
|
|
@ -4,11 +4,12 @@ use rustc_ast::Attribute;
|
|||
use rustc_data_structures::sync::Lrc;
|
||||
use rustc_expand::base::resolve_path;
|
||||
use rustc_middle::{
|
||||
middle::debugger_visualizer::{DebuggerVisualizerFile, DebuggerVisualizerType},
|
||||
query::{LocalCrate, Providers},
|
||||
ty::TyCtxt,
|
||||
};
|
||||
use rustc_session::Session;
|
||||
use rustc_span::{sym, DebuggerVisualizerFile, DebuggerVisualizerType};
|
||||
use rustc_span::sym;
|
||||
|
||||
use crate::errors::{DebugVisualizerInvalid, DebugVisualizerUnreadable};
|
||||
|
||||
|
|
|
@ -1257,39 +1257,6 @@ impl SourceFileHash {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(HashStable_Generic)]
|
||||
#[derive(Copy, PartialEq, PartialOrd, Clone, Ord, Eq, Hash, Debug, Encodable, Decodable)]
|
||||
pub enum DebuggerVisualizerType {
|
||||
Natvis,
|
||||
GdbPrettyPrinter,
|
||||
}
|
||||
|
||||
/// A single debugger visualizer file.
|
||||
#[derive(HashStable_Generic)]
|
||||
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Encodable, Decodable)]
|
||||
pub struct DebuggerVisualizerFile {
|
||||
/// The complete debugger visualizer source.
|
||||
pub src: Lrc<[u8]>,
|
||||
/// Indicates which visualizer type this targets.
|
||||
pub visualizer_type: DebuggerVisualizerType,
|
||||
// FIXME: Docs
|
||||
pub path: Option<PathBuf>,
|
||||
}
|
||||
|
||||
impl DebuggerVisualizerFile {
|
||||
pub fn new(src: Lrc<[u8]>, visualizer_type: DebuggerVisualizerType, path: PathBuf) -> Self {
|
||||
DebuggerVisualizerFile { src, visualizer_type, path: Some(path) }
|
||||
}
|
||||
|
||||
pub fn path_erased(&self) -> Self {
|
||||
DebuggerVisualizerFile {
|
||||
src: self.src.clone(),
|
||||
visualizer_type: self.visualizer_type,
|
||||
path: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub enum SourceFileLines {
|
||||
/// The source file lines, in decoded (random-access) form.
|
||||
|
|
Loading…
Reference in New Issue