-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
219 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
lib/lints/avoid_late_keyword/models/avoid_late_keyword_parameters.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/// A data model class that represents the "avoid late keyword" input | ||
/// parameters. | ||
class AvoidLateKeywordParameters { | ||
/// Allow immediately initialised late variables. | ||
/// | ||
/// ```dart | ||
/// late var ok = 0; // ok when allowInitialized == true | ||
/// late var notOk; // initialized elsewhere, not allowed | ||
/// ``` | ||
final bool allowInitialized; | ||
|
||
/// Types that would be ignored by avoid-late rule | ||
final Iterable<String> ignoredTypes; | ||
|
||
/// Constructor for [AvoidLateKeywordParameters] model | ||
const AvoidLateKeywordParameters({ | ||
this.allowInitialized = false, | ||
this.ignoredTypes = const [], | ||
}); | ||
|
||
/// Method for creating from json data | ||
factory AvoidLateKeywordParameters.fromJson(Map<String, Object?> json) => | ||
AvoidLateKeywordParameters( | ||
allowInitialized: json['allow_initialized'] as bool? ?? false, | ||
ignoredTypes: | ||
List<String>.from(json['ignored_types'] as Iterable? ?? []), | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
lint_test/avoid_late_keyword_allow_initialized_test/analysis_options.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
analyzer: | ||
plugins: | ||
- ../custom_lint | ||
|
||
custom_lint: | ||
rules: | ||
- avoid_late_keyword: | ||
allow_initialized: false | ||
ignored_types: | ||
- Animation |
76 changes: 76 additions & 0 deletions
76
.../avoid_late_keyword_allow_initialized_test/avoid_late_keyword_allow_initialized_test.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
// ignore_for_file: prefer_const_declarations, unused_local_variable, prefer_match_file_name | ||
// ignore_for_file: avoid_global_state | ||
|
||
abstract class Animation {} | ||
|
||
class AnimationController implements Animation {} | ||
|
||
class SubAnimationController extends AnimationController {} | ||
|
||
class ColorTween {} | ||
|
||
/// Check "late" keyword fail | ||
/// | ||
/// `avoid_late_keyword` | ||
/// allow_initialized option disabled | ||
class AvoidLateKeyword { | ||
late final Animation animation1; | ||
|
||
late final animation2 = AnimationController(); | ||
|
||
late final animation3 = SubAnimationController(); | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final ColorTween colorTween1; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final colorTween2 = ColorTween(); | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final colorTween3 = colorTween2; | ||
|
||
late final AnimationController controller1; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final field1 = 'string'; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final String field2; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final String field3 = 'string'; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final field4; | ||
|
||
void test() { | ||
late final Animation animation1; | ||
|
||
late final animation2 = AnimationController(); | ||
|
||
late final animation3 = SubAnimationController(); | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final ColorTween colorTween1; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final colorTween2 = ColorTween(); | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final colorTween3 = colorTween2; | ||
|
||
late final AnimationController controller1; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final local1 = 'string'; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final String local2; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final String local4 = 'string'; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final local3; | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
lint_test/avoid_late_keyword_allow_initialized_test/pubspec.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
name: avoid_late_keyword_allow_initialized_test | ||
publish_to: none | ||
|
||
environment: | ||
sdk: '>=3.0.0 <4.0.0' | ||
|
||
dependencies: | ||
|
||
dev_dependencies: | ||
solid_lints: | ||
path: ../../ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,64 @@ | ||
// ignore_for_file: prefer_const_declarations, unused_local_variable, prefer_match_file_name | ||
// ignore_for_file: avoid_global_state | ||
|
||
class ColorTween {} | ||
|
||
class AnimationController {} | ||
|
||
class SubAnimationController extends AnimationController {} | ||
|
||
class NotAllowed {} | ||
|
||
/// Check "late" keyword fail | ||
/// | ||
/// `avoid_late_keyword` | ||
/// allow_initialized option enabled | ||
class AvoidLateKeyword { | ||
/// expect_lint: avoid_late_keyword | ||
late final ColorTween colorTween; | ||
|
||
late final AnimationController controller1; | ||
|
||
late final SubAnimationController controller2; | ||
|
||
late final controller3 = AnimationController(); | ||
|
||
late final controller4 = SubAnimationController(); | ||
|
||
late final field1 = 'string'; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late String field2; | ||
late final String field2; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final field3; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final NotAllowed na1; | ||
|
||
late final na2 = NotAllowed(); | ||
|
||
void test() { | ||
late final ColorTween colorTween; | ||
|
||
late final AnimationController controller1; | ||
|
||
late final SubAnimationController controller2; | ||
|
||
late final controller3 = AnimationController(); | ||
|
||
late final controller4 = SubAnimationController(); | ||
|
||
late final local1 = 'string'; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final field3 = 'string'; | ||
late final String local2; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late String field4; | ||
late final local3; | ||
|
||
/// expect_lint: avoid_late_keyword | ||
late final NotAllowed na1; | ||
|
||
late final na2 = NotAllowed(); | ||
} | ||
} |