Stop reporting unnecessary_const_in_enum_constructor for constructors outside an enum

Closes https://github.com/dart-lang/sdk/issues/63338

Change-Id: I7b613e22df0eb563076d85ac7f46a7c22a4cb2d0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/501561
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Brian Wilkerson
2026-05-07 12:53:18 -07:00
committed by dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent c47b30ee9a
commit 687a5cb840
2 changed files with 18 additions and 2 deletions
@@ -48,6 +48,7 @@ class _Visitor extends SimpleAstVisitor<void> {
@override
void visitConstructorDeclaration(ConstructorDeclaration node) {
if (node.parent is! BlockEnumBody) return;
var constKeyword = node.constKeyword;
if (constKeyword != null) {
rule.reportAtToken(constKeyword);
@@ -56,6 +57,7 @@ class _Visitor extends SimpleAstVisitor<void> {
@override
void visitPrimaryConstructorDeclaration(PrimaryConstructorDeclaration node) {
if (node.parent is! EnumDeclaration) return;
var constKeyword = node.constKeyword;
if (constKeyword != null) {
rule.reportAtToken(constKeyword);
@@ -17,7 +17,13 @@ class UnnecessaryConstInEnumConstructorTest extends LintRuleTest {
@override
String get lintRule => LintNames.unnecessary_const_in_enum_constructor;
test_primary() async {
test_primary_inClass() async {
await assertNoDiagnostics(r'''
class const C();
''');
}
test_primary_inEnum() async {
await assertDiagnosticsFromMarkdown(r'''
enum [!const!] E(final int i) {
a(1), b(2);
@@ -25,7 +31,15 @@ enum [!const!] E(final int i) {
''');
}
test_secondary() async {
test_secondary_inClass() async {
await assertNoDiagnostics(r'''
class C {
const C();
}
''');
}
test_secondary_inEnum() async {
await assertDiagnosticsFromMarkdown(r'''
enum E {
a(1), b(2);