From 346638c8098fefd0b6fa3cf81fbdf22ebfaab9be Mon Sep 17 00:00:00 2001 From: gfreezy Date: Mon, 24 Dec 2018 00:39:33 +0800 Subject: add serverity to vscode diagnostics --- crates/ra_analysis/src/imp.rs | 5 ++++- crates/ra_analysis/src/lib.rs | 2 ++ crates/ra_analysis/tests/tests.rs | 3 ++- crates/ra_editor/src/lib.rs | 19 +++++++++++-------- crates/ra_lsp_server/src/main_loop/handlers.rs | 15 +++++++++++++-- 5 files changed, 32 insertions(+), 12 deletions(-) (limited to 'crates') diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs index b01382808..e054227a9 100644 --- a/crates/ra_analysis/src/imp.rs +++ b/crates/ra_analysis/src/imp.rs @@ -3,7 +3,7 @@ use std::{ sync::Arc, }; -use ra_editor::{self, find_node_at_offset, FileSymbol, LineIndex, LocalEdit}; +use ra_editor::{self, find_node_at_offset, FileSymbol, LineIndex, LocalEdit, Severity}; use ra_syntax::{ ast::{self, ArgListOwner, Expr, NameOwner}, AstNode, SourceFileNode, @@ -364,6 +364,7 @@ impl AnalysisImpl { .map(|d| Diagnostic { range: d.range, message: d.msg, + severity: d.severity, fix: None, }) .collect::>(); @@ -385,6 +386,7 @@ impl AnalysisImpl { Diagnostic { range: name_node.range(), message: "unresolved module".to_string(), + severity: Some(Severity::Error), fix: Some(fix), } } @@ -407,6 +409,7 @@ impl AnalysisImpl { Diagnostic { range: name_node.range(), message: "can't declare module at this location".to_string(), + severity: Some(Severity::Error), fix: Some(fix), } } diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index 85df9c089..8ab6334a7 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs @@ -34,6 +34,7 @@ pub use crate::{ }; pub use ra_editor::{ FileSymbol, Fold, FoldKind, HighlightedRange, LineIndex, Runnable, RunnableKind, StructureNode, + Severity }; pub use hir::FnSignatureInfo; @@ -198,6 +199,7 @@ pub struct Diagnostic { pub message: String, pub range: TextRange, pub fix: Option, + pub severity: Option, } #[derive(Debug)] diff --git a/crates/ra_analysis/tests/tests.rs b/crates/ra_analysis/tests/tests.rs index 938ca797a..2313e35f5 100644 --- a/crates/ra_analysis/tests/tests.rs +++ b/crates/ra_analysis/tests/tests.rs @@ -82,7 +82,8 @@ fn test_unresolved_module_diagnostic() { label: "create module", source_file_edits: [], file_system_edits: [CreateFile { source_root: SourceRootId(0), path: "foo.rs" }], - cursor_position: None }) }]"#, + cursor_position: None }), + severity: Some(Error) }]"#, &diagnostics, ); } diff --git a/crates/ra_editor/src/lib.rs b/crates/ra_editor/src/lib.rs index 48676f2e8..399bb8fe8 100644 --- a/crates/ra_editor/src/lib.rs +++ b/crates/ra_editor/src/lib.rs @@ -34,14 +34,16 @@ pub struct HighlightedRange { #[derive(Debug, Copy, Clone)] pub enum Severity { Error, - Warning + Warning, + Information, + Hint, } #[derive(Debug)] pub struct Diagnostic { pub range: TextRange, pub msg: String, - pub severity: Severity, + pub severity: Option, } #[derive(Debug)] @@ -104,12 +106,13 @@ pub fn diagnostics(file: &SourceFileNode) -> Vec { } } - let mut errors: Vec = file.errors() + let mut errors: Vec = file + .errors() .into_iter() .map(|err| Diagnostic { range: location_to_range(err.location()), msg: format!("Syntax Error: {}", err), - severity: Severity::Error, + severity: Some(Severity::Error), }) .collect(); @@ -127,7 +130,7 @@ fn check_unnecessary_braces_in_use_statement(file: &SourceFileNode) -> Vec Result> { .collect(); Ok(res) } + +fn to_diagnostic_severity(severity: Severity) -> DiagnosticSeverity { + use ra_analysis::Severity::*; + + match severity { + Error => DiagnosticSeverity::Error, + Warning => DiagnosticSeverity::Warning, + Information => DiagnosticSeverity::Information, + Hint => DiagnosticSeverity::Hint, + } +} -- cgit v1.2.3