From 6e0177245f5a7f993b7b366c312fd77c89ed3568 Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Wed, 12 Nov 2025 13:50:11 +1100 Subject: [PATCH 1/2] [objective_c] CI to check for xcode analyser errors --- .github/workflows/objective_c.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/objective_c.yaml b/.github/workflows/objective_c.yaml index 821fd5617..e2ebf8942 100644 --- a/.github/workflows/objective_c.yaml +++ b/.github/workflows/objective_c.yaml @@ -99,3 +99,5 @@ jobs: run: flutter pub get - name: Build the example app run: flutter build macos + - name: Check for xcode for analyzer warnings + run: xcodebuild analyze -workspace macos/Runner.xcworkspace -scheme Runner -configuration Debug GCC_TREAT_WARNINGS_AS_ERRORS=YES From edacb2cfeb123472666f90e85bb094e2e0553f31 Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Wed, 12 Nov 2025 14:20:45 +1100 Subject: [PATCH 2/2] Fix warnings --- pkgs/ffigen/lib/src/code_generator/objc_block.dart | 3 ++- pkgs/objective_c/src/objective_c.m | 6 +++--- pkgs/objective_c/src/objective_c_bindings_generated.m | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/ffigen/lib/src/code_generator/objc_block.dart b/pkgs/ffigen/lib/src/code_generator/objc_block.dart index 0f890d51d..7e2bbec70 100644 --- a/pkgs/ffigen/lib/src/code_generator/objc_block.dart +++ b/pkgs/ffigen/lib/src/code_generator/objc_block.dart @@ -400,6 +400,7 @@ ref.pointer.ref.invoke.cast<${_helper.trampNatFnCType}>() final blockingListenerRetains = [_waiterParam.name, ...retains]; final argStr = argsReceived.join(', '); + final declArgStr = argStr.isEmpty ? 'void' : argStr; final blockingArgStr = [ _waiterParam.getNativeType(varName: _waiterParam.name), ...argsReceived, @@ -416,7 +417,7 @@ ref.pointer.ref.invoke.cast<${_helper.trampNatFnCType}>() return ''' -typedef ${returnType.getNativeType()} (^$listenerName)($argStr); +typedef ${returnType.getNativeType()} (^$listenerName)($declArgStr); __attribute__((visibility("default"))) __attribute__((used)) $listenerName $listenerWrapper($listenerName block) NS_RETURNS_RETAINED { return ^void($argStr) { diff --git a/pkgs/objective_c/src/objective_c.m b/pkgs/objective_c/src/objective_c.m index cebdaba73..c9b9f4120 100644 --- a/pkgs/objective_c/src/objective_c.m +++ b/pkgs/objective_c/src/objective_c.m @@ -77,8 +77,8 @@ FFI_EXPORT Version DOBJC_getOsVesion(void) { NSOperatingSystemVersion objc_version = [[NSProcessInfo processInfo] operatingSystemVersion]; Version c_version; - c_version.major = objc_version.majorVersion; - c_version.minor = objc_version.minorVersion; - c_version.patch = objc_version.patchVersion; + c_version.major = (int)objc_version.majorVersion; + c_version.minor = (int)objc_version.minorVersion; + c_version.patch = (int)objc_version.patchVersion; return c_version; } diff --git a/pkgs/objective_c/src/objective_c_bindings_generated.m b/pkgs/objective_c/src/objective_c_bindings_generated.m index b0fece41e..29ec18075 100644 --- a/pkgs/objective_c/src/objective_c_bindings_generated.m +++ b/pkgs/objective_c/src/objective_c_bindings_generated.m @@ -127,7 +127,7 @@ BOOL _ObjectiveCBindings_protocolTrampoline_w1e3k0(id target, void * sel, struc return ((_ProtocolTrampoline_8)((id (*)(id, SEL, SEL))objc_msgSend)(target, @selector(getDOBJCDartProtocolMethodForSelector:), sel))(sel, arg1); } -typedef void (^_ListenerTrampoline)(); +typedef void (^_ListenerTrampoline)(void); __attribute__((visibility("default"))) __attribute__((used)) _ListenerTrampoline _ObjectiveCBindings_wrapListenerBlock_1pl9qdv(_ListenerTrampoline block) NS_RETURNS_RETAINED { return ^void() {