From 030136f418cc35caab08d3c3cb7694f32c419de7 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 22 Jan 2026 15:17:06 -0500 Subject: [PATCH 1/2] Modernize Obj-C generation headers --- packages/pigeon/CHANGELOG.md | 4 +++ .../example/app/macos/Runner/messages.g.h | 2 +- .../example/app/macos/Runner/messages.g.m | 8 ++---- .../pigeon/lib/src/objc/objc_generator.dart | 11 +++----- .../CoreTests.gen.m | 8 ++---- .../CoreTests.gen.h | 2 +- packages/pigeon/pubspec.yaml | 2 +- packages/pigeon/test/objc_generator_test.dart | 25 +++++++++++++++++++ 8 files changed, 39 insertions(+), 23 deletions(-) diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 7c031bbd4ebf..721ab01fc459 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,3 +1,7 @@ +## 26.1.7 + +* [objc] Updates to use module imports. + ## 26.1.6 * Bumps kotlin_version to 2.3.0. diff --git a/packages/pigeon/example/app/macos/Runner/messages.g.h b/packages/pigeon/example/app/macos/Runner/messages.g.h index de6b076dfb3c..c44b9361e8b9 100644 --- a/packages/pigeon/example/app/macos/Runner/messages.g.h +++ b/packages/pigeon/example/app/macos/Runner/messages.g.h @@ -4,7 +4,7 @@ // Autogenerated from Pigeon, do not edit directly. // See also: https://pub.dev/packages/pigeon -#import +@import Foundation; @protocol FlutterBinaryMessenger; @protocol FlutterMessageCodec; diff --git a/packages/pigeon/example/app/macos/Runner/messages.g.m b/packages/pigeon/example/app/macos/Runner/messages.g.m index 661dc4e54499..3e3bc65265ae 100644 --- a/packages/pigeon/example/app/macos/Runner/messages.g.m +++ b/packages/pigeon/example/app/macos/Runner/messages.g.m @@ -7,13 +7,9 @@ #import "messages.g.h" #if TARGET_OS_OSX -#import +@import FlutterMacOS; #else -#import -#endif - -#if !__has_feature(objc_arc) -#error File requires ARC to be enabled. +@import Flutter; #endif static NSArray *wrapResult(id result, FlutterError *error) { diff --git a/packages/pigeon/lib/src/objc/objc_generator.dart b/packages/pigeon/lib/src/objc/objc_generator.dart index b09e0edfb7ff..e76459a19dc9 100644 --- a/packages/pigeon/lib/src/objc/objc_generator.dart +++ b/packages/pigeon/lib/src/objc/objc_generator.dart @@ -203,7 +203,7 @@ class ObjcHeaderGenerator extends StructuredGenerator { Indent indent, { required String dartPackageName, }) { - indent.writeln('#import '); + indent.writeln('@import Foundation;'); indent.newln(); indent.writeln('@protocol FlutterBinaryMessenger;'); @@ -513,14 +513,9 @@ class ObjcSourceGenerator extends StructuredGenerator { indent.writeln('#import "${generatorOptions.headerIncludePath}"'); indent.newln(); indent.writeln('#if TARGET_OS_OSX'); - indent.writeln('#import '); + indent.writeln('@import FlutterMacOS;'); indent.writeln('#else'); - indent.writeln('#import '); - indent.writeln('#endif'); - indent.newln(); - - indent.writeln('#if !__has_feature(objc_arc)'); - indent.writeln('#error File requires ARC to be enabled.'); + indent.writeln('@import Flutter;'); indent.writeln('#endif'); indent.newln(); } diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/darwin/alternate_language_test_plugin/Sources/alternate_language_test_plugin/CoreTests.gen.m b/packages/pigeon/platform_tests/alternate_language_test_plugin/darwin/alternate_language_test_plugin/Sources/alternate_language_test_plugin/CoreTests.gen.m index 5ca6a3781e5c..38bd8f4a417f 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/darwin/alternate_language_test_plugin/Sources/alternate_language_test_plugin/CoreTests.gen.m +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/darwin/alternate_language_test_plugin/Sources/alternate_language_test_plugin/CoreTests.gen.m @@ -8,13 +8,9 @@ #import "./include/alternate_language_test_plugin/CoreTests.gen.h" #if TARGET_OS_OSX -#import +@import FlutterMacOS; #else -#import -#endif - -#if !__has_feature(objc_arc) -#error File requires ARC to be enabled. +@import Flutter; #endif static NSArray *wrapResult(id result, FlutterError *error) { diff --git a/packages/pigeon/platform_tests/alternate_language_test_plugin/darwin/alternate_language_test_plugin/Sources/alternate_language_test_plugin/include/alternate_language_test_plugin/CoreTests.gen.h b/packages/pigeon/platform_tests/alternate_language_test_plugin/darwin/alternate_language_test_plugin/Sources/alternate_language_test_plugin/include/alternate_language_test_plugin/CoreTests.gen.h index 91472bc12e32..83f632d43b3b 100644 --- a/packages/pigeon/platform_tests/alternate_language_test_plugin/darwin/alternate_language_test_plugin/Sources/alternate_language_test_plugin/include/alternate_language_test_plugin/CoreTests.gen.h +++ b/packages/pigeon/platform_tests/alternate_language_test_plugin/darwin/alternate_language_test_plugin/Sources/alternate_language_test_plugin/include/alternate_language_test_plugin/CoreTests.gen.h @@ -5,7 +5,7 @@ // Autogenerated from Pigeon, do not edit directly. // See also: https://pub.dev/packages/pigeon -#import +@import Foundation; @protocol FlutterBinaryMessenger; @protocol FlutterMessageCodec; diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index c5733e874bcf..d01fb9466690 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.6 # This must match the version in lib/src/generator_tools.dart +version: 26.1.7 # This must match the version in lib/src/generator_tools.dart environment: sdk: ^3.9.0 diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index 34533036fd5f..b44f84f571d3 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -2378,6 +2378,31 @@ void main() { expect(code, startsWith('// hello world')); }); + test('only uses new-style module imports', () { + final root = Root(apis: [], classes: [], enums: []); + final sink = StringBuffer(); + const generator = ObjcGenerator(); + final generatorOptions = OutputFileOptions( + fileType: FileType.source, + languageOptions: InternalObjcOptions( + headerIncludePath: 'foo.h', + prefix: 'ABC', + copyrightHeader: makeIterable('hello world'), + objcHeaderOut: '', + objcSourceOut: '', + ), + ); + generator.generate( + generatorOptions, + root, + sink, + dartPackageName: DEFAULT_PACKAGE_NAME, + ); + final code = sink.toString(); + expect(code, contains('@import')); + expect(code, isNot(contains('#import <'))); + }); + test('field generics', () { final classDefinition = Class( name: 'Foobar', From 561e43d78ec9db1966a1dfc802e56dd8716fcb13 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 22 Jan 2026 15:34:29 -0500 Subject: [PATCH 2/2] Fix version --- packages/pigeon/lib/src/generator_tools.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pigeon/lib/src/generator_tools.dart b/packages/pigeon/lib/src/generator_tools.dart index b77673fdd753..e00fdf2063dd 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.6'; +const String pigeonVersion = '26.1.7'; /// Read all the content from [stdin] to a String. String readStdin() {