From b70c0f617d02007683d1fb2361b6c169523beecd Mon Sep 17 00:00:00 2001 From: Michael Lamers Date: Tue, 28 Oct 2025 07:41:09 +0100 Subject: [PATCH] fix: don't collect constructors of private classes --- .../api_relevant_elements_collector.dart | 4 ++++ test/integration_tests/diff/native_test.dart | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/lib/src/analyze/api_relevant_elements_collector.dart b/lib/src/analyze/api_relevant_elements_collector.dart index 2221e15..aeea06f 100644 --- a/lib/src/analyze/api_relevant_elements_collector.dart +++ b/lib/src/analyze/api_relevant_elements_collector.dart @@ -204,6 +204,10 @@ class APIRelevantElementsCollector extends RecursiveElementVisitor2 { if (element.enclosingElement2 is EnumElement2) { return false; } + // constructors of private classes aren't collected + if (element.enclosingElement2.isPrivate) { + return false; + } } // don't collect any override -> already part of the source if (element is Annotatable && diff --git a/test/integration_tests/diff/native_test.dart b/test/integration_tests/diff/native_test.dart index aafa099..ec01a04 100644 --- a/test/integration_tests/diff/native_test.dart +++ b/test/integration_tests/diff/native_test.dart @@ -40,5 +40,26 @@ void main() { expect(breakingChanges, []); }); }); + + group('objective_c', () { + late final PackageApi objcApi; + final refObjc = '0924cb0e80ed6ac39298363fabe0916808a4a1fe'; + + setUp(() async { + final objcRetriever = GitPackageApiRetriever( + gitUrl, + refObjc, + relativePackagePath: 'pkgs/objective_c', + ); + objcApi = await objcRetriever.retrieve(); + }); + + test('_FinalizablePointer should not be leaked in the public API', + () async { + final hasFinalizablePointer = objcApi.interfaceDeclarations + .any((id) => id.name == '_FinalizablePointer'); + expect(hasFinalizablePointer, isFalse); + }); + }); }); }