@@ -98,7 +98,7 @@ pub(crate) fn find_ignores(ctx: &mut Linter, file: &SyntaxNode) {
98
98
let end = start + TextSize :: new ( trimmed. len ( ) as u32 ) ;
99
99
let range = TextRange :: new ( start, end) ;
100
100
101
- ctx. report ( Violation :: new (
101
+ ctx. report ( Violation :: for_range (
102
102
Rule :: UnusedIgnore ,
103
103
format ! ( "unknown name {trimmed}" ) ,
104
104
range,
@@ -144,6 +144,37 @@ alter table t drop column c cascade;
144
144
assert ! ( ignore. violation_names. contains( & Rule :: BanDropColumn ) ) ;
145
145
}
146
146
147
+ #[ test]
148
+ fn multiple_sql_comments_with_ignore_is_ok ( ) {
149
+ let sql = "
150
+ -- fooo bar
151
+ -- buzz
152
+ -- squawk-ignore prefer-robust-stmts
153
+ create table x();
154
+
155
+ select 1;
156
+ " ;
157
+
158
+ let parse = squawk_syntax:: SourceFile :: parse ( sql) ;
159
+ let mut linter = Linter :: with_all_rules ( ) ;
160
+ find_ignores ( & mut linter, & parse. syntax_node ( ) ) ;
161
+
162
+ assert_eq ! ( linter. ignores. len( ) , 1 ) ;
163
+ let ignore = & linter. ignores [ 0 ] ;
164
+ assert ! (
165
+ ignore. violation_names. contains( & Rule :: PreferRobustStmts ) ,
166
+ "Make sure we picked up the ignore"
167
+ ) ;
168
+
169
+ let errors = linter. lint ( & parse, sql) ;
170
+
171
+ assert_eq ! (
172
+ errors,
173
+ vec![ ] ,
174
+ "We shouldn't have any errors because we have the ignore setup"
175
+ ) ;
176
+ }
177
+
147
178
#[ test]
148
179
fn single_ignore_c_style_comment ( ) {
149
180
let sql = r#"
@@ -217,7 +248,7 @@ create table users (
217
248
"# ;
218
249
219
250
let parse = squawk_syntax:: SourceFile :: parse ( sql) ;
220
- let errors = linter. lint ( parse, sql) ;
251
+ let errors = linter. lint ( & parse, sql) ;
221
252
assert_eq ! ( errors. len( ) , 0 ) ;
222
253
}
223
254
@@ -227,7 +258,7 @@ create table users (
227
258
let sql = r#"alter table t add column c char;"# ;
228
259
229
260
let parse = squawk_syntax:: SourceFile :: parse ( sql) ;
230
- let errors = linter. lint ( parse, sql) ;
261
+ let errors = linter. lint ( & parse, sql) ;
231
262
assert_eq ! ( errors. len( ) , 1 ) ;
232
263
}
233
264
@@ -244,7 +275,7 @@ create table test_table (
244
275
"# ;
245
276
246
277
let parse = squawk_syntax:: SourceFile :: parse ( sql) ;
247
- let errors = linter. lint ( parse, sql) ;
278
+ let errors = linter. lint ( & parse, sql) ;
248
279
assert_eq ! ( errors. len( ) , 0 ) ;
249
280
}
250
281
@@ -282,7 +313,7 @@ alter table t drop column c cascade;
282
313
assert ! ( ignore. violation_names. is_empty( ) ) ;
283
314
284
315
let errors: Vec < _ > = linter
285
- . lint ( parse, sql)
316
+ . lint ( & parse, sql)
286
317
. into_iter ( )
287
318
. map ( |x| x. code )
288
319
. collect ( ) ;
@@ -353,7 +384,7 @@ alter table t2 drop column c2 cascade;
353
384
354
385
let parse = squawk_syntax:: SourceFile :: parse ( sql) ;
355
386
let errors: Vec < _ > = linter
356
- . lint ( parse, sql)
387
+ . lint ( & parse, sql)
357
388
. into_iter ( )
358
389
. map ( |x| x. code )
359
390
. collect ( ) ;
@@ -377,7 +408,7 @@ alter table t2 drop column c2 cascade;
377
408
378
409
let parse = squawk_syntax:: SourceFile :: parse ( sql) ;
379
410
let errors: Vec < _ > = linter
380
- . lint ( parse, sql)
411
+ . lint ( & parse, sql)
381
412
. into_iter ( )
382
413
. map ( |x| x. code )
383
414
. collect ( ) ;
0 commit comments