diff --git a/pkgs/ffigen/CHANGELOG.md b/pkgs/ffigen/CHANGELOG.md index 41ca1d5e78..928de48be1 100644 --- a/pkgs/ffigen/CHANGELOG.md +++ b/pkgs/ffigen/CHANGELOG.md @@ -21,6 +21,8 @@ change to something more sensible. - __Breaking change__: Deleted the config option `Output.sort`. Sorting is now always enabled. +- Fix(https://github.com/dart-lang/native/issues/2877) + such that ObjCObject `isA` now accepts a nullable `ObjCObject?` and returns `false` when called with `null`, aligning its behavior with Dart’s `is`operator. ## 20.1.1 diff --git a/pkgs/ffigen/example/objective_c/avf_audio_bindings.dart b/pkgs/ffigen/example/objective_c/avf_audio_bindings.dart index 18187787e8..0d97511df9 100644 --- a/pkgs/ffigen/example/objective_c/avf_audio_bindings.dart +++ b/pkgs/ffigen/example/objective_c/avf_audio_bindings.dart @@ -563,11 +563,13 @@ extension type AVAudioPlayer._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [AVAudioPlayer]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_AVAudioPlayer, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_AVAudioPlayer, + ); /// alloc static AVAudioPlayer alloc() { diff --git a/pkgs/ffigen/example/swift/swift_api_bindings.dart b/pkgs/ffigen/example/swift/swift_api_bindings.dart index 8d85a596cb..d349d8dc79 100644 --- a/pkgs/ffigen/example/swift/swift_api_bindings.dart +++ b/pkgs/ffigen/example/swift/swift_api_bindings.dart @@ -57,11 +57,13 @@ extension type SwiftClass._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [SwiftClass]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_SwiftClass, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_SwiftClass, + ); /// alloc static SwiftClass alloc() { diff --git a/pkgs/ffigen/lib/src/code_generator/objc_interface.dart b/pkgs/ffigen/lib/src/code_generator/objc_interface.dart index 9fec93b2d5..32bb152fac 100644 --- a/pkgs/ffigen/lib/src/code_generator/objc_interface.dart +++ b/pkgs/ffigen/lib/src/code_generator/objc_interface.dart @@ -152,7 +152,9 @@ ${generateInstanceMethodBindings(w, this)} s.write(''' /// Returns whether [obj] is an instance of [$name]. - static bool isA($wrapObjType obj) => $isKindOfClass; + static bool isA($wrapObjType? obj) => obj == null + ? false + : $isKindOfClass; '''); s.write(generateStaticMethodBindings(w, this)); diff --git a/pkgs/ffigen/test/native_objc_test/is_instance_test.dart b/pkgs/ffigen/test/native_objc_test/is_instance_test.dart index f315c2b3a5..d403a04ed9 100644 --- a/pkgs/ffigen/test/native_objc_test/is_instance_test.dart +++ b/pkgs/ffigen/test/native_objc_test/is_instance_test.dart @@ -48,5 +48,11 @@ void main() { expect(IsInstanceChildClass.isA(base), isFalse); expect(IsInstanceChildClass.isA(child), isTrue); }); + + test('Null input', () { + expect(IsInstanceBaseClass.isA(null), isFalse); + expect(IsInstanceChildClass.isA(null), isFalse); + expect(IsInstanceUnrelatedClass.isA(null), isFalse); + }); }); } diff --git a/pkgs/objective_c/CHANGELOG.md b/pkgs/objective_c/CHANGELOG.md index 4b3fdcf6e7..48d7f17353 100644 --- a/pkgs/objective_c/CHANGELOG.md +++ b/pkgs/objective_c/CHANGELOG.md @@ -1,3 +1,6 @@ +## 9.4.0 +- Fix (https://github.com/dart-lang/native/issues/2877) such that all occurances of ObjCObject `isA` now accepts a nullable `ObjCObject?` and returns `false` when input is`null` + ## 9.3.0 - `autoReleasePool` now returns the value produced by its callback. diff --git a/pkgs/objective_c/lib/src/objective_c_bindings_generated.dart b/pkgs/objective_c/lib/src/objective_c_bindings_generated.dart index a4ccfbad53..6a7c19080c 100644 --- a/pkgs/objective_c/lib/src/objective_c_bindings_generated.dart +++ b/pkgs/objective_c/lib/src/objective_c_bindings_generated.dart @@ -671,11 +671,13 @@ extension type DOBJCObservation._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [DOBJCObservation]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_DOBJCObservation, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_DOBJCObservation, + ); /// alloc static DOBJCObservation alloc() { @@ -772,11 +774,13 @@ extension type DartInputStreamAdapter._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [DartInputStreamAdapter]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_DOBJCDartInputStreamAdapter, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_DOBJCDartInputStreamAdapter, + ); /// alloc static DartInputStreamAdapter alloc() { @@ -1011,11 +1015,13 @@ extension type DartInputStreamAdapterWeakHolder._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [DartInputStreamAdapterWeakHolder]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_DOBJCDartInputStreamAdapterWeakHolder, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_DOBJCDartInputStreamAdapterWeakHolder, + ); /// alloc static DartInputStreamAdapterWeakHolder alloc() { @@ -1128,11 +1134,13 @@ extension type DartProtocol._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [DartProtocol]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_DOBJCDartProtocol, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_DOBJCDartProtocol, + ); /// alloc static DartProtocol alloc() { @@ -1226,11 +1234,13 @@ extension type DartProtocolBuilder._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [DartProtocolBuilder]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_DOBJCDartProtocolBuilder, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_DOBJCDartProtocolBuilder, + ); /// alloc static DartProtocolBuilder alloc() { @@ -1381,11 +1391,13 @@ extension type NSArray._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSArray]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSArray, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSArray, + ); /// alloc static NSArray alloc() { @@ -1613,11 +1625,13 @@ extension type NSAttributedString._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSAttributedString]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSAttributedString, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSAttributedString, + ); /// alloc static NSAttributedString alloc() { @@ -2096,11 +2110,13 @@ extension type NSAttributedStringMarkdownParsingOptions._( } /// Returns whether [obj] is an instance of [NSAttributedStringMarkdownParsingOptions]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSAttributedStringMarkdownParsingOptions, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSAttributedStringMarkdownParsingOptions, + ); /// alloc static NSAttributedStringMarkdownParsingOptions alloc() { @@ -2337,11 +2353,13 @@ extension type NSBundle._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSBundle]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSBundle, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSBundle, + ); /// URLForResource:withExtension:subdirectory:inBundleWithURL: static NSURL? URLForResource$3( @@ -3220,11 +3238,13 @@ extension type NSCharacterSet._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSCharacterSet]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSCharacterSet, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSCharacterSet, + ); /// alloc static NSCharacterSet alloc() { @@ -3548,11 +3568,13 @@ extension type NSCoder._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSCoder]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSCoder, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSCoder, + ); /// alloc static NSCoder alloc() { @@ -4037,11 +4059,13 @@ extension type NSData._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSData]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSData, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSData, + ); /// alloc static NSData alloc() { @@ -4548,11 +4572,13 @@ extension type NSDate._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSDate]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSDate, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSDate, + ); /// alloc static NSDate alloc() { @@ -4793,11 +4819,13 @@ extension type NSDictionary._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSDictionary]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSDictionary, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSDictionary, + ); /// alloc static NSDictionary alloc() { @@ -5075,11 +5103,13 @@ extension type NSEnumerator._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSEnumerator]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSEnumerator, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSEnumerator, + ); /// alloc static NSEnumerator alloc() { @@ -5164,11 +5194,13 @@ extension type NSError._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSError]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSError, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSError, + ); /// alloc static NSError alloc() { @@ -8396,11 +8428,13 @@ extension type NSIndexSet._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSIndexSet]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSIndexSet, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSIndexSet, + ); /// alloc static NSIndexSet alloc() { @@ -8911,11 +8945,13 @@ extension type NSInputStream._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSInputStream]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSInputStream, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSInputStream, + ); /// alloc static NSInputStream alloc() { @@ -9085,11 +9121,13 @@ extension type NSInvocation._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSInvocation]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSInvocation, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSInvocation, + ); /// alloc static NSInvocation alloc() { @@ -9274,11 +9312,13 @@ extension type NSItemProvider._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSItemProvider]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSItemProvider, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSItemProvider, + ); /// alloc static NSItemProvider alloc() { @@ -10128,11 +10168,13 @@ extension type NSLocale._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSLocale]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSLocale, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSLocale, + ); /// alloc static NSLocale alloc() { @@ -10292,11 +10334,13 @@ extension type NSMethodSignature._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSMethodSignature]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSMethodSignature, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSMethodSignature, + ); /// alloc static NSMethodSignature alloc() { @@ -10423,11 +10467,13 @@ extension type NSMutableArray._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSMutableArray]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSMutableArray, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSMutableArray, + ); /// alloc static NSMutableArray alloc() { @@ -10771,11 +10817,13 @@ extension type NSMutableData._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSMutableData]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSMutableData, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSMutableData, + ); /// alloc static NSMutableData alloc() { @@ -11291,11 +11339,13 @@ extension type NSMutableDictionary._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSMutableDictionary]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSMutableDictionary, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSMutableDictionary, + ); /// alloc static NSMutableDictionary alloc() { @@ -11555,11 +11605,13 @@ extension type NSMutableIndexSet._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSMutableIndexSet]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSMutableIndexSet, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSMutableIndexSet, + ); /// alloc static NSMutableIndexSet alloc() { @@ -11764,11 +11816,13 @@ extension type NSMutableOrderedSet._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSMutableOrderedSet]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSMutableOrderedSet, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSMutableOrderedSet, + ); /// alloc static NSMutableOrderedSet alloc() { @@ -12283,11 +12337,13 @@ extension type NSMutableSet._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSMutableSet]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSMutableSet, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSMutableSet, + ); /// alloc static NSMutableSet alloc() { @@ -12519,11 +12575,13 @@ extension type NSMutableString._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSMutableString]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSMutableString, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSMutableString, + ); /// alloc static NSMutableString alloc() { @@ -13178,11 +13236,13 @@ extension type NSNotification._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSNotification]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSNotification, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSNotification, + ); /// alloc static NSNotification alloc() { @@ -13333,11 +13393,13 @@ extension type NSNull._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSNull]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSNull, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSNull, + ); /// alloc static NSNull alloc() { @@ -13431,11 +13493,13 @@ extension type NSNumber._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSNumber]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSNumber, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSNumber, + ); /// alloc static NSNumber alloc() { @@ -13996,11 +14060,13 @@ extension type NSObject._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSObject]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSObject, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSObject, + ); /// alloc static NSObject alloc() { @@ -15700,11 +15766,13 @@ extension type NSOrderedCollectionChange._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSOrderedCollectionChange]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSOrderedCollectionChange, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSOrderedCollectionChange, + ); /// alloc static NSOrderedCollectionChange alloc() { @@ -15965,11 +16033,13 @@ extension type NSOrderedCollectionDifference._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSOrderedCollectionDifference]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSOrderedCollectionDifference, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSOrderedCollectionDifference, + ); /// alloc static NSOrderedCollectionDifference alloc() { @@ -16260,11 +16330,13 @@ extension type NSOrderedSet._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSOrderedSet]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSOrderedSet, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSOrderedSet, + ); /// alloc static NSOrderedSet alloc() { @@ -16759,11 +16831,13 @@ extension type NSOutputStream._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSOutputStream]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSOutputStream, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSOutputStream, + ); /// alloc static NSOutputStream alloc() { @@ -16952,11 +17026,13 @@ extension type NSPort._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSPort]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSPort, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSPort, + ); /// alloc static NSPort alloc() { @@ -17329,11 +17405,13 @@ extension type NSPortMessage._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSPortMessage]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSPortMessage, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSPortMessage, + ); /// alloc static NSPortMessage alloc() { @@ -17454,11 +17532,13 @@ extension type NSProgress._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSProgress]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSProgress, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSProgress, + ); /// addSubscriberForFileURL:withPublishingHandler: /// @@ -18325,11 +18405,13 @@ extension type NSRunLoop._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSRunLoop]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSRunLoop, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSRunLoop, + ); /// alloc static NSRunLoop alloc() { @@ -18721,8 +18803,13 @@ extension type NSSet._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSSet]. - static bool isA(objc.ObjCObject obj) => - _objc_msgSend_19nvye5(obj.ref.pointer, _sel_isKindOfClass_, _class_NSSet); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSSet, + ); /// alloc static NSSet alloc() { @@ -18967,11 +19054,13 @@ extension type NSStream._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSStream]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSStream, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSStream, + ); /// alloc static NSStream alloc() { @@ -19366,11 +19455,13 @@ extension type NSString._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSString]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSString, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSString, + ); /// alloc static NSString alloc() { @@ -21231,11 +21322,13 @@ extension type NSTimer._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSTimer]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSTimer, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSTimer, + ); /// alloc static NSTimer alloc() { @@ -21523,8 +21616,13 @@ extension type NSURL._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSURL]. - static bool isA(objc.ObjCObject obj) => - _objc_msgSend_19nvye5(obj.ref.pointer, _sel_isKindOfClass_, _class_NSURL); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSURL, + ); /// URLByResolvingAliasFileAtURL:options:error: static NSURL? URLByResolvingAliasFileAtURL( @@ -22567,11 +22665,13 @@ extension type NSURLHandle._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSURLHandle]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSURLHandle, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSURLHandle, + ); /// alloc static NSURLHandle alloc() { @@ -22651,11 +22751,13 @@ extension type NSValue._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [NSValue]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_NSValue, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_NSValue, + ); /// alloc static NSValue alloc() { @@ -35330,11 +35432,13 @@ extension type Protocol._(objc.ObjCObject object$) implements objc.ObjCObject { } /// Returns whether [obj] is an instance of [Protocol]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_Protocol, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_Protocol, + ); } extension Protocol$Methods on Protocol {} diff --git a/pkgs/objective_c/pubspec.yaml b/pkgs/objective_c/pubspec.yaml index ca4a7fd60f..b2c36821c3 100644 --- a/pkgs/objective_c/pubspec.yaml +++ b/pkgs/objective_c/pubspec.yaml @@ -4,7 +4,7 @@ name: objective_c description: 'A library to access Objective C from Flutter that acts as a support library for package:ffigen.' -version: 9.3.0 +version: 9.4.0-wip repository: https://github.com/dart-lang/native/tree/main/pkgs/objective_c issue_tracker: https://github.com/dart-lang/native/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Aobjective_c diff --git a/pkgs/swiftgen/example/avf_audio_bindings.dart b/pkgs/swiftgen/example/avf_audio_bindings.dart index 3bd6ffa250..38d8da0335 100644 --- a/pkgs/swiftgen/example/avf_audio_bindings.dart +++ b/pkgs/swiftgen/example/avf_audio_bindings.dart @@ -482,11 +482,13 @@ extension type AVAudioPlayerWrapper._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [AVAudioPlayerWrapper]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_AVAudioPlayerWrapper, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_AVAudioPlayerWrapper, + ); /// alloc static AVAudioPlayerWrapper alloc() { diff --git a/pkgs/swiftgen/test/integration/callbacks_bindings.dart b/pkgs/swiftgen/test/integration/callbacks_bindings.dart index a96f3a0d58..41222b16a9 100644 --- a/pkgs/swiftgen/test/integration/callbacks_bindings.dart +++ b/pkgs/swiftgen/test/integration/callbacks_bindings.dart @@ -552,11 +552,13 @@ extension type TestMessageService._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [TestMessageService]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_TestMessageService, - ); + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_TestMessageService, + ); /// alloc static TestMessageService alloc() { diff --git a/pkgs/swiftgen/test/integration/classes_bindings.dart b/pkgs/swiftgen/test/integration/classes_bindings.dart index 6c8f990adf..8cfcfaac81 100644 --- a/pkgs/swiftgen/test/integration/classes_bindings.dart +++ b/pkgs/swiftgen/test/integration/classes_bindings.dart @@ -30,11 +30,13 @@ extension type TestClassWrapper._(objc.ObjCObject object$) } /// Returns whether [obj] is an instance of [TestClassWrapper]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_TestClassWrapper, - ); + static bool isA(objc.ObjCObject obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_TestMessageService, + ); /// alloc static TestClassWrapper alloc() { @@ -107,12 +109,14 @@ extension type TestOtherClassWrapper._(objc.ObjCObject object$) assert(isA(object$)); } - /// Returns whether [obj] is an instance of [TestOtherClassWrapper]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_TestOtherClassWrapper, - ); + /// Returns whether [obj] is an instance of [TestMessageService]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_TestMessageService, + ); /// alloc static TestOtherClassWrapper alloc() { diff --git a/pkgs/swiftgen/test/integration/protocols_bindings.dart b/pkgs/swiftgen/test/integration/protocols_bindings.dart index 66db399878..bfb64fcab0 100644 --- a/pkgs/swiftgen/test/integration/protocols_bindings.dart +++ b/pkgs/swiftgen/test/integration/protocols_bindings.dart @@ -350,12 +350,14 @@ extension type TestWeatherService._(objc.ObjCObject object$) assert(isA(object$)); } - /// Returns whether [obj] is an instance of [TestWeatherService]. - static bool isA(objc.ObjCObject obj) => _objc_msgSend_19nvye5( - obj.ref.pointer, - _sel_isKindOfClass_, - _class_TestWeatherService, - ); + /// Returns whether [obj] is an instance of [TestMessageService]. + static bool isA(objc.ObjCObject? obj) => obj == null + ? false + : _objc_msgSend_19nvye5( + obj.ref.pointer, + _sel_isKindOfClass_, + _class_TestMessageService, + ); /// alloc static TestWeatherService alloc() {