From 2fe321a4d6b4a35abdac853fdba43234c635ab97 Mon Sep 17 00:00:00 2001 From: pq Date: Wed, 5 Jul 2023 09:50:26 -0700 Subject: [PATCH] fix `library_private_types_in_public_api` overreporting on enum cons params --- .../rules/library_private_types_in_public_api.dart | 3 +++ .../library_private_types_in_public_api_test.dart | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/src/rules/library_private_types_in_public_api.dart b/lib/src/rules/library_private_types_in_public_api.dart index 114a3d404..93fc8d054 100644 --- a/lib/src/rules/library_private_types_in_public_api.dart +++ b/lib/src/rules/library_private_types_in_public_api.dart @@ -94,6 +94,9 @@ class Validator extends SimpleAstVisitor { if (name != null && Identifier.isPrivateName(name.lexeme)) { return; } + // Enum constructors are effectively private so don't visit their params. + if (node.parent is EnumDeclaration) return; + node.parameters.accept(this); } diff --git a/test/rules/library_private_types_in_public_api_test.dart b/test/rules/library_private_types_in_public_api_test.dart index beb6105b6..50de30369 100644 --- a/test/rules/library_private_types_in_public_api_test.dart +++ b/test/rules/library_private_types_in_public_api_test.dart @@ -33,6 +33,19 @@ enum E { lint(75, 2), ]); } + + /// https://github.com/dart-lang/linter/issues/4470 + test_enum_constructorParams() async { + await assertNoDiagnostics(r''' +class _O { + const _O(); +} +enum E { + a(_O()); + const E(_O o); +} +'''); + } } @reflectiveTest