From b22a6cda1210f6df704521ddfc244bbc7d12f066 Mon Sep 17 00:00:00 2001 From: pq Date: Mon, 9 Jan 2023 14:45:28 -0800 Subject: [PATCH] check declared var patterns in `constant_identifier_names` --- lib/src/rules/constant_identifier_names.dart | 6 +++ .../rules/constant_identifier_names_test.dart | 38 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/lib/src/rules/constant_identifier_names.dart b/lib/src/rules/constant_identifier_names.dart index 6dc75704c..b257ca5dd 100644 --- a/lib/src/rules/constant_identifier_names.dart +++ b/lib/src/rules/constant_identifier_names.dart @@ -63,6 +63,7 @@ class ConstantIdentifierNames extends LintRule { void registerNodeProcessors( NodeLintRegistry registry, LinterContext context) { var visitor = _Visitor(this); + registry.addDeclaredVariablePattern(this, visitor); registry.addEnumConstantDeclaration(this, visitor); registry.addTopLevelVariableDeclaration(this, visitor); registry.addVariableDeclarationList(this, visitor); @@ -81,6 +82,11 @@ class _Visitor extends SimpleAstVisitor { } } + @override + void visitDeclaredVariablePattern(DeclaredVariablePattern node) { + checkIdentifier(node.name); + } + @override void visitEnumConstantDeclaration(EnumConstantDeclaration node) { checkIdentifier(node.name); diff --git a/test/rules/constant_identifier_names_test.dart b/test/rules/constant_identifier_names_test.dart index 4d81edbe5..378c0941d 100644 --- a/test/rules/constant_identifier_names_test.dart +++ b/test/rules/constant_identifier_names_test.dart @@ -9,9 +9,47 @@ import '../rule_test_support.dart'; main() { defineReflectiveSuite(() { defineReflectiveTests(ConstantIdentifierNamesRecordsTest); + defineReflectiveTests(ConstantIdentifierNamesPatternsTest); }); } +@reflectiveTest +class ConstantIdentifierNamesPatternsTest extends LintRuleTest { + @override + List get experiments => ['patterns', 'records']; + + @override + String get lintRule => 'constant_identifier_names'; + + test_destructuredConstField() async { + await assertDiagnostics(r''' +class A { + static const AA = (1, ); +} +''', [ + lint(25, 2), + ]); + } + + test_destructuredConstVariable() async { + await assertDiagnostics(r''' +const AA = (1, ); +''', [ + lint(6, 2), + ]); + } + + test_destructuredFinalVariable() async { + await assertDiagnostics(r''' +void f() { + final (AA, ) = (1, ); +} +''', [ + lint(20, 2), + ]); + } +} + @reflectiveTest class ConstantIdentifierNamesRecordsTest extends LintRuleTest { @override