diff --git a/jre_emul/Classes/FastPointerLookup.h b/jre_emul/Classes/FastPointerLookup.h index d22c58fd13..1a3b7ad599 100644 --- a/jre_emul/Classes/FastPointerLookup.h +++ b/jre_emul/Classes/FastPointerLookup.h @@ -13,9 +13,12 @@ #ifndef FastPointerLookup_H_ #define FastPointerLookup_H_ +#import #import #import +NS_ASSUME_NONNULL_BEGIN + struct FastPointerLookupStore; typedef struct FastPointerLookup_t { @@ -44,4 +47,5 @@ void *FastPointerLookup(FastPointerLookup_t *lookup, void *key); // new mapping was added, false if the key is already mapped. bool FastPointerLookupAddMapping(FastPointerLookup_t *lookup, void *key, void *value); +NS_ASSUME_NONNULL_END #endif // FastPointerLookup_H_ diff --git a/jre_emul/Classes/IOSArray.h b/jre_emul/Classes/IOSArray.h index 836ebe2a51..871d15a9f7 100644 --- a/jre_emul/Classes/IOSArray.h +++ b/jre_emul/Classes/IOSArray.h @@ -29,6 +29,7 @@ * An abstract class that represents a Java array. Like a Java array, * an IOSArray is fixed-size but its elements are mutable. */ +NS_ASSUME_NONNULL_BEGIN @interface IOSArray<__covariant ObjectType> : NSMutableArray { @public /** @@ -59,6 +60,7 @@ - (void *)buffer; @end +NS_ASSUME_NONNULL_END CF_EXTERN_C_BEGIN void IOSArray_throwOutOfBoundsWithMsg(jint size, jint index); diff --git a/jre_emul/Classes/IOSArrayClass.h b/jre_emul/Classes/IOSArrayClass.h index 8e11747afb..0aaec01c2f 100644 --- a/jre_emul/Classes/IOSArrayClass.h +++ b/jre_emul/Classes/IOSArrayClass.h @@ -26,10 +26,10 @@ @interface IOSArrayClass : IOSClass { // An IOSClass is used instead of a Class so a IOSPrimitiveClass can be used. - IOSClass *componentType_; + IOSClass *_Nonnull componentType_; } -- (instancetype)initWithComponentType:(IOSClass *)type; +- (instancetype)initWithComponentType:(nonnull IOSClass *)type; @end diff --git a/jre_emul/Classes/IOSClass.h b/jre_emul/Classes/IOSClass.h index aadf532eda..712b8c0df5 100644 --- a/jre_emul/Classes/IOSClass.h +++ b/jre_emul/Classes/IOSClass.h @@ -45,6 +45,7 @@ * instances: those representing real classes and interfaces, those * representing primitive types, and those representing array classes. */ +NS_ASSUME_NONNULL_BEGIN @interface IOSClass : NSObject { @@ -99,17 +100,17 @@ // Class.getMethod(String, Class...) - (JavaLangReflectMethod *)getMethod:(NSString *)name - parameterTypes:(IOSObjectArray *)types; + parameterTypes:(nullable IOSObjectArray *)types; // Class.getDeclaredMethod(String, Class...) - (JavaLangReflectMethod *)getDeclaredMethod:(NSString *)name - parameterTypes:(IOSObjectArray *)types; + parameterTypes:(nullable IOSObjectArray *)types; // Class.getDeclaredConstructor(Class...) -- (JavaLangReflectConstructor *)getDeclaredConstructor:(IOSObjectArray *)types; +- (JavaLangReflectConstructor *)getDeclaredConstructor:(nullable IOSObjectArray *)types; // Class.getConstructor(Class) -- (JavaLangReflectConstructor *)getConstructor:(IOSObjectArray *)types; +- (JavaLangReflectConstructor *)getConstructor:(nullable IOSObjectArray *)types; // Class.getConstructors() - (IOSObjectArray *)getConstructors; @@ -130,10 +131,10 @@ + (IOSClass *)forName:(NSString *)className; + (IOSClass *)forName:(NSString *)className initialize:(jboolean)load - classLoader:(JavaLangClassLoader *)loader; + classLoader:(nullable JavaLangClassLoader *)loader; // Class.cast(Object) -- (id)cast:(id)throwable; +- (id)cast:(nullable id)throwable; // Class.getEnclosingClass() - (IOSClass *)getEnclosingClass; @@ -154,9 +155,8 @@ - (IOSObjectArray *)getGenericInterfaces; - (IOSObjectArray *)getTypeParameters; -- (id) - getAnnotationWithIOSClass:(IOSClass *)annotationClass; -- (jboolean)isAnnotationPresentWithIOSClass:(IOSClass *)annotationType; +- (id)getAnnotationWithIOSClass:(nullable IOSClass *)annotationClass; +- (jboolean)isAnnotationPresentWithIOSClass:(nullable IOSClass *)annotationType; - (IOSObjectArray *)getAnnotations; - (IOSObjectArray *)getDeclaredAnnotations; - (id) @@ -219,7 +219,7 @@ CF_EXTERN_C_BEGIN IOSClass *IOSClass_forName_(NSString *className); // Class.forName(String, boolean, ClassLoader) IOSClass *IOSClass_forName_initialize_classLoader_( - NSString *className, jboolean load, JavaLangClassLoader *loader); + NSString *className, jboolean load, JavaLangClassLoader * _Nullable loader); // Lookup a IOSClass from its associated ObjC class, protocol or component type. IOSClass *IOSClass_fromClass(Class cls); @@ -252,4 +252,6 @@ J2OBJC_STATIC_INIT(IOSClass) J2OBJC_TYPE_LITERAL_HEADER(IOSClass) +NS_ASSUME_NONNULL_END + #endif // _IOSClass_H_ diff --git a/jre_emul/Classes/IOSConcreteClass.h b/jre_emul/Classes/IOSConcreteClass.h index a64d98f7d6..4d170f13ff 100644 --- a/jre_emul/Classes/IOSConcreteClass.h +++ b/jre_emul/Classes/IOSConcreteClass.h @@ -24,12 +24,12 @@ #import "IOSMetadata.h" @interface IOSConcreteClass : IOSClass { - Class class_; + Class _Nonnull class_; } -- (instancetype)initWithClass:(Class)cls - metadata:(const J2ObjcClassInfo *)metadata; -- (instancetype)initWithClass:(Class)cls; +- (instancetype)initWithClass:(Class _Nonnull)cls + metadata:(const J2ObjcClassInfo * _Nonnull)metadata; +- (instancetype)initWithClass:(Class _Nonnull)cls; @end diff --git a/jre_emul/Classes/IOSPrimitiveArray.h b/jre_emul/Classes/IOSPrimitiveArray.h index 877ffe7013..4d79c65def 100644 --- a/jre_emul/Classes/IOSPrimitiveArray.h +++ b/jre_emul/Classes/IOSPrimitiveArray.h @@ -47,6 +47,8 @@ // ********** IOSBooleanArray ********** +NS_ASSUME_NONNULL_BEGIN + /** * An Objective-C representation of a Java boolean array. Like a Java array, * an IOSBooleanArray is fixed-size but its elements are mutable. @@ -292,7 +294,7 @@ __attribute__((always_inline)) inline jchar *IOSCharArray_GetRef( - (void)getBytes:(jbyte *)buffer length:(NSUInteger)length; // Create an array from an NSData object. -+ (instancetype)arrayWithNSData:(NSData *)data; ++ (instancetype)arrayWithNSData:(nullable NSData *)data; // Copies the array contents into a specified buffer, up to the specified // length. An IndexOutOfBoundsException is thrown if the specified length @@ -774,9 +776,8 @@ __attribute__((always_inline)) inline jdouble *IOSDoubleArray_GetRef( return &array->buffer_[index]; } +NS_ASSUME_NONNULL_END -#undef PRIMITIVE_ARRAY_INTERFACE -#undef PRIMITIVE_ARRAY_C_INTERFACE +#pragma clang diagnostic pop // ignored "-Wzero-length-array" -#pragma clang diagnostic pop #endif // IOSPrimitiveArray_H diff --git a/jre_emul/Classes/IOSPrimitiveClass.h b/jre_emul/Classes/IOSPrimitiveClass.h index 9d2a451d52..833e344960 100644 --- a/jre_emul/Classes/IOSPrimitiveClass.h +++ b/jre_emul/Classes/IOSPrimitiveClass.h @@ -28,14 +28,14 @@ // be used with Java reflection routines. This class is minimal because Java // primitive types have/need little runtime support, other than their name. @interface IOSPrimitiveClass : IOSClass { - NSString *name_; - NSString *type_; + NSString * _Nonnull name_; + NSString * _Nonnull type_; } -- (instancetype)initWithName:(NSString *)name type:(NSString *)type; +- (instancetype)initWithName:(NSString * _Nonnull)name type:(NSString * _Nonnull)type; // For a primitive type, return its associated wrapper class. -- (IOSClass *)wrapperClass; +- (IOSClass * _Nonnull)wrapperClass; @end diff --git a/jre_emul/Classes/IOSProtocolClass.h b/jre_emul/Classes/IOSProtocolClass.h index fba9a8e049..42e963d34d 100644 --- a/jre_emul/Classes/IOSProtocolClass.h +++ b/jre_emul/Classes/IOSProtocolClass.h @@ -24,7 +24,7 @@ @interface IOSProtocolClass : IOSClass -- (instancetype)initWithProtocol:(Protocol *)protocol; +- (instancetype)initWithProtocol:(Protocol * _Nonnull)protocol; @end diff --git a/jre_emul/Classes/J2ObjC_header.h b/jre_emul/Classes/J2ObjC_header.h index 702a671366..5135ecacc3 100644 --- a/jre_emul/Classes/J2ObjC_header.h +++ b/jre_emul/Classes/J2ObjC_header.h @@ -15,6 +15,9 @@ #ifndef _J2OBJC_HEADER_H_ #define _J2OBJC_HEADER_H_ +#pragma clang diagnostic push +#pragma GCC diagnostic ignored "-Wnullability-completeness" + #import "IOSObjectArray.h" #import "J2ObjC_common.h" #import "JavaObject.h" @@ -340,4 +343,6 @@ CF_EXTERN_C_END // can measure how much of the app's size is due to transpiled Java code. #define J2OBJC_TEXT_SEGMENT __attribute__((section("__TEXT,__j2objc_text"))) +#pragma clang diagnostic pop + #endif // _J2OBJC_HEADER_H_ diff --git a/jre_emul/Classes/JavaObject.h b/jre_emul/Classes/JavaObject.h index 7b0c0a1a84..9a53eb90ed 100644 --- a/jre_emul/Classes/JavaObject.h +++ b/jre_emul/Classes/JavaObject.h @@ -30,10 +30,10 @@ @protocol JavaObject // Returns a copy of the object, if it implements java.lang.Cloneable. -- (id)java_clone; +- (id _Nonnull)java_clone; // Returns the IOSClass of the receiver. -- (IOSClass *)java_getClass; +- (IOSClass * _Nonnull)java_getClass; // Wakes up a waiting thread (if any). - (void)java_notify; diff --git a/jre_emul/Classes/JreEmulation.h b/jre_emul/Classes/JreEmulation.h index 3866ce90d1..176aee472c 100644 --- a/jre_emul/Classes/JreEmulation.h +++ b/jre_emul/Classes/JreEmulation.h @@ -18,6 +18,9 @@ #define _JreEmulation_H_ #ifdef __OBJC__ +#pragma clang diagnostic push +#pragma GCC diagnostic ignored "-Wnullability-completeness" + #import "J2ObjC_common.h" #import "JavaObject.h" #import "IOSClass.h" @@ -28,6 +31,8 @@ #import "NSNumber+JavaNumber.h" #import "NSObject+JavaObject.h" #import "NSString+JavaString.h" + +#pragma clang diagnostic pop #endif // __OBJC__ #endif // _JreEmulation_H_ diff --git a/jre_emul/Classes/NSDataInputStream.h b/jre_emul/Classes/NSDataInputStream.h index 72d3c50767..857f487a71 100644 --- a/jre_emul/Classes/NSDataInputStream.h +++ b/jre_emul/Classes/NSDataInputStream.h @@ -15,11 +15,13 @@ // a given NSData instance. The NSData instance is copied at // initialization, so further modifications (if it happened to // be mutable) will not be visible. +NS_ASSUME_NONNULL_BEGIN @interface NSDataInputStream : JavaIoInputStream - (instancetype)initWithData:(NSData *)data; + (NSDataInputStream *)streamWithData:(NSData *)data; @end +NS_ASSUME_NONNULL_END #endif // _NSDataInputStream_H_ diff --git a/jre_emul/Classes/NSDataOutputStream.h b/jre_emul/Classes/NSDataOutputStream.h index ad62e705fd..54bd1947b1 100644 --- a/jre_emul/Classes/NSDataOutputStream.h +++ b/jre_emul/Classes/NSDataOutputStream.h @@ -13,6 +13,7 @@ // A concrete subclass of java.io.InputStream that writes into // a backing NSData instance, retrievable at any point. +NS_ASSUME_NONNULL_BEGIN @interface NSDataOutputStream : JavaIoOutputStream + (NSDataOutputStream *)stream; @@ -23,5 +24,6 @@ - (NSData *)data; @end +NS_ASSUME_NONNULL_END #endif // _NSDataOutputStream_H_ diff --git a/jre_emul/Classes/NSDictionaryMap.h b/jre_emul/Classes/NSDictionaryMap.h index 27665bd778..52b5cfcb44 100644 --- a/jre_emul/Classes/NSDictionaryMap.h +++ b/jre_emul/Classes/NSDictionaryMap.h @@ -18,6 +18,7 @@ // The entrySet, keySet and valueSet methods return sets not backed // by the Map, so modifications to the map won't be reflected in the // sets and vice-versa. +NS_ASSUME_NONNULL_BEGIN @interface NSDictionaryMap : JavaUtilAbstractMap < JavaUtilMap > { @private // The backing native map. @@ -36,5 +37,6 @@ - (void)forEachWithJavaUtilFunctionBiConsumer:(id)action; @end +NS_ASSUME_NONNULL_END #endif // _NSDictionaryMap_H_ diff --git a/jre_emul/Classes/NSNumber+JavaNumber.h b/jre_emul/Classes/NSNumber+JavaNumber.h index 97f7e21cbf..fe4d0e16aa 100644 --- a/jre_emul/Classes/NSNumber+JavaNumber.h +++ b/jre_emul/Classes/NSNumber+JavaNumber.h @@ -30,7 +30,7 @@ @end -__attribute__((always_inline)) inline void NSNumber_init(NSObject *self) { +__attribute__((always_inline)) inline void NSNumber_init(NSObject * _Nonnull self) { #pragma unused(self) } diff --git a/jre_emul/Classes/NSObject+JavaObject.h b/jre_emul/Classes/NSObject+JavaObject.h index 865fbbfd6b..0408ada532 100644 --- a/jre_emul/Classes/NSObject+JavaObject.h +++ b/jre_emul/Classes/NSObject+JavaObject.h @@ -30,6 +30,7 @@ @class IOSClass; // A category that adds Java Object-compatible methods to NSObject. +NS_ASSUME_NONNULL_BEGIN @interface NSObject (JavaObject) // JavaObject doesn't implement Comparable, but the Comparable contract wants @@ -50,14 +51,16 @@ - (void)_java_lang_ref_original_release; @end +NS_ASSUME_NONNULL_END -__attribute__((always_inline)) inline void NSObject_init(NSObject *self) { - #pragma unused(self) +__attribute__((always_inline)) inline void NSObject_init(NSObject* _Nonnull self) { +#pragma unused(self) } -__attribute__((always_inline)) NS_RETURNS_RETAINED inline NSObject *new_NSObject_init(void) { +__attribute__((always_inline)) NS_RETURNS_RETAINED inline NSObject* _Nonnull new_NSObject_init( + void) { return [NSObject alloc]; } -__attribute__((always_inline)) inline NSObject *create_NSObject_init(void) { +__attribute__((always_inline)) inline NSObject* _Nonnull create_NSObject_init(void) { return AUTORELEASE([NSObject alloc]); } diff --git a/jre_emul/Classes/NSString+JavaString.h b/jre_emul/Classes/NSString+JavaString.h index 4bd5940e95..a02c72bbd1 100644 --- a/jre_emul/Classes/NSString+JavaString.h +++ b/jre_emul/Classes/NSString+JavaString.h @@ -19,7 +19,6 @@ #if __has_feature(nullability) #pragma clang diagnostic push -#pragma GCC diagnostic ignored "-Wnullability" #pragma GCC diagnostic ignored "-Wnullability-completeness" #endif @@ -43,10 +42,11 @@ // A category that adds java.lang.String-like methods to NSString. The method // list is not exhaustive, since methods that can be directly substituted are // inlined. +NS_ASSUME_NONNULL_BEGIN @interface NSString (JavaString) // String.valueOf(Object) -+ (nonnull NSString *)java_valueOf:(id)obj; ++ (nonnull NSString *)java_valueOf:(nullable id)obj; // String.valueOf(boolean) + (nonnull NSString *)java_valueOfBool:(jboolean)value; @@ -222,7 +222,7 @@ // String.format(String, ...), String.format(Locale, String, ...) + (nonnull NSString *)java_formatWithNSString:(NSString *)format withNSObjectArray:(IOSObjectArray *)args; -+ (nonnull NSString *)java_formatWithJavaUtilLocale:(JavaUtilLocale *)locale ++ (nonnull NSString *)java_formatWithJavaUtilLocale:(nullable JavaUtilLocale *)locale withNSString:(NSString *)format withNSObjectArray:(IOSObjectArray *)args; @@ -305,6 +305,7 @@ - (jboolean)java_isBlank; @end +NS_ASSUME_NONNULL_END // String.format(Locale, String, Object...) FOUNDATION_EXPORT NSString *NSString_java_formatWithJavaUtilLocale_withNSString_withNSObjectArray_( diff --git a/jre_emul/Classes/java/lang/AbstractStringBuilder.h b/jre_emul/Classes/java/lang/AbstractStringBuilder.h index 8e4695dc2d..3c12fea90a 100644 --- a/jre_emul/Classes/java/lang/AbstractStringBuilder.h +++ b/jre_emul/Classes/java/lang/AbstractStringBuilder.h @@ -28,6 +28,7 @@ typedef struct JreStringBuilder { jint count_; } JreStringBuilder; +NS_ASSUME_NONNULL_BEGIN @interface JavaLangAbstractStringBuilder : NSObject < JavaLangAppendable, JavaLangCharSequence > { @package JreStringBuilder delegate_; @@ -141,4 +142,6 @@ NSString *JreStringBuilder_toStringAndDealloc(JreStringBuilder *sb); CF_EXTERN_C_END +NS_ASSUME_NONNULL_END + #endif // _JavaLangAbstractStringBuilder_H_