diff --git a/src/Java.Interop/Java.Interop/JavaArray.cs b/src/Java.Interop/Java.Interop/JavaArray.cs index 96705f182..3d7b4b605 100644 --- a/src/Java.Interop/Java.Interop/JavaArray.cs +++ b/src/Java.Interop/Java.Interop/JavaArray.cs @@ -258,31 +258,31 @@ bool ICollection.Remove (T item) throw new NotSupportedException (); } - bool IList.Contains (object value) + bool IList.Contains (object? value) { if (value is T) return Contains ((T) value); return false; } - int IList.IndexOf (object value) + int IList.IndexOf (object? value) { if (value is T) return IndexOf ((T) value); return -1; } - int IList.Add (object value) + int IList.Add (object? value) { throw new NotSupportedException (); } - void IList.Insert (int index, object value) + void IList.Insert (int index, object? value) { throw new NotSupportedException (); } - void IList.Remove (object value) + void IList.Remove (object? value) { throw new NotSupportedException (); } diff --git a/src/Java.Interop/Java.Interop/JavaException.cs b/src/Java.Interop/Java.Interop/JavaException.cs index 868fe4ddf..208f42af0 100644 --- a/src/Java.Interop/Java.Interop/JavaException.cs +++ b/src/Java.Interop/Java.Interop/JavaException.cs @@ -162,7 +162,7 @@ protected virtual void Dispose (bool disposing) } } - public override bool Equals (object obj) + public override bool Equals (object? obj) { JniPeerMembers.AssertSelf (this); diff --git a/src/Java.Interop/Java.Interop/JavaObject.cs b/src/Java.Interop/Java.Interop/JavaObject.cs index b8c5e242b..ef7b06a12 100644 --- a/src/Java.Interop/Java.Interop/JavaObject.cs +++ b/src/Java.Interop/Java.Interop/JavaObject.cs @@ -110,7 +110,7 @@ protected virtual void Dispose (bool disposing) { } - public override bool Equals (object obj) + public override bool Equals (object? obj) { JniPeerMembers.AssertSelf (this); diff --git a/src/Java.Interop/Java.Interop/JavaPrimitiveArrays.cs b/src/Java.Interop/Java.Interop/JavaPrimitiveArrays.cs index 88cf9f64a..2ec1c3cfe 100644 --- a/src/Java.Interop/Java.Interop/JavaPrimitiveArrays.cs +++ b/src/Java.Interop/Java.Interop/JavaPrimitiveArrays.cs @@ -7,6 +7,7 @@ using Java.Interop.Expressions; using System.Linq.Expressions; +using System.Diagnostics.CodeAnalysis; namespace Java.Interop { @@ -246,7 +247,7 @@ public override IList CreateGenericValue (ref JniObjectReference refere (ref JniObjectReference h, JniObjectReferenceOptions o) => new JavaBooleanArray (ref h, o)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (IList value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] IList value, ParameterAttributes synchronize) { return JavaArray.CreateArgumentState (value, synchronize, (list, copy) => { var a = copy @@ -257,7 +258,7 @@ public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState }); } - public override void DestroyGenericArgumentState (IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) + public override void DestroyGenericArgumentState ([AllowNull] IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) { JavaArray.DestroyArgumentState (value, ref state, synchronize); } @@ -422,7 +423,7 @@ public override IList CreateGenericValue (ref JniObjectReference referenc (ref JniObjectReference h, JniObjectReferenceOptions o) => new JavaSByteArray (ref h, o)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (IList value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] IList value, ParameterAttributes synchronize) { return JavaArray.CreateArgumentState (value, synchronize, (list, copy) => { var a = copy @@ -433,7 +434,7 @@ public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState }); } - public override void DestroyGenericArgumentState (IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) + public override void DestroyGenericArgumentState ([AllowNull] IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) { JavaArray.DestroyArgumentState (value, ref state, synchronize); } @@ -598,7 +599,7 @@ public override IList CreateGenericValue (ref JniObjectReference reference (ref JniObjectReference h, JniObjectReferenceOptions o) => new JavaCharArray (ref h, o)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (IList value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] IList value, ParameterAttributes synchronize) { return JavaArray.CreateArgumentState (value, synchronize, (list, copy) => { var a = copy @@ -609,7 +610,7 @@ public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState }); } - public override void DestroyGenericArgumentState (IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) + public override void DestroyGenericArgumentState ([AllowNull] IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) { JavaArray.DestroyArgumentState (value, ref state, synchronize); } @@ -774,7 +775,7 @@ public override IList CreateGenericValue (ref JniObjectReference referenc (ref JniObjectReference h, JniObjectReferenceOptions o) => new JavaInt16Array (ref h, o)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (IList value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] IList value, ParameterAttributes synchronize) { return JavaArray.CreateArgumentState (value, synchronize, (list, copy) => { var a = copy @@ -785,7 +786,7 @@ public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState }); } - public override void DestroyGenericArgumentState (IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) + public override void DestroyGenericArgumentState ([AllowNull] IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) { JavaArray.DestroyArgumentState (value, ref state, synchronize); } @@ -950,7 +951,7 @@ public override IList CreateGenericValue (ref JniObjectReference referenc (ref JniObjectReference h, JniObjectReferenceOptions o) => new JavaInt32Array (ref h, o)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (IList value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] IList value, ParameterAttributes synchronize) { return JavaArray.CreateArgumentState (value, synchronize, (list, copy) => { var a = copy @@ -961,7 +962,7 @@ public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState }); } - public override void DestroyGenericArgumentState (IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) + public override void DestroyGenericArgumentState ([AllowNull] IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) { JavaArray.DestroyArgumentState (value, ref state, synchronize); } @@ -1126,7 +1127,7 @@ public override IList CreateGenericValue (ref JniObjectReference referenc (ref JniObjectReference h, JniObjectReferenceOptions o) => new JavaInt64Array (ref h, o)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (IList value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] IList value, ParameterAttributes synchronize) { return JavaArray.CreateArgumentState (value, synchronize, (list, copy) => { var a = copy @@ -1137,7 +1138,7 @@ public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState }); } - public override void DestroyGenericArgumentState (IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) + public override void DestroyGenericArgumentState ([AllowNull] IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) { JavaArray.DestroyArgumentState (value, ref state, synchronize); } @@ -1302,7 +1303,7 @@ public override IList CreateGenericValue (ref JniObjectReference referen (ref JniObjectReference h, JniObjectReferenceOptions o) => new JavaSingleArray (ref h, o)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (IList value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] IList value, ParameterAttributes synchronize) { return JavaArray.CreateArgumentState (value, synchronize, (list, copy) => { var a = copy @@ -1313,7 +1314,7 @@ public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState }); } - public override void DestroyGenericArgumentState (IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) + public override void DestroyGenericArgumentState ([AllowNull] IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) { JavaArray.DestroyArgumentState (value, ref state, synchronize); } @@ -1478,7 +1479,7 @@ public override IList CreateGenericValue (ref JniObjectReference referen (ref JniObjectReference h, JniObjectReferenceOptions o) => new JavaDoubleArray (ref h, o)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (IList value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] IList value, ParameterAttributes synchronize) { return JavaArray.CreateArgumentState (value, synchronize, (list, copy) => { var a = copy @@ -1489,7 +1490,7 @@ public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState }); } - public override void DestroyGenericArgumentState (IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) + public override void DestroyGenericArgumentState ([AllowNull] IList value, ref JniValueMarshalerState state, ParameterAttributes synchronize) { JavaArray.DestroyArgumentState (value, ref state, synchronize); } diff --git a/src/Java.Interop/Java.Interop/JavaProxyObject.cs b/src/Java.Interop/Java.Interop/JavaProxyObject.cs index a438cc37a..e3c5b03ea 100644 --- a/src/Java.Interop/Java.Interop/JavaProxyObject.cs +++ b/src/Java.Interop/Java.Interop/JavaProxyObject.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Diagnostics.CodeAnalysis; @@ -51,7 +51,7 @@ public override bool Equals (object? obj) public bool Equals (JavaProxyObject? other) => object.Equals (Value, other?.Value); - public override string ToString () + public override string? ToString () { return Value.ToString (); } @@ -63,8 +63,7 @@ public override string ToString () return null; lock (CachedValues) { - JavaProxyObject proxy; - if (CachedValues.TryGetValue (value, out proxy)) + if (CachedValues.TryGetValue (value, out var proxy)) return proxy; proxy = new JavaProxyObject (value); CachedValues.Add (value, proxy); diff --git a/src/Java.Interop/Java.Interop/JniBuiltinMarshalers.cs b/src/Java.Interop/Java.Interop/JniBuiltinMarshalers.cs index ff11783b3..fd6b78712 100644 --- a/src/Java.Interop/Java.Interop/JniBuiltinMarshalers.cs +++ b/src/Java.Interop/Java.Interop/JniBuiltinMarshalers.cs @@ -8,6 +8,7 @@ using System.Reflection; using Java.Interop.Expressions; +using System.Diagnostics.CodeAnalysis; namespace Java.Interop { @@ -233,12 +234,12 @@ public override Boolean CreateGenericValue (ref JniObjectReference reference, Jn return JniBoolean.GetValueFromJni (ref reference, options, targetType); } - public override JniValueMarshalerState CreateGenericArgumentState (Boolean value, ParameterAttributes synchronize = ParameterAttributes.In) + public override JniValueMarshalerState CreateGenericArgumentState ([MaybeNull] Boolean value, ParameterAttributes synchronize = ParameterAttributes.In) { return new JniValueMarshalerState (new JniArgumentValue (value)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Boolean value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Boolean value, ParameterAttributes synchronize) { var r = JniBoolean.CreateLocalRef (value); return new JniValueMarshalerState (r); @@ -286,7 +287,7 @@ sealed class JniNullableBooleanValueMarshaler : JniValueMarshaler { return JniBoolean.GetValueFromJni (ref reference, options, targetType: null); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Boolean? value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Boolean? value, ParameterAttributes synchronize) { if (!value.HasValue) return new JniValueMarshalerState (); @@ -360,12 +361,12 @@ public override SByte CreateGenericValue (ref JniObjectReference reference, JniO return JniByte.GetValueFromJni (ref reference, options, targetType); } - public override JniValueMarshalerState CreateGenericArgumentState (SByte value, ParameterAttributes synchronize = ParameterAttributes.In) + public override JniValueMarshalerState CreateGenericArgumentState ([MaybeNull] SByte value, ParameterAttributes synchronize = ParameterAttributes.In) { return new JniValueMarshalerState (new JniArgumentValue (value)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (SByte value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] SByte value, ParameterAttributes synchronize) { var r = JniByte.CreateLocalRef (value); return new JniValueMarshalerState (r); @@ -413,7 +414,7 @@ sealed class JniNullableSByteValueMarshaler : JniValueMarshaler { return JniByte.GetValueFromJni (ref reference, options, targetType: null); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (SByte? value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] SByte? value, ParameterAttributes synchronize) { if (!value.HasValue) return new JniValueMarshalerState (); @@ -487,12 +488,12 @@ public override Char CreateGenericValue (ref JniObjectReference reference, JniOb return JniCharacter.GetValueFromJni (ref reference, options, targetType); } - public override JniValueMarshalerState CreateGenericArgumentState (Char value, ParameterAttributes synchronize = ParameterAttributes.In) + public override JniValueMarshalerState CreateGenericArgumentState ([MaybeNull] Char value, ParameterAttributes synchronize = ParameterAttributes.In) { return new JniValueMarshalerState (new JniArgumentValue (value)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Char value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Char value, ParameterAttributes synchronize) { var r = JniCharacter.CreateLocalRef (value); return new JniValueMarshalerState (r); @@ -540,7 +541,7 @@ sealed class JniNullableCharValueMarshaler : JniValueMarshaler { return JniCharacter.GetValueFromJni (ref reference, options, targetType: null); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Char? value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Char? value, ParameterAttributes synchronize) { if (!value.HasValue) return new JniValueMarshalerState (); @@ -614,12 +615,12 @@ public override Int16 CreateGenericValue (ref JniObjectReference reference, JniO return JniShort.GetValueFromJni (ref reference, options, targetType); } - public override JniValueMarshalerState CreateGenericArgumentState (Int16 value, ParameterAttributes synchronize = ParameterAttributes.In) + public override JniValueMarshalerState CreateGenericArgumentState ([MaybeNull] Int16 value, ParameterAttributes synchronize = ParameterAttributes.In) { return new JniValueMarshalerState (new JniArgumentValue (value)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Int16 value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Int16 value, ParameterAttributes synchronize) { var r = JniShort.CreateLocalRef (value); return new JniValueMarshalerState (r); @@ -667,7 +668,7 @@ sealed class JniNullableInt16ValueMarshaler : JniValueMarshaler { return JniShort.GetValueFromJni (ref reference, options, targetType: null); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Int16? value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Int16? value, ParameterAttributes synchronize) { if (!value.HasValue) return new JniValueMarshalerState (); @@ -741,12 +742,12 @@ public override Int32 CreateGenericValue (ref JniObjectReference reference, JniO return JniInteger.GetValueFromJni (ref reference, options, targetType); } - public override JniValueMarshalerState CreateGenericArgumentState (Int32 value, ParameterAttributes synchronize = ParameterAttributes.In) + public override JniValueMarshalerState CreateGenericArgumentState ([MaybeNull] Int32 value, ParameterAttributes synchronize = ParameterAttributes.In) { return new JniValueMarshalerState (new JniArgumentValue (value)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Int32 value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Int32 value, ParameterAttributes synchronize) { var r = JniInteger.CreateLocalRef (value); return new JniValueMarshalerState (r); @@ -794,7 +795,7 @@ sealed class JniNullableInt32ValueMarshaler : JniValueMarshaler { return JniInteger.GetValueFromJni (ref reference, options, targetType: null); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Int32? value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Int32? value, ParameterAttributes synchronize) { if (!value.HasValue) return new JniValueMarshalerState (); @@ -868,12 +869,12 @@ public override Int64 CreateGenericValue (ref JniObjectReference reference, JniO return JniLong.GetValueFromJni (ref reference, options, targetType); } - public override JniValueMarshalerState CreateGenericArgumentState (Int64 value, ParameterAttributes synchronize = ParameterAttributes.In) + public override JniValueMarshalerState CreateGenericArgumentState ([MaybeNull] Int64 value, ParameterAttributes synchronize = ParameterAttributes.In) { return new JniValueMarshalerState (new JniArgumentValue (value)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Int64 value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Int64 value, ParameterAttributes synchronize) { var r = JniLong.CreateLocalRef (value); return new JniValueMarshalerState (r); @@ -921,7 +922,7 @@ sealed class JniNullableInt64ValueMarshaler : JniValueMarshaler { return JniLong.GetValueFromJni (ref reference, options, targetType: null); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Int64? value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Int64? value, ParameterAttributes synchronize) { if (!value.HasValue) return new JniValueMarshalerState (); @@ -995,12 +996,12 @@ public override Single CreateGenericValue (ref JniObjectReference reference, Jni return JniFloat.GetValueFromJni (ref reference, options, targetType); } - public override JniValueMarshalerState CreateGenericArgumentState (Single value, ParameterAttributes synchronize = ParameterAttributes.In) + public override JniValueMarshalerState CreateGenericArgumentState ([MaybeNull] Single value, ParameterAttributes synchronize = ParameterAttributes.In) { return new JniValueMarshalerState (new JniArgumentValue (value)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Single value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Single value, ParameterAttributes synchronize) { var r = JniFloat.CreateLocalRef (value); return new JniValueMarshalerState (r); @@ -1048,7 +1049,7 @@ sealed class JniNullableSingleValueMarshaler : JniValueMarshaler { return JniFloat.GetValueFromJni (ref reference, options, targetType: null); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Single? value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Single? value, ParameterAttributes synchronize) { if (!value.HasValue) return new JniValueMarshalerState (); @@ -1122,12 +1123,12 @@ public override Double CreateGenericValue (ref JniObjectReference reference, Jni return JniDouble.GetValueFromJni (ref reference, options, targetType); } - public override JniValueMarshalerState CreateGenericArgumentState (Double value, ParameterAttributes synchronize = ParameterAttributes.In) + public override JniValueMarshalerState CreateGenericArgumentState ([MaybeNull] Double value, ParameterAttributes synchronize = ParameterAttributes.In) { return new JniValueMarshalerState (new JniArgumentValue (value)); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Double value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Double value, ParameterAttributes synchronize) { var r = JniDouble.CreateLocalRef (value); return new JniValueMarshalerState (r); @@ -1175,7 +1176,7 @@ sealed class JniNullableDoubleValueMarshaler : JniValueMarshaler { return JniDouble.GetValueFromJni (ref reference, options, targetType: null); } - public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState (Double? value, ParameterAttributes synchronize) + public override JniValueMarshalerState CreateGenericObjectReferenceArgumentState ([MaybeNull] Double? value, ParameterAttributes synchronize) { if (!value.HasValue) return new JniValueMarshalerState (); diff --git a/src/Java.Interop/Java.Interop/JniEnvironment.cs b/src/Java.Interop/Java.Interop/JniEnvironment.cs index 452c5702a..a577ecfdd 100644 --- a/src/Java.Interop/Java.Interop/JniEnvironment.cs +++ b/src/Java.Interop/Java.Interop/JniEnvironment.cs @@ -17,7 +17,7 @@ public static partial class JniEnvironment { internal static JniEnvironmentInfo CurrentInfo { [MethodImpl (MethodImplOptions.AggressiveInlining)] get { - var e = Info.Value; + var e = Info.Value!; if (!e.IsValid) throw new NotSupportedException ("JNI Environment Information has been invalidated on this thread."); return e; @@ -243,7 +243,7 @@ internal JniEnvironmentInfo (IntPtr environmentPointer, JniRuntime runtime) internal unsafe JniObjectReference ToJavaName (string jniTypeName) { - int index = jniTypeName.IndexOf ('/'); + int index = jniTypeName.IndexOf ("/", StringComparison.Ordinal); if (index == -1) return JniEnvironment.Strings.NewString (jniTypeName); diff --git a/src/Java.Interop/Java.Interop/JniObjectReference.cs b/src/Java.Interop/Java.Interop/JniObjectReference.cs index 9475fd83a..cb92a8364 100644 --- a/src/Java.Interop/Java.Interop/JniObjectReference.cs +++ b/src/Java.Interop/Java.Interop/JniObjectReference.cs @@ -106,7 +106,7 @@ public override int GetHashCode () return Handle.GetHashCode (); } - public override bool Equals (object obj) + public override bool Equals (object? obj) { var o = obj as JniObjectReference?; if (o.HasValue) diff --git a/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceFields.cs b/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceFields.cs index b5c7f610e..e0a5ae40d 100644 --- a/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceFields.cs +++ b/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceFields.cs @@ -25,8 +25,7 @@ internal void Dispose () public JniFieldInfo GetFieldInfo (string encodedMember) { lock (InstanceFields) { - JniFieldInfo f; - if (!InstanceFields.TryGetValue (encodedMember, out f)) { + if (!InstanceFields.TryGetValue (encodedMember, out var f)) { string field, signature; JniPeerMembers.GetNameAndSignature (encodedMember, out field, out signature); f = Members.JniPeerType.GetInstanceField (field, signature); diff --git a/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods.cs b/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods.cs index 27eeb0351..be18a9c7b 100644 --- a/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods.cs +++ b/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods.cs @@ -59,8 +59,7 @@ public JniMethodInfo GetConstructor (string signature) if (signature == null) throw new ArgumentNullException (nameof (signature)); lock (InstanceMethods) { - JniMethodInfo m; - if (!InstanceMethods.TryGetValue (signature, out m)) { + if (!InstanceMethods.TryGetValue (signature, out var m)) { m = JniPeerType.GetConstructor (signature); InstanceMethods.Add (signature, m); } @@ -73,21 +72,19 @@ internal JniInstanceMethods GetConstructorsForType (Type declaringType) if (declaringType == DeclaringType) return this; - JniInstanceMethods methods; lock (SubclassConstructors) { - if (!SubclassConstructors.TryGetValue (declaringType, out methods)) { + if (!SubclassConstructors.TryGetValue (declaringType, out var methods)) { methods = new JniInstanceMethods (declaringType); SubclassConstructors.Add (declaringType, methods); } + return methods; } - return methods; } public JniMethodInfo GetMethodInfo (string encodedMember) { lock (InstanceMethods) { - JniMethodInfo m; - if (!InstanceMethods.TryGetValue (encodedMember, out m)) { + if (!InstanceMethods.TryGetValue (encodedMember, out var m)) { string method, signature; JniPeerMembers.GetNameAndSignature (encodedMember, out method, out signature); m = JniPeerType.GetInstanceMethod (method, signature); diff --git a/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticFields.cs b/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticFields.cs index 1ef5cae34..7fe131b62 100644 --- a/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticFields.cs +++ b/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticFields.cs @@ -20,8 +20,7 @@ internal JniStaticFields (JniPeerMembers members) public JniFieldInfo GetFieldInfo (string encodedMember) { lock (StaticFields) { - JniFieldInfo f; - if (!StaticFields.TryGetValue (encodedMember, out f)) { + if (!StaticFields.TryGetValue (encodedMember, out var f)) { string field, signature; JniPeerMembers.GetNameAndSignature (encodedMember, out field, out signature); f = Members.JniPeerType.GetStaticField (field, signature); diff --git a/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs b/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs index bddfb5a9a..7218668af 100644 --- a/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs +++ b/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs @@ -25,8 +25,7 @@ internal void Dispose () public JniMethodInfo GetMethodInfo (string encodedMember) { lock (StaticMethods) { - JniMethodInfo m; - if (!StaticMethods.TryGetValue (encodedMember, out m)) { + if (!StaticMethods.TryGetValue (encodedMember, out var m)) { string method, signature; JniPeerMembers.GetNameAndSignature (encodedMember, out method, out signature); m = Members.JniPeerType.GetStaticMethod (method, signature); diff --git a/src/Java.Interop/Java.Interop/JniPeerMembers.cs b/src/Java.Interop/Java.Interop/JniPeerMembers.cs index fc1db691c..52c8f24c2 100644 --- a/src/Java.Interop/Java.Interop/JniPeerMembers.cs +++ b/src/Java.Interop/Java.Interop/JniPeerMembers.cs @@ -172,7 +172,7 @@ internal static int GetSignatureSeparatorIndex (string encodedMember) { if (encodedMember == null) throw new ArgumentNullException (nameof (encodedMember)); - int n = encodedMember.IndexOf ('.'); + int n = encodedMember.IndexOf (".", StringComparison.Ordinal); if (n < 0) throw new ArgumentException ( "Invalid encoding; 'encodedMember' should be encoded as \".\".", diff --git a/src/Java.Interop/Java.Interop/JniRuntime.JniMarshalMemberBuilder.cs b/src/Java.Interop/Java.Interop/JniRuntime.JniMarshalMemberBuilder.cs index 909184bb0..87466597e 100644 --- a/src/Java.Interop/Java.Interop/JniRuntime.JniMarshalMemberBuilder.cs +++ b/src/Java.Interop/Java.Interop/JniRuntime.JniMarshalMemberBuilder.cs @@ -48,7 +48,7 @@ partial void SetMarshalMemberBuilder (CreationOptions options) var t = jie.GetType ("Java.Interop.MarshalMemberBuilder"); if (t == null) throw new InvalidOperationException ("Could not find Java.Interop.MarshalMemberBuilder from Java.Interop.Export.dll!"); - var b = (JniMarshalMemberBuilder) Activator.CreateInstance (t); + var b = (JniMarshalMemberBuilder) Activator.CreateInstance (t)!; marshalMemberBuilder = SetRuntime (b); } @@ -155,7 +155,7 @@ public JniValueMarshaler GetParameterMarshaler (ParameterInfo parameter) attr = null; } if (attr != null) { - return (JniValueMarshaler) Activator.CreateInstance (attr.MarshalerType); + return (JniValueMarshaler) Activator.CreateInstance (attr.MarshalerType)!; } return Runtime.ValueManager.GetValueMarshaler (parameter.ParameterType); } diff --git a/src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs b/src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs index 41d8ba07e..1dd3fd1ac 100644 --- a/src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs +++ b/src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs @@ -145,7 +145,7 @@ static Type GetUnderlyingType (Type type, out int rank) if (type.IsArray && type.GetArrayRank () > 1) throw new ArgumentException ("Multidimensional array '" + originalType.FullName + "' is not supported.", nameof (type)); rank++; - type = type.GetElementType (); + type = type.GetElementType ()!; } if (type.IsEnum) @@ -232,7 +232,7 @@ protected virtual IEnumerable GetTypesForSimpleReference (string jniSimple if (jniSimpleReference == null) throw new ArgumentNullException (nameof (jniSimpleReference)); - if (jniSimpleReference != null && jniSimpleReference.Contains (".")) + if (jniSimpleReference != null && jniSimpleReference.IndexOf (".", StringComparison.Ordinal) >= 0) throw new ArgumentException ("JNI type names do not contain '.', they use '/'. Are you sure you're using a JNI type name?", nameof (jniSimpleReference)); if (jniSimpleReference != null && jniSimpleReference.StartsWith ("[", StringComparison.Ordinal)) throw new ArgumentException ("Only simplified type references are supported.", nameof (jniSimpleReference)); @@ -245,7 +245,7 @@ protected virtual IEnumerable GetTypesForSimpleReference (string jniSimple IEnumerable CreateGetTypesForSimpleReferenceEnumerator (string jniSimpleReference) { - if (JniBuiltinSimpleReferenceToType.Value.TryGetValue (jniSimpleReference, out Type ret)) { + if (JniBuiltinSimpleReferenceToType.Value.TryGetValue (jniSimpleReference, out var ret)) { yield return ret; } yield break; diff --git a/src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs b/src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs index b344c0b2b..d028c4fbd 100644 --- a/src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs +++ b/src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs @@ -496,8 +496,7 @@ public JniValueMarshaler GetValueMarshaler() if (r != null) return r; lock (Marshalers) { - JniValueMarshaler d; - if (!Marshalers.TryGetValue (typeof (T), out d)) + if (!Marshalers.TryGetValue (typeof (T), out var d)) Marshalers.Add (typeof (T), d = new DelegatingValueMarshaler (m)); return (JniValueMarshaler) d; } @@ -515,7 +514,7 @@ public JniValueMarshaler GetValueMarshaler (Type type) var marshalerAttr = type.GetCustomAttribute (); if (marshalerAttr != null) - return (JniValueMarshaler) Activator.CreateInstance (marshalerAttr.MarshalerType); + return (JniValueMarshaler) Activator.CreateInstance (marshalerAttr.MarshalerType)!; if (typeof (IJavaPeerable) == type) return JavaPeerableValueMarshaler.Instance; @@ -561,7 +560,7 @@ public JniValueMarshaler GetValueMarshaler (Type type) } } if (ifaceAttribute != null) - return (JniValueMarshaler) Activator.CreateInstance (ifaceAttribute.MarshalerType); + return (JniValueMarshaler) Activator.CreateInstance (ifaceAttribute.MarshalerType)!; return GetValueMarshalerCore (type); } diff --git a/src/Java.Interop/Java.Interop/JniRuntime.cs b/src/Java.Interop/Java.Interop/JniRuntime.cs index 6de9021a7..d61bd172a 100644 --- a/src/Java.Interop/Java.Interop/JniRuntime.cs +++ b/src/Java.Interop/Java.Interop/JniRuntime.cs @@ -101,9 +101,8 @@ public static IEnumerable GetRegisteredRuntimes () public static JniRuntime? GetRegisteredRuntime (IntPtr invocationPointer) { - JniRuntime vm; lock (Runtimes) { - return Runtimes.TryGetValue (invocationPointer, out vm) + return Runtimes.TryGetValue (invocationPointer, out var vm) ? vm : null; } @@ -270,7 +269,7 @@ T SetRuntime (T value) static unsafe JavaVMInterface CreateInvoker (IntPtr handle) { IntPtr p = Marshal.ReadIntPtr (handle); - return (JavaVMInterface) Marshal.PtrToStructure (p, typeof (JavaVMInterface)); + return (JavaVMInterface) Marshal.PtrToStructure (p, typeof (JavaVMInterface))!; } ~JniRuntime () @@ -291,7 +290,11 @@ static unsafe JavaVMInterface CreateInvoker (IntPtr handle) public virtual void FailFast (string? message) { var m = typeof (Environment).GetMethod ("FailFast"); - m.Invoke (null, new object?[]{ message }); + + if (m is null) + Environment.Exit (1); + + m!.Invoke (null, new object?[]{ message }); } public override string ToString () @@ -411,15 +414,13 @@ internal void Track (JniType value) internal void UnTrack (IntPtr key) { - IDisposable _; - TrackedInstances.TryRemove (key, out _); + TrackedInstances.TryRemove (key, out var _); } void ClearTrackedReferences () { foreach (var k in TrackedInstances.Keys.ToList ()) { - IDisposable d; - if (TrackedInstances.TryRemove (k, out d)) + if (TrackedInstances.TryRemove (k, out var d)) d.Dispose (); } TrackedInstances.Clear (); diff --git a/src/Java.Interop/Java.Interop/JniTypeSignature.cs b/src/Java.Interop/Java.Interop/JniTypeSignature.cs index c72c2a9c5..e7edb7b07 100644 --- a/src/Java.Interop/Java.Interop/JniTypeSignature.cs +++ b/src/Java.Interop/Java.Interop/JniTypeSignature.cs @@ -43,7 +43,7 @@ public string Name { public JniTypeSignature (string? simpleReference, int arrayRank = 0, bool keyword = false) { if (simpleReference != null) { - if (simpleReference.Contains (".")) + if (simpleReference.IndexOf (".", StringComparison.Ordinal) >= 0) throw new ArgumentException ("JNI type names do not contain '.', they use '/'. Are you sure you're using a JNI type name?", nameof (simpleReference)); if (simpleReference.StartsWith ("[", StringComparison.Ordinal)) throw new ArgumentException ("To specify an array, use the ArrayRank property.", nameof (simpleReference)); @@ -172,10 +172,14 @@ public static bool TryParse (string signature, [NotNullWhen (true)] out JniTypeS public override int GetHashCode () { +#if NETCOREAPP + return QualifiedReference.GetHashCode (StringComparison.Ordinal); +#else return QualifiedReference.GetHashCode (); +#endif } - public override bool Equals (object obj) + public override bool Equals (object? obj) { var v = obj as JniTypeSignature?; if (v.HasValue) diff --git a/src/Java.Interop/Java.Interop/JniTypeSignatureAttribute.cs b/src/Java.Interop/Java.Interop/JniTypeSignatureAttribute.cs index 7814d12d0..6ae3fac1f 100644 --- a/src/Java.Interop/Java.Interop/JniTypeSignatureAttribute.cs +++ b/src/Java.Interop/Java.Interop/JniTypeSignatureAttribute.cs @@ -13,7 +13,7 @@ public JniTypeSignatureAttribute (string simpleReference) { if (simpleReference == null) throw new ArgumentNullException (nameof (simpleReference)); - if (simpleReference.Contains (".")) + if (simpleReference.IndexOf (".", StringComparison.Ordinal) >= 0) throw new ArgumentException ("JNI type names do not contain '.', they use '/'. Are you sure you're using a JNI type name?", nameof (simpleReference)); if (simpleReference.StartsWith ("[", StringComparison.Ordinal)) throw new ArgumentException ("Arrays cannot be present in simple type references.", nameof (simpleReference)); diff --git a/src/Java.Interop/Java.Interop/JniValueMarshaler.cs b/src/Java.Interop/Java.Interop/JniValueMarshaler.cs index 48d554c3b..89d284fa4 100644 --- a/src/Java.Interop/Java.Interop/JniValueMarshaler.cs +++ b/src/Java.Interop/Java.Interop/JniValueMarshaler.cs @@ -110,7 +110,7 @@ public override string ToString () return string.Format ("JniValueMarshalerState({0}, ReferenceValue={1}, PeerableValue=0x{2}, Extra={3})", JniArgumentValue.ToString (), ReferenceValue.ToString (), - RuntimeHelpers.GetHashCode (PeerableValue).ToString ("x"), + RuntimeHelpers.GetHashCode (PeerableValue!).ToString ("x"), Extra); } } diff --git a/src/Java.Interop/Java.Interop/ManagedPeer.cs b/src/Java.Interop/Java.Interop/ManagedPeer.cs index 71f591754..121e11c87 100644 --- a/src/Java.Interop/Java.Interop/ManagedPeer.cs +++ b/src/Java.Interop/Java.Interop/ManagedPeer.cs @@ -84,7 +84,7 @@ static void Construct ( return; } - var type = Type.GetType (JniEnvironment.Strings.ToString (n_assemblyQualifiedName), throwOnError: true); + var type = Type.GetType (JniEnvironment.Strings.ToString (n_assemblyQualifiedName)!, throwOnError: true)!; if (type.IsGenericTypeDefinition) { throw new NotSupportedException ( "Constructing instances of generic types from Java is not supported, as the type parameters cannot be determined.", @@ -157,7 +157,7 @@ static Type[] GetParameterTypes (string? signature) var typeNames = signature!.Split (':'); var ptypes = new Type [typeNames.Length]; for (int i = 0; i < typeNames.Length; i++) - ptypes [i] = Type.GetType (typeNames [i], throwOnError:true); + ptypes [i] = Type.GetType (typeNames [i], throwOnError:true)!; return ptypes; } @@ -196,7 +196,7 @@ static void RegisterNativeMembers ( var assemblyQualifiedName = JniEnvironment.Strings.ToString (new JniObjectReference (n_assemblyQualifiedName)); var methods = JniEnvironment.Strings.ToString (new JniObjectReference (n_methods)); - var type = Type.GetType (assemblyQualifiedName, throwOnError: true); + var type = Type.GetType (assemblyQualifiedName!, throwOnError: true)!; JniEnvironment.Runtime.TypeManager.RegisterNativeMembers (nativeClass, type, methods); } diff --git a/tools/jnimarshalmethod-gen/App.cs b/tools/jnimarshalmethod-gen/App.cs index d752a1c04..793251eb1 100644 --- a/tools/jnimarshalmethod-gen/App.cs +++ b/tools/jnimarshalmethod-gen/App.cs @@ -174,7 +174,7 @@ void ProcessAssemblies (List assemblies) foreach (var r in references) { try { Assembly.LoadFile (Path.GetFullPath (r)); - } catch (Exception e) { + } catch (Exception) { Error ($"Unable to preload reference '{r}'."); Environment.Exit (1); }