diff --git a/src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs b/src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs index 273256fc8..22055675b 100644 --- a/src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs +++ b/src/Java.Interop/Java.Interop/JniRuntime.JniTypeManager.cs @@ -176,7 +176,7 @@ protected virtual IEnumerable GetSimpleReferences (Type type) static readonly Type[] EmptyTypeArray = Array.Empty (); - public Type GetType (JniTypeSignature typeSignature) + public Type? GetType (JniTypeSignature typeSignature) { AssertValid (); diff --git a/src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs b/src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs index 03ac65994..a233ac81a 100644 --- a/src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs +++ b/src/Java.Interop/Java.Interop/JniRuntime.JniValueManager.cs @@ -333,7 +333,7 @@ static Type GetPeerType (Type type) return GetActivationConstructor (fallbackType); } - static ConstructorInfo GetActivationConstructor (Type type) + static ConstructorInfo? GetActivationConstructor (Type type) { return (from c in type.GetConstructors (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) @@ -675,6 +675,8 @@ public override Expression CreateReturnValueFromManagedExpression (JniValueMarsh public override Expression CreateParameterToManagedExpression (JniValueMarshalerContext context, ParameterExpression sourceValue, ParameterAttributes synchronize, Type? targetType) { + targetType ??= typeof (object); + var r = Expression.Variable (targetType, sourceValue.Name + "_val"); context.LocalVariables.Add (r); context.CreationStatements.Add ( diff --git a/src/Java.Interop/Java.Interop/JniStringValueMarshaler.cs b/src/Java.Interop/Java.Interop/JniStringValueMarshaler.cs index 8692639b7..e16e00886 100644 --- a/src/Java.Interop/Java.Interop/JniStringValueMarshaler.cs +++ b/src/Java.Interop/Java.Interop/JniStringValueMarshaler.cs @@ -61,6 +61,8 @@ public override Expression CreateParameterToManagedExpression (JniValueMarshaler { Func m = JniEnvironment.Strings.ToString; + targetType ??= typeof (object); + var value = Expression.Variable (targetType, sourceValue.Name + "_val"); context.LocalVariables.Add (value); context.CreationStatements.Add (Expression.Assign (value, Expression.Call (m.GetMethodInfo (), sourceValue))); diff --git a/src/Java.Interop/Java.Interop/JniValueMarshaler.cs b/src/Java.Interop/Java.Interop/JniValueMarshaler.cs index 89d284fa4..e703b447f 100644 --- a/src/Java.Interop/Java.Interop/JniValueMarshaler.cs +++ b/src/Java.Interop/Java.Interop/JniValueMarshaler.cs @@ -15,7 +15,7 @@ sealed class VariableCollection : KeyedCollection { protected override string GetKeyForItem (ParameterExpression item) { - return item.Name; + return item.Name!; } } @@ -169,7 +169,7 @@ public virtual Expression CreateReturnValueFromManagedExpressi return ReturnObjectReferenceToJni (context, sourceValue.Name, Expression.Property (s, "ReferenceValue")); } - protected Expression ReturnObjectReferenceToJni (JniValueMarshalerContext context, string namePrefix, Expression sourceValue) + protected Expression ReturnObjectReferenceToJni (JniValueMarshalerContext context, string? namePrefix, Expression sourceValue) { Func m = JniEnvironment.References.NewReturnToJniRef; var r = Expression.Variable (MarshalType, namePrefix + "_rtn");