Skip to content

Commit 6818c45

Browse files
authored
fix(bloc_lint): ignore whitespace in ignore comments (#4648)
1 parent 9b4c674 commit 6818c45

File tree

2 files changed

+98
-3
lines changed

2 files changed

+98
-3
lines changed

packages/bloc_lint/lib/src/text_document.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ class TextDocument {
1919
_content = content;
2020

2121
static final _ignoreForFileRegExp = RegExp(
22-
r'^//\s*ignore_for_file:(.*?)$',
22+
r'^\s*//\s*ignore_for_file:(.*?)$',
2323
dotAll: true,
2424
multiLine: true,
2525
);
2626

27-
static final _ignoreForLineRegExp = RegExp(r'^//\s*ignore:(.*)$');
27+
static final _ignoreForLineRegExp = RegExp(r'^\s*//\s*ignore:(.*)$');
28+
29+
static final _ignoreAfterLineRegExp = RegExp(r'\s*//\s*ignore:(.*)$');
2830

2931
final Uri _uri;
3032
final String _content;
@@ -62,7 +64,7 @@ class TextDocument {
6264
end: Position(character: _content.length, line: range.end.line),
6365
),
6466
);
65-
final index = afterText.indexOf('// ignore:');
67+
final index = afterText.indexOf(_ignoreAfterLineRegExp);
6668
if (index == -1) return const <String>{};
6769
final line = afterText.substring(index);
6870
return _lineIgnores(line);

packages/bloc_lint/test/src/linter_test.dart

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,54 @@ bloc:
127127
import 'package:bloc/bloc.dart';
128128
import 'package:flutter/material.dart';
129129
130+
enum CounterEvent { increment, decrement }
131+
class CounterBloc extends Bloc<CounterEvent, int> {
132+
CounterBloc() : super(0);
133+
}
134+
''',
135+
);
136+
137+
lintTest(
138+
'does not report when rule is ignored for file (w/leading space)',
139+
rule: AvoidFlutterImports.new,
140+
path: 'counter_bloc.dart',
141+
content: '''
142+
// ignore_for_file: ${AvoidFlutterImports.rule}
143+
import 'package:bloc/bloc.dart';
144+
import 'package:flutter/material.dart';
145+
146+
enum CounterEvent { increment, decrement }
147+
class CounterBloc extends Bloc<CounterEvent, int> {
148+
CounterBloc() : super(0);
149+
}
150+
''',
151+
);
152+
153+
lintTest(
154+
'does not report when rule is ignored for file (w/in-between space)',
155+
rule: AvoidFlutterImports.new,
156+
path: 'counter_bloc.dart',
157+
content: '''
158+
// ignore_for_file: ${AvoidFlutterImports.rule}
159+
import 'package:bloc/bloc.dart';
160+
import 'package:flutter/material.dart';
161+
162+
enum CounterEvent { increment, decrement }
163+
class CounterBloc extends Bloc<CounterEvent, int> {
164+
CounterBloc() : super(0);
165+
}
166+
''',
167+
);
168+
169+
lintTest(
170+
'does not report when rule is ignored for file (w/trailing space)',
171+
rule: AvoidFlutterImports.new,
172+
path: 'counter_bloc.dart',
173+
content: '''
174+
// ignore_for_file: ${AvoidFlutterImports.rule}
175+
import 'package:bloc/bloc.dart';
176+
import 'package:flutter/material.dart';
177+
130178
enum CounterEvent { increment, decrement }
131179
class CounterBloc extends Bloc<CounterEvent, int> {
132180
CounterBloc() : super(0);
@@ -208,6 +256,51 @@ class CounterBloc extends Bloc<CounterEvent, int> {
208256
import 'package:bloc/bloc.dart';
209257
import 'package:flutter/material.dart'; // ignore: ${AvoidFlutterImports.rule}
210258
259+
enum CounterEvent { increment, decrement }
260+
class CounterBloc extends Bloc<CounterEvent, int> {
261+
CounterBloc() : super(0);
262+
}
263+
''',
264+
);
265+
266+
lintTest(
267+
'does not report when rule is ignored for line (after w/leading space)',
268+
rule: AvoidFlutterImports.new,
269+
path: 'counter_bloc.dart',
270+
content: '''
271+
import 'package:bloc/bloc.dart';
272+
import 'package:flutter/material.dart'; // ignore: ${AvoidFlutterImports.rule}
273+
274+
enum CounterEvent { increment, decrement }
275+
class CounterBloc extends Bloc<CounterEvent, int> {
276+
CounterBloc() : super(0);
277+
}
278+
''',
279+
);
280+
281+
lintTest(
282+
'does not report when rule is ignored for line (after w/in-between space)',
283+
rule: AvoidFlutterImports.new,
284+
path: 'counter_bloc.dart',
285+
content: '''
286+
import 'package:bloc/bloc.dart';
287+
import 'package:flutter/material.dart'; // ignore: ${AvoidFlutterImports.rule}
288+
289+
enum CounterEvent { increment, decrement }
290+
class CounterBloc extends Bloc<CounterEvent, int> {
291+
CounterBloc() : super(0);
292+
}
293+
''',
294+
);
295+
296+
lintTest(
297+
'does not report when rule is ignored for line (after w/trailing space)',
298+
rule: AvoidFlutterImports.new,
299+
path: 'counter_bloc.dart',
300+
content: '''
301+
import 'package:bloc/bloc.dart';
302+
import 'package:flutter/material.dart'; // ignore: ${AvoidFlutterImports.rule}
303+
211304
enum CounterEvent { increment, decrement }
212305
class CounterBloc extends Bloc<CounterEvent, int> {
213306
CounterBloc() : super(0);

0 commit comments

Comments
 (0)