internal: diagnostic code is mandatory
This commit is contained in:
parent
b404b91da6
commit
500c909c76
@ -51,28 +51,26 @@ impl DiagnosticCode {
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Diagnostic {
|
||||
// pub name: Option<String>,
|
||||
pub code: DiagnosticCode,
|
||||
pub message: String,
|
||||
pub range: TextRange,
|
||||
pub severity: Severity,
|
||||
pub fixes: Option<Vec<Assist>>,
|
||||
pub unused: bool,
|
||||
pub code: Option<DiagnosticCode>,
|
||||
pub experimental: bool,
|
||||
pub fixes: Option<Vec<Assist>>,
|
||||
}
|
||||
|
||||
impl Diagnostic {
|
||||
fn new(code: &'static str, message: impl Into<String>, range: TextRange) -> Diagnostic {
|
||||
let message = message.into();
|
||||
let code = Some(DiagnosticCode(code));
|
||||
Self {
|
||||
Diagnostic {
|
||||
code: DiagnosticCode(code),
|
||||
message,
|
||||
range,
|
||||
severity: Severity::Error,
|
||||
fixes: None,
|
||||
unused: false,
|
||||
code,
|
||||
experimental: false,
|
||||
fixes: None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,15 +179,8 @@ pub(crate) fn diagnostics(
|
||||
}
|
||||
|
||||
res.retain(|d| {
|
||||
if let Some(code) = d.code {
|
||||
if ctx.config.disabled.contains(code.as_str()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ctx.config.disable_experimental && d.experimental {
|
||||
return false;
|
||||
}
|
||||
true
|
||||
!ctx.config.disabled.contains(d.code.as_str())
|
||||
&& !(ctx.config.disable_experimental && d.experimental)
|
||||
});
|
||||
|
||||
res
|
||||
|
@ -65,9 +65,14 @@ mod baz {}
|
||||
expect![[r#"
|
||||
[
|
||||
Diagnostic {
|
||||
code: DiagnosticCode(
|
||||
"unresolved-module",
|
||||
),
|
||||
message: "unresolved module",
|
||||
range: 0..8,
|
||||
severity: Error,
|
||||
unused: false,
|
||||
experimental: false,
|
||||
fixes: Some(
|
||||
[
|
||||
Assist {
|
||||
@ -98,13 +103,6 @@ mod baz {}
|
||||
},
|
||||
],
|
||||
),
|
||||
unused: false,
|
||||
code: Some(
|
||||
DiagnosticCode(
|
||||
"unresolved-module",
|
||||
),
|
||||
),
|
||||
experimental: false,
|
||||
},
|
||||
]
|
||||
"#]],
|
||||
|
@ -1229,14 +1229,13 @@ pub(crate) fn publish_diagnostics(
|
||||
.map(|d| Diagnostic {
|
||||
range: to_proto::range(&line_index, d.range),
|
||||
severity: Some(to_proto::diagnostic_severity(d.severity)),
|
||||
code: d.code.map(|d| d.as_str().to_owned()).map(NumberOrString::String),
|
||||
code_description: d.code.and_then(|code| {
|
||||
lsp_types::Url::parse(&format!(
|
||||
code: Some(NumberOrString::String(d.code.as_str().to_string())),
|
||||
code_description: Some(lsp_types::CodeDescription {
|
||||
href: lsp_types::Url::parse(&format!(
|
||||
"https://rust-analyzer.github.io/manual.html#{}",
|
||||
code.as_str()
|
||||
d.code.as_str()
|
||||
))
|
||||
.ok()
|
||||
.map(|href| lsp_types::CodeDescription { href })
|
||||
.unwrap(),
|
||||
}),
|
||||
source: Some("rust-analyzer".to_string()),
|
||||
message: d.message,
|
||||
|
Loading…
x
Reference in New Issue
Block a user