From 28726f13b0413b42a7ad89090da0f818100d078b Mon Sep 17 00:00:00 2001 From: Phil Quitslund Date: Mon, 14 Aug 2023 12:34:17 -0700 Subject: [PATCH] extension type support for `non_constant_identifier_names` (#4696) --- lib/src/rules/non_constant_identifier_names.dart | 6 ++++++ test/rules/non_constant_identifier_names_test.dart | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/lib/src/rules/non_constant_identifier_names.dart b/lib/src/rules/non_constant_identifier_names.dart index 754ccf200..d49173db4 100644 --- a/lib/src/rules/non_constant_identifier_names.dart +++ b/lib/src/rules/non_constant_identifier_names.dart @@ -56,6 +56,7 @@ class NonConstantIdentifierNames extends LintRule { registry.addCatchClause(this, visitor); registry.addConstructorDeclaration(this, visitor); registry.addDeclaredVariablePattern(this, visitor); + registry.addExtensionTypeDeclaration(this, visitor); registry.addForEachPartsWithDeclaration(this, visitor); registry.addFormalParameterList(this, visitor); registry.addFunctionDeclaration(this, visitor); @@ -105,6 +106,11 @@ class _Visitor extends SimpleAstVisitor { checkIdentifier(node.name); } + @override + void visitExtensionTypeDeclaration(ExtensionTypeDeclaration node) { + checkIdentifier(node.representation.constructorName?.name); + } + @override void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) { checkIdentifier(node.loopVariable.name); diff --git a/test/rules/non_constant_identifier_names_test.dart b/test/rules/non_constant_identifier_names_test.dart index 32f0e15d6..bf40eaebc 100644 --- a/test/rules/non_constant_identifier_names_test.dart +++ b/test/rules/non_constant_identifier_names_test.dart @@ -16,9 +16,20 @@ main() { @reflectiveTest class NonConstantIdentifierNamesPatternsTest extends LintRuleTest { + @override + List get experiments => ['inline-class']; + @override String get lintRule => 'non_constant_identifier_names'; + test_extensionType_representationConstructorName() async { + await assertDiagnostics(r''' +extension type e.Efg(int i) {} +''', [ + lint(17, 3), + ]); + } + test_patternForStatement() async { await assertDiagnostics(r''' void f() {