diff options
Diffstat (limited to 'crates/ide/src/diagnostics.rs')
-rw-r--r-- | crates/ide/src/diagnostics.rs | 61 |
1 files changed, 21 insertions, 40 deletions
diff --git a/crates/ide/src/diagnostics.rs b/crates/ide/src/diagnostics.rs index c024e3e1e..253c360bb 100644 --- a/crates/ide/src/diagnostics.rs +++ b/crates/ide/src/diagnostics.rs | |||
@@ -86,36 +86,14 @@ impl Diagnostic { | |||
86 | self | 86 | self |
87 | } | 87 | } |
88 | 88 | ||
89 | fn error(range: TextRange, message: String) -> Self { | 89 | fn with_fixes(mut self, fixes: Option<Vec<Assist>>) -> Diagnostic { |
90 | Self { | 90 | self.fixes = fixes; |
91 | message, | 91 | self |
92 | range, | ||
93 | severity: Severity::Error, | ||
94 | fixes: None, | ||
95 | unused: false, | ||
96 | code: None, | ||
97 | experimental: false, | ||
98 | } | ||
99 | } | ||
100 | |||
101 | fn hint(range: TextRange, message: String) -> Self { | ||
102 | Self { | ||
103 | message, | ||
104 | range, | ||
105 | severity: Severity::WeakWarning, | ||
106 | fixes: None, | ||
107 | unused: false, | ||
108 | code: None, | ||
109 | experimental: false, | ||
110 | } | ||
111 | } | ||
112 | |||
113 | fn with_fixes(self, fixes: Option<Vec<Assist>>) -> Self { | ||
114 | Self { fixes, ..self } | ||
115 | } | 92 | } |
116 | 93 | ||
117 | fn with_unused(self, unused: bool) -> Self { | 94 | fn with_unused(mut self, unused: bool) -> Diagnostic { |
118 | Self { unused, ..self } | 95 | self.unused = unused; |
96 | self | ||
119 | } | 97 | } |
120 | } | 98 | } |
121 | 99 | ||
@@ -150,11 +128,9 @@ pub(crate) fn diagnostics( | |||
150 | 128 | ||
151 | // [#34344] Only take first 128 errors to prevent slowing down editor/ide, the number 128 is chosen arbitrarily. | 129 | // [#34344] Only take first 128 errors to prevent slowing down editor/ide, the number 128 is chosen arbitrarily. |
152 | res.extend( | 130 | res.extend( |
153 | parse | 131 | parse.errors().iter().take(128).map(|err| { |
154 | .errors() | 132 | Diagnostic::new("syntax-error", format!("Syntax Error: {}", err), err.range()) |
155 | .iter() | 133 | }), |
156 | .take(128) | ||
157 | .map(|err| Diagnostic::error(err.range(), format!("Syntax Error: {}", err))), | ||
158 | ); | 134 | ); |
159 | 135 | ||
160 | for node in parse.tree().syntax().descendants() { | 136 | for node in parse.tree().syntax().descendants() { |
@@ -244,13 +220,18 @@ fn check_unnecessary_braces_in_use_statement( | |||
244 | }); | 220 | }); |
245 | 221 | ||
246 | acc.push( | 222 | acc.push( |
247 | Diagnostic::hint(use_range, "Unnecessary braces in use statement".to_string()) | 223 | Diagnostic::new( |
248 | .with_fixes(Some(vec![fix( | 224 | "unnecessary-braces", |
249 | "remove_braces", | 225 | "Unnecessary braces in use statement".to_string(), |
250 | "Remove unnecessary braces", | 226 | use_range, |
251 | SourceChange::from_text_edit(file_id, edit), | 227 | ) |
252 | use_range, | 228 | .severity(Severity::WeakWarning) |
253 | )])), | 229 | .with_fixes(Some(vec![fix( |
230 | "remove_braces", | ||
231 | "Remove unnecessary braces", | ||
232 | SourceChange::from_text_edit(file_id, edit), | ||
233 | use_range, | ||
234 | )])), | ||
254 | ); | 235 | ); |
255 | } | 236 | } |
256 | 237 | ||