@@ -31,6 +31,21 @@ pub struct Diagnostic {
31
31
pub range : TextRange ,
32
32
pub severity : Severity ,
33
33
pub fix : Option < Fix > ,
34
+ pub unused : bool ,
35
+ }
36
+
37
+ impl Diagnostic {
38
+ fn error ( range : TextRange , message : String ) -> Self {
39
+ Self { message, range, severity : Severity :: Error , fix : None , unused : false }
40
+ }
41
+
42
+ fn hint ( range : TextRange , message : String ) -> Self {
43
+ Self { message, range, severity : Severity :: WeakWarning , fix : None , unused : false }
44
+ }
45
+
46
+ fn with_fix ( self , fix : Option < Fix > ) -> Self {
47
+ Self { fix, ..self }
48
+ }
34
49
}
35
50
36
51
#[ derive( Debug ) ]
@@ -71,13 +86,13 @@ pub(crate) fn diagnostics(
71
86
let mut res = Vec :: new ( ) ;
72
87
73
88
// [#34344] Only take first 128 errors to prevent slowing down editor/ide, the number 128 is chosen arbitrarily.
74
- res. extend ( parse . errors ( ) . iter ( ) . take ( 128 ) . map ( |err| Diagnostic {
75
- // name: None,
76
- range : err . range ( ) ,
77
- message : format ! ( "Syntax Error: {}" , err ) ,
78
- severity : Severity :: Error ,
79
- fix : None ,
80
- } ) ) ;
89
+ res. extend (
90
+ parse
91
+ . errors ( )
92
+ . iter ( )
93
+ . take ( 128 )
94
+ . map ( |err| Diagnostic :: error ( err . range ( ) , format ! ( "Syntax Error: {}" , err ) ) ) ,
95
+ ) ;
81
96
82
97
for node in parse. tree ( ) . syntax ( ) . descendants ( ) {
83
98
check_unnecessary_braces_in_use_statement ( & mut res, file_id, & node) ;
@@ -108,13 +123,8 @@ pub(crate) fn diagnostics(
108
123
let mut sink = sink_builder
109
124
// Diagnostics not handled above get no fix and default treatment.
110
125
. build ( |d| {
111
- res. borrow_mut ( ) . push ( Diagnostic {
112
- // name: Some(d.name().into()),
113
- message : d. message ( ) ,
114
- range : sema. diagnostics_display_range ( d) . range ,
115
- severity : Severity :: Error ,
116
- fix : None ,
117
- } )
126
+ res. borrow_mut ( )
127
+ . push ( Diagnostic :: error ( sema. diagnostics_display_range ( d) . range , d. message ( ) ) ) ;
118
128
} ) ;
119
129
120
130
if let Some ( m) = sema. to_module_def ( file_id) {
@@ -125,22 +135,11 @@ pub(crate) fn diagnostics(
125
135
}
126
136
127
137
fn diagnostic_with_fix < D : DiagnosticWithFix > ( d : & D , sema : & Semantics < RootDatabase > ) -> Diagnostic {
128
- Diagnostic {
129
- // name: Some(d.name().into()),
130
- range : sema. diagnostics_display_range ( d) . range ,
131
- message : d. message ( ) ,
132
- severity : Severity :: Error ,
133
- fix : d. fix ( & sema) ,
134
- }
138
+ Diagnostic :: error ( sema. diagnostics_display_range ( d) . range , d. message ( ) ) . with_fix ( d. fix ( & sema) )
135
139
}
136
140
137
141
fn warning_with_fix < D : DiagnosticWithFix > ( d : & D , sema : & Semantics < RootDatabase > ) -> Diagnostic {
138
- Diagnostic {
139
- range : sema. diagnostics_display_range ( d) . range ,
140
- message : d. message ( ) ,
141
- severity : Severity :: WeakWarning ,
142
- fix : d. fix ( & sema) ,
143
- }
142
+ Diagnostic :: hint ( sema. diagnostics_display_range ( d) . range , d. message ( ) ) . with_fix ( d. fix ( & sema) )
144
143
}
145
144
146
145
fn check_unnecessary_braces_in_use_statement (
@@ -161,17 +160,14 @@ fn check_unnecessary_braces_in_use_statement(
161
160
edit_builder. finish ( )
162
161
} ) ;
163
162
164
- acc. push ( Diagnostic {
165
- // name: None,
166
- range : use_range,
167
- message : "Unnecessary braces in use statement" . to_string ( ) ,
168
- severity : Severity :: WeakWarning ,
169
- fix : Some ( Fix :: new (
170
- "Remove unnecessary braces" ,
171
- SourceFileEdit { file_id, edit } . into ( ) ,
172
- use_range,
173
- ) ) ,
174
- } ) ;
163
+ acc. push (
164
+ Diagnostic :: hint ( use_range, "Unnecessary braces in use statement" . to_string ( ) )
165
+ . with_fix ( Some ( Fix :: new (
166
+ "Remove unnecessary braces" ,
167
+ SourceFileEdit { file_id, edit } . into ( ) ,
168
+ use_range,
169
+ ) ) ) ,
170
+ ) ;
175
171
}
176
172
177
173
Some ( ( ) )
@@ -578,6 +574,7 @@ fn test_fn() {
578
574
fix_trigger_range: 0..8,
579
575
},
580
576
),
577
+ unused: false,
581
578
},
582
579
]
583
580
"# ] ] ,
0 commit comments