From 5e208bb93cd7d67d06588dd1ccc7c1c46f2f58ca Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Thu, 20 Nov 2025 14:41:56 -0500 Subject: [PATCH 1/3] more specific type parameter --- packages/pigeon/CHANGELOG.md | 4 +++ packages/pigeon/lib/src/generator_tools.dart | 2 +- packages/pigeon/lib/src/kotlin/templates.dart | 2 +- .../example/test_plugin/ProxyApiTests.gen.kt | 2 +- packages/pigeon/pubspec.yaml | 2 +- .../pigeon/test/kotlin/proxy_api_test.dart | 33 +++++++++++++++++++ 6 files changed, 41 insertions(+), 4 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 8eea8378b28..58298ddda5b 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,5 +1,9 @@ ## 26.1.1 +* [kotlin] Fixes compilation error with unbounded type parameter for InstanceManager. + +## 26.1.1 + * Updates supported `analyzer` versions to 8.x or 9.x. * Updates minimum supported SDK version to Flutter 3.32/Dart 3.8. diff --git a/packages/pigeon/lib/src/generator_tools.dart b/packages/pigeon/lib/src/generator_tools.dart index e75bdfcd1ae..2b687eb632d 100644 --- a/packages/pigeon/lib/src/generator_tools.dart +++ b/packages/pigeon/lib/src/generator_tools.dart @@ -15,7 +15,7 @@ import 'generator.dart'; /// The current version of pigeon. /// /// This must match the version in pubspec.yaml. -const String pigeonVersion = '26.1.1'; +const String pigeonVersion = '26.1.2'; /// Read all the content from [stdin] to a String. String readStdin() { diff --git a/packages/pigeon/lib/src/kotlin/templates.dart b/packages/pigeon/lib/src/kotlin/templates.dart index 731ec59d0af..f8afe99fe98 100644 --- a/packages/pigeon/lib/src/kotlin/templates.dart +++ b/packages/pigeon/lib/src/kotlin/templates.dart @@ -180,7 +180,7 @@ class ${kotlinInstanceManagerClassName(options)}(private val finalizationListene } /** Retrieves the instance associated with identifier, if present, otherwise `null`. */ - fun getInstance(identifier: Long): T? { + fun getInstance(identifier: Long): T? { logWarningIfFinalizationListenerHasStopped() val instance = weakInstances[identifier] as IdentityWeakReference? return instance?.get() diff --git a/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/ProxyApiTests.gen.kt b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/ProxyApiTests.gen.kt index 71208c7d808..97eb95d69d8 100644 --- a/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/ProxyApiTests.gen.kt +++ b/packages/pigeon/platform_tests/test_plugin/android/src/main/kotlin/com/example/test_plugin/ProxyApiTests.gen.kt @@ -214,7 +214,7 @@ class ProxyApiTestsPigeonInstanceManager( } /** Retrieves the instance associated with identifier, if present, otherwise `null`. */ - fun getInstance(identifier: Long): T? { + fun getInstance(identifier: Long): T? { logWarningIfFinalizationListenerHasStopped() val instance = weakInstances[identifier] as IdentityWeakReference? return instance?.get() diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index 44fa849c60c..6298399391e 100644 --- a/packages/pigeon/pubspec.yaml +++ b/packages/pigeon/pubspec.yaml @@ -2,7 +2,7 @@ name: pigeon description: Code generator tool to make communication between Flutter and the host platform type-safe and easier. repository: https://github.com/flutter/packages/tree/main/packages/pigeon issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+pigeon%22 -version: 26.1.1 # This must match the version in lib/src/generator_tools.dart +version: 26.1.2 # This must match the version in lib/src/generator_tools.dart environment: sdk: ^3.8.0 diff --git a/packages/pigeon/test/kotlin/proxy_api_test.dart b/packages/pigeon/test/kotlin/proxy_api_test.dart index a108a1ade47..9ee337bf766 100644 --- a/packages/pigeon/test/kotlin/proxy_api_test.dart +++ b/packages/pigeon/test/kotlin/proxy_api_test.dart @@ -1070,6 +1070,39 @@ void main() { ); }, ); + + test( + 'InstanceManager.getInstance specifies nonnull type', + () { + final Root root = Root( + apis: [ + AstProxyApi( + name: 'Api', + constructors: [], + fields: [], + methods: [], + ), + ], + classes: [], + enums: [], + ); + final StringBuffer sink = StringBuffer(); + const KotlinGenerator generator = KotlinGenerator(); + generator.generate( + const InternalKotlinOptions(kotlinOut: ''), + root, + sink, + dartPackageName: DEFAULT_PACKAGE_NAME, + ); + final String code = sink.toString(); + final String collapsedCode = _collapseNewlineAndIndentation(code); + + expect( + collapsedCode, + contains('fun getInstance(identifier: Long): T?'), + ); + }, + ); }); }); } From 62796d504dba74e4cadafe2977f0b63e950d757e Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Thu, 20 Nov 2025 14:46:14 -0500 Subject: [PATCH 2/3] proper changelog --- packages/pigeon/CHANGELOG.md | 2 +- .../pigeon/test/kotlin/proxy_api_test.dart | 59 +++++++++---------- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 58298ddda5b..b06060a495e 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,4 +1,4 @@ -## 26.1.1 +## 26.1.2 * [kotlin] Fixes compilation error with unbounded type parameter for InstanceManager. diff --git a/packages/pigeon/test/kotlin/proxy_api_test.dart b/packages/pigeon/test/kotlin/proxy_api_test.dart index 9ee337bf766..97b1d42c1d9 100644 --- a/packages/pigeon/test/kotlin/proxy_api_test.dart +++ b/packages/pigeon/test/kotlin/proxy_api_test.dart @@ -1071,38 +1071,35 @@ void main() { }, ); - test( - 'InstanceManager.getInstance specifies nonnull type', - () { - final Root root = Root( - apis: [ - AstProxyApi( - name: 'Api', - constructors: [], - fields: [], - methods: [], - ), - ], - classes: [], - enums: [], - ); - final StringBuffer sink = StringBuffer(); - const KotlinGenerator generator = KotlinGenerator(); - generator.generate( - const InternalKotlinOptions(kotlinOut: ''), - root, - sink, - dartPackageName: DEFAULT_PACKAGE_NAME, - ); - final String code = sink.toString(); - final String collapsedCode = _collapseNewlineAndIndentation(code); + test('InstanceManager.getInstance specifies nonnull type', () { + final Root root = Root( + apis: [ + AstProxyApi( + name: 'Api', + constructors: [], + fields: [], + methods: [], + ), + ], + classes: [], + enums: [], + ); + final StringBuffer sink = StringBuffer(); + const KotlinGenerator generator = KotlinGenerator(); + generator.generate( + const InternalKotlinOptions(kotlinOut: ''), + root, + sink, + dartPackageName: DEFAULT_PACKAGE_NAME, + ); + final String code = sink.toString(); + final String collapsedCode = _collapseNewlineAndIndentation(code); - expect( - collapsedCode, - contains('fun getInstance(identifier: Long): T?'), - ); - }, - ); + expect( + collapsedCode, + contains('fun getInstance(identifier: Long): T?'), + ); + }); }); }); } From a0cf2a6a04d917786534c6418c4ff66516bada44 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Thu, 20 Nov 2025 15:13:04 -0500 Subject: [PATCH 3/3] fix generic --- .../test/kotlin/com/example/test_plugin/InstanceManagerTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/InstanceManagerTest.kt b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/InstanceManagerTest.kt index b92638f1980..1c835a65acc 100644 --- a/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/InstanceManagerTest.kt +++ b/packages/pigeon/platform_tests/test_plugin/android/src/test/kotlin/com/example/test_plugin/InstanceManagerTest.kt @@ -145,7 +145,7 @@ class InstanceManagerTest { instanceManager.clearFinalizedWeakReferencesInterval = 1000 instanceManager.stopFinalizationListener() - assertNull(instanceManager.getInstance(0)) + assertNull(instanceManager.getInstance(0)) assertFalse(finalizerRan) }