Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tests/Java.Interop-Tests/Java.Interop-Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
</PropertyGroup>

<Import Project="..\..\TargetFrameworkDependentValues.props" />
<Import Project="..\..\build-tools\trim-analyzers\trim-analyzers.props" />

<PropertyGroup>
<OutputPath>$(TestOutputFullPath)</OutputPath>
Expand Down
4 changes: 1 addition & 3 deletions tests/Java.Interop-Tests/Java.Interop/JavaExceptionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,7 @@ public void InnerExceptionIsNotAProxy ()

static JavaException CreateJavaProxyThrowable (Exception value)
{
var JavaProxyThrowable_type = typeof(JavaObject)
.Assembly
.GetType ("Java.Interop.JavaProxyThrowable", throwOnError :true);
var JavaProxyThrowable_type = Type.GetType ("Java.Interop.JavaProxyThrowable, Java.Interop", throwOnError :true);
var proxy = (JavaException) Activator.CreateInstance (JavaProxyThrowable_type, value);
return proxy;
}
Expand Down
6 changes: 5 additions & 1 deletion tests/Java.Interop-Tests/Java.Interop/JavaObjectArrayTest.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;

using Java.Interop;
Expand All @@ -8,7 +9,10 @@

namespace Java.InteropTests
{
public abstract class JavaObjectArrayContractTest<T> : JavaArrayContract<T>
public abstract class JavaObjectArrayContractTest<
[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
T
> : JavaArrayContract<T>
{
protected override System.Collections.Generic.ICollection<T> CreateCollection (System.Collections.Generic.IEnumerable<T> values)
{
Expand Down
6 changes: 4 additions & 2 deletions tests/Java.Interop-Tests/Java.Interop/JniEnvironmentTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;

using Java.Interop;
Expand Down Expand Up @@ -88,9 +89,10 @@ public void References_CreatedReference_LocalRef ()
}
}

[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.All)]
static readonly Type NativeMethods_type =
typeof (JniEnvironment).Assembly.GetType ("Java.Interop.NativeMethods", throwOnError: false) ??
typeof (JniEnvironment).Assembly.GetType ("Java.Interop.JIPinvokes.NativeMethods", throwOnError: false);
Type.GetType ("Java.Interop.NativeMethods, Java.Interop", throwOnError: false) ??
Type.GetType ("Java.Interop.JIPinvokes.NativeMethods, Java.Interop", throwOnError: false);

static Func<IntPtr, IntPtr, IntPtr> GetNewRefFunc (string method)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection;
using System.Threading;
Expand All @@ -19,6 +20,7 @@ namespace Java.InteropTests {
#endif // !__ANDROID__
public abstract class JniRuntimeJniValueManagerContract : JavaVMFixture {

[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
protected abstract Type ValueManagerType {
get;
}
Expand Down Expand Up @@ -296,8 +298,12 @@ static string DumpPeers (IEnumerable<JniSurfacedPeerInfo> peers)
// Adding an instance already added in a previous scope?
}

public abstract class JniRuntimeJniValueManagerContract<T> : JniRuntimeJniValueManagerContract {

public abstract class JniRuntimeJniValueManagerContract<
[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
T
> : JniRuntimeJniValueManagerContract
{
[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
protected override Type ValueManagerType => typeof (T);
}

Expand All @@ -313,8 +319,10 @@ public class JniRuntimeJniValueManagerContract_Mono : JniRuntimeJniValueManagerC

[TestFixture]
public class JniRuntimeJniValueManagerContract_NoGCIntegration : JniRuntimeJniValueManagerContract {
[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
static Type ManagedValueManagerType = Type.GetType ("Java.Interop.ManagedValueManager, Java.Runtime.Environment", throwOnError:true)!;

[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
protected override Type ValueManagerType => ManagedValueManagerType;
}
#endif // !__ANDROID__
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
Expand All @@ -13,7 +14,11 @@

namespace Java.InteropTests {

public abstract class JniValueMarshalerContractTests<T> : JavaVMFixture {
public abstract class JniValueMarshalerContractTests<
[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
T
> : JavaVMFixture
{

protected abstract T Value {get;}

Expand Down Expand Up @@ -211,6 +216,8 @@ public void DestroyGenericArgumentState ()
}

[Test]
[RequiresUnreferencedCode ("CreateReturnValueFromManagedExpression")]
[RequiresDynamicCode ("CreateReturnValueFromManagedExpression")]
public void CreateReturnValueFromManagedExpression ()
{
var runtime = Expression.Variable (typeof (JniRuntime), "__jvm");
Expand Down Expand Up @@ -335,7 +342,11 @@ protected override string GetExpectedReturnValueFromManagedExpression (string jv
}
}

public abstract class JniValueMarshaler_BuiltinType_ContractTests<T> : JniValueMarshalerContractTests<T> {
public abstract class JniValueMarshaler_BuiltinType_ContractTests<
[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
T
> : JniValueMarshalerContractTests<T>
{
protected override bool IsJniValueType {get {return true;}}

protected override string GetExpectedReturnValueFromManagedExpression (string jvm, string value, Expression ret)
Expand Down Expand Up @@ -442,8 +453,11 @@ public class JniValueMarshaler_NullableDouble_ContractTests : JniValueMarshalerC
protected override double? Value {get {return 8D;}}
}

public abstract class JniInt32ArrayValueMarshalerContractTests<T> : JniValueMarshalerContractTests<T>
where T : IEnumerable<int>
public abstract class JniInt32ArrayValueMarshalerContractTests<
[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]
T
> : JniValueMarshalerContractTests<T>
where T : IEnumerable<int>
{
protected abstract T CreateArray (int[] values);
protected abstract string ValueMarshalerSourceType {get;}
Expand Down Expand Up @@ -647,7 +661,11 @@ public DemoValueTypeValueMarshaler ()
Int32Marshaler = JniRuntime.CurrentRuntime.ValueManager.GetValueMarshaler<int> ();
}

public override DemoValueType CreateGenericValue (ref JniObjectReference reference, JniObjectReferenceOptions options, Type targetType)
public override DemoValueType CreateGenericValue (
ref JniObjectReference reference,
JniObjectReferenceOptions options,
[DynamicallyAccessedMembers (Constructors)]
Copy link

Copilot AI Mar 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The attribute value 'Constructors' is not a valid member of DynamicallyAccessedMemberTypes. Consider using 'DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors' instead.

Suggested change
[DynamicallyAccessedMembers (Constructors)]
[DynamicallyAccessedMembers (DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)]

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is from:

public abstract class JniValueMarshaler {
internal const DynamicallyAccessedMemberTypes Constructors = DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors;

It couldn't be used in the other places.

Type targetType)
{
var v = Int32Marshaler.CreateGenericValue (ref reference, options, typeof (int));
return new DemoValueType (v);
Expand Down