Skip to content

Commit 7291242

Browse files
refactor: replace use of Diagnostic.data with expando
1 parent 0369853 commit 7291242

File tree

4 files changed

+38
-26
lines changed

4 files changed

+38
-26
lines changed

lib/src/lints/avoid_final_with_getter/avoid_final_with_getter_rule.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ class AvoidFinalWithGetterRule extends SolidLintRule {
3939
/// the error whether we use final private fields with getters.
4040
static const lintName = 'avoid_final_with_getter';
4141

42+
final _diagnosticsInfoExpando = Expando<FinalWithGetterInfo>();
43+
4244
AvoidFinalWithGetterRule._(super.config);
4345

4446
/// Creates a new instance of [AvoidFinalWithGetterRule]
@@ -64,15 +66,13 @@ class AvoidFinalWithGetterRule extends SolidLintRule {
6466
node.accept(visitor);
6567

6668
for (final element in visitor.getters) {
67-
reporter.atNode(
68-
element.getter,
69-
code,
70-
data: element,
71-
);
69+
final diagnostic = reporter.atNode(element.getter, code);
70+
71+
_diagnosticsInfoExpando[diagnostic] = element;
7272
}
7373
});
7474
}
7575

7676
@override
77-
List<Fix> getFixes() => [_FinalWithGetterFix()];
77+
List<Fix> getFixes() => [_FinalWithGetterFix(_diagnosticsInfoExpando)];
7878
}

lib/src/lints/avoid_final_with_getter/fixes/avoid_final_with_getter_fix.dart

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
part of '../avoid_final_with_getter_rule.dart';
22

33
class _FinalWithGetterFix extends DartFix {
4+
final Expando<FinalWithGetterInfo> _diagnosticsInfoExpando;
5+
6+
_FinalWithGetterFix(this._diagnosticsInfoExpando);
7+
48
@override
59
void run(
610
CustomLintResolver resolver,
711
ChangeReporter reporter,
812
CustomLintContext context,
9-
Diagnostic analysisError,
13+
Diagnostic diagnostic,
1014
List<Diagnostic> others,
1115
) {
1216
context.registry.addMethodDeclaration((node) {
13-
if (analysisError.sourceRange.intersects(node.sourceRange)) {
14-
final info = analysisError.data as FinalWithGetterInfo?;
15-
if (info == null) return;
17+
if (!diagnostic.sourceRange.intersects(node.sourceRange)) return;
18+
19+
final info = _diagnosticsInfoExpando[diagnostic];
20+
if (info == null) return;
1621

17-
_addReplacement(reporter, info);
18-
}
22+
_addReplacement(reporter, info);
1923
});
2024
}
2125

lib/src/lints/prefer_conditional_expressions/fixes/prefer_conditional_expressions_fix.dart

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,30 @@ import 'package:solid_lints/src/lints/prefer_conditional_expressions/visitors/pr
88
/// A Quick fix for `prefer_conditional_expressions` rule
99
/// Suggests to remove unnecessary assertions
1010
class PreferConditionalExpressionsFix extends DartFix {
11+
final Expando<StatementInfo> _diagnosticsInfoExpando;
12+
13+
/// A Quick fix for `prefer_conditional_expressions` rule
14+
/// Suggests to remove unnecessary assertions
15+
PreferConditionalExpressionsFix(this._diagnosticsInfoExpando);
16+
1117
@override
1218
void run(
1319
CustomLintResolver resolver,
1420
ChangeReporter reporter,
1521
CustomLintContext context,
16-
Diagnostic analysisError,
22+
Diagnostic diagnostic,
1723
List<Diagnostic> others,
1824
) {
1925
context.registry.addIfStatement((node) {
20-
if (analysisError.sourceRange.intersects(node.sourceRange)) {
21-
final statementInfo = analysisError.data as StatementInfo?;
22-
if (statementInfo == null) return;
26+
if (!diagnostic.sourceRange.intersects(node.sourceRange)) return;
2327

24-
final correction = _createCorrection(statementInfo);
25-
if (correction == null) return;
28+
final statementInfo = _diagnosticsInfoExpando[diagnostic];
29+
if (statementInfo == null) return;
2630

27-
_addReplacement(reporter, statementInfo.statement, correction);
28-
}
31+
final correction = _createCorrection(statementInfo);
32+
if (correction == null) return;
33+
34+
_addReplacement(reporter, statementInfo.statement, correction);
2935
});
3036
}
3137

lib/src/lints/prefer_conditional_expressions/prefer_conditional_expressions_rule.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ class PreferConditionalExpressionsRule
6161
/// parameters reaches the maximum value.
6262
static const lintName = 'prefer_conditional_expressions';
6363

64+
final _diagnosticsInfoExpando = Expando<StatementInfo>();
65+
6466
PreferConditionalExpressionsRule._(super.config);
6567

6668
/// Creates a new instance of [PreferConditionalExpressionsRule]
@@ -91,15 +93,15 @@ class PreferConditionalExpressionsRule
9193
node.accept(visitor);
9294

9395
for (final element in visitor.statementsInfo) {
94-
reporter.atNode(
95-
element.statement,
96-
code,
97-
data: element,
98-
);
96+
final diagnostic = reporter.atNode(element.statement, code);
97+
98+
_diagnosticsInfoExpando[diagnostic] = element;
9999
}
100100
});
101101
}
102102

103103
@override
104-
List<Fix> getFixes() => [PreferConditionalExpressionsFix()];
104+
List<Fix> getFixes() => [
105+
PreferConditionalExpressionsFix(_diagnosticsInfoExpando),
106+
];
105107
}

0 commit comments

Comments
 (0)