diff options
| author | Jeremy Fitzhardinge <jeremy@goop.org> | 2020-05-25 16:21:25 -0700 |
|---|---|---|
| committer | Jeremy Fitzhardinge <jeremy@goop.org> | 2021-02-07 14:54:20 -0800 |
| commit | 82ccb6582a76d72fb5abaf7195dc7a653f1aa54b (patch) | |
| tree | 3b576e8c494f7aab329b398836948bfb3747f754 /compiler/rustc_errors/src/json.rs | |
| parent | 9778068cbc1e06cc3685422323ff38a2f397de26 (diff) | |
| download | rust-82ccb6582a76d72fb5abaf7195dc7a653f1aa54b.tar.gz rust-82ccb6582a76d72fb5abaf7195dc7a653f1aa54b.zip | |
Add `--extern-loc` to augment unused crate dependency diagnostics
This allows a build system to indicate a location in its own dependency
specification files (eg Cargo's `Cargo.toml`) which can be reported
along side any unused crate dependency.
This supports several types of location:
- 'json' - provide some json-structured data, which is included in the json diagnostics
in a `tool_metadata` field
- 'raw' - emit the provided string into the output. This also appears as a json string in
`tool_metadata`.
If no `--extern-location` is explicitly provided then a default json entry of the form
`"tool_metadata":{"name":<cratename>,"path":<cratepath>}` is emitted.
Diffstat (limited to 'compiler/rustc_errors/src/json.rs')
| -rw-r--r-- | compiler/rustc_errors/src/json.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/rustc_errors/src/json.rs b/compiler/rustc_errors/src/json.rs index d57beb1148a..89e844879f7 100644 --- a/compiler/rustc_errors/src/json.rs +++ b/compiler/rustc_errors/src/json.rs @@ -14,6 +14,7 @@ use rustc_span::source_map::{FilePathMapping, SourceMap}; use crate::emitter::{Emitter, HumanReadableErrorType}; use crate::registry::Registry; use crate::DiagnosticId; +use crate::ToolMetadata; use crate::{CodeSuggestion, SubDiagnostic}; use rustc_lint_defs::{Applicability, FutureBreakage}; @@ -180,6 +181,8 @@ struct Diagnostic { children: Vec<Diagnostic>, /// The message as rustc would render it. rendered: Option<String>, + /// Extra tool metadata + tool_metadata: ToolMetadata, } #[derive(Encodable)] @@ -269,6 +272,7 @@ impl Diagnostic { spans: DiagnosticSpan::from_suggestion(sugg, je), children: vec![], rendered: None, + tool_metadata: sugg.tool_metadata.clone(), }); // generate regular command line output and store it in the json @@ -312,6 +316,7 @@ impl Diagnostic { .chain(sugg) .collect(), rendered: Some(output), + tool_metadata: ToolMetadata::default(), } } @@ -327,6 +332,7 @@ impl Diagnostic { .unwrap_or_else(|| DiagnosticSpan::from_multispan(&diag.span, je)), children: vec![], rendered: None, + tool_metadata: ToolMetadata::default(), } } } |
