diff --git a/pkg/linter/lib/src/rules/strict_top_level_inference.dart b/pkg/linter/lib/src/rules/strict_top_level_inference.dart index 5b707f22ff7..7dbfa06da17 100644 --- a/pkg/linter/lib/src/rules/strict_top_level_inference.dart +++ b/pkg/linter/lib/src/rules/strict_top_level_inference.dart @@ -41,6 +41,7 @@ class StrictTopLevelInference extends MultiAnalysisRule { registry.addConstructorDeclaration(this, visitor); registry.addFunctionDeclaration(this, visitor); registry.addMethodDeclaration(this, visitor); + registry.addPrimaryConstructorDeclaration(this, visitor); registry.addVariableDeclarationList(this, visitor); } } @@ -92,6 +93,11 @@ class _Visitor extends SimpleAstVisitor { } } + @override + void visitPrimaryConstructorDeclaration(PrimaryConstructorDeclaration node) { + _checkFormalParameters(node.formalParameters.parameters); + } + @override void visitVariableDeclarationList(VariableDeclarationList node) { if (node.type != null) return; diff --git a/pkg/linter/test/rules/strict_top_level_inference_test.dart b/pkg/linter/test/rules/strict_top_level_inference_test.dart index f9951f910c8..4bb50b22a60 100644 --- a/pkg/linter/test/rules/strict_top_level_inference_test.dart +++ b/pkg/linter/test/rules/strict_top_level_inference_test.dart @@ -690,6 +690,48 @@ void f() { '''); } + test_primaryConstructorParameter_named_declaring_final() async { + await assertDiagnosticsFromMarkdown(r''' +class C({final [!p1!]}); +'''); + } + + test_primaryConstructorParameter_named_declaring_typed() async { + await assertNoDiagnostics(r''' +class C({required int p1}); +'''); + } + + test_primaryConstructorParameter_named_declaring_var() async { + await assertDiagnosticsFromMarkdown(r''' +class C({var [!p1!]}); +'''); + } + + test_primaryConstructorParameter_positional() async { + await assertDiagnosticsFromMarkdown(r''' +class C([!p1!]); +'''); + } + + test_primaryConstructorParameter_positional_declaring_final() async { + await assertDiagnosticsFromMarkdown(r''' +class C(final [!p1!]); +'''); + } + + test_primaryConstructorParameter_positional_declaring_var() async { + await assertDiagnosticsFromMarkdown(r''' +class C(var [!p1!]); +'''); + } + + test_primaryConstructorParameter_positional_typed() async { + await assertNoDiagnostics(r''' +class C(int p1); +'''); + } + test_reflectiveTest_nonTest() async { await assertDiagnostics( r'''