Skip to content

Commit

Permalink
Bump to xamarin/Java.Interop/master@fdc200cc (dotnet#5468)
Browse files Browse the repository at this point in the history
Fixes: dotnet/java-interop#767

Changes: dotnet/java-interop@7574f16...fdc200c

  * dotnet/java-interop@fdc200cc: [Xamarin.Android.Tools.Bytecode] Relax _ApiXml check (dotnet#772)
  * dotnet/java-interop@f1b93653: [generator] Change generated code to not emit CA1305 warning. (dotnet#771)
  * dotnet/java-interop@2244407d: [generator] Ensure DIM from assembly refs are correctly marked (dotnet#770)
  * dotnet/java-interop@da73d6a5: [Java.Interop] Prevent premature collection w/ JniInstance* (dotnet#768)

Commit a7413a2 added support for invoking `java-source-utils.jar`
on `@(JavaSourceJar)` to extract Javadoc comments and translate them
into C# XML Documentation Comments.

What this can *also* do is provide correct parameter names.
As of commit a7413a2, the `BindingBuildTest.JavaSourceJar()`
integration test would emit the warning:

	obj/Debug/generated/src/Com.Xamarin.Android.Test.Msbuildtest.JavaSourceJarTest.cs(75,20):
	warning CS1572: XML comment has a param tag for 'name', but there is no parameter by that name

Commit dotnet/java-interop@fdc200cc allows `java-source-utils.jar`
output to be used with `class-parse`, allowing
`@(_JavaSourceJavadocXml)` files -- the output of
`java-source-utils.jar` -- to be included in
`@(_AndroidDocumentationPath)`.

This allows `@(JavaSourceJar)` files to provide parameter names
within bindings, removing the CS1572 warning, and making for
better overall bindings.

We can see the benefits of this change in
`tests/CodeGen-Binding/Xamarin.Android.JcwGen-Tests/BindingTests.cs`,
which required changes because the parameter names in the Java
`DataListener.onDataReceived()` method could now be determined;
previously they couldn't, resulting in the `P0`/`P1`/etc. names.
With the provision of `@(JavaSourceJar)` -- a7413a2 updated
`Xamarin.Android.McwGen-Tests.csproj` to have `@(JavaSourceJar)` --
the parameter names can now be determined, improving the binding.
  • Loading branch information
jonpryor authored Jan 7, 2021
1 parent 66f7206 commit 0e95ec7
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 10 deletions.
2 changes: 1 addition & 1 deletion external/Java.Interop
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ This file is only used by binding projects.
Outputs="$(ApiOutputFile)">

<ItemGroup>
<!-- TODO: add when `ClassPath` supports `<api api-source="java-source-utils">`
<_AndroidDocumentationPath Include="@(_JavaSourceJavadocXml)" />
-->
<_AndroidDocumentationPath Include="@(JavaDocIndex->'%(RootDir)\%(Directory)')" />
<_AndroidDocumentationPath Include="$(JavaDocPaths)" />
<_AndroidDocumentationPath Include="$(Java7DocPaths)" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,14 @@ public void Arrays ()
{
using (var dh = new Com.Xamarin.Android.DataHandler ()) {
EventHandler<Com.Xamarin.Android.DataEventArgs> h = (o, e) => {
Assert.AreEqual ("fromNode", e.P0);
Assert.AreEqual ("fromChannel", e.P1);
Assert.AreEqual ("payloadType", e.P2);
for (int i = 0; i < e.P3.Length; ++i) {
for (int j = 0; j < e.P3 [i].Length; ++j) {
Assert.AreEqual ("fromNode", e.FromNode);
Assert.AreEqual ("fromChannel", e.FromChannel);
Assert.AreEqual ("payloadType", e.PayloadType);
for (int i = 0; i < e.Payload.Length; ++i) {
for (int j = 0; j < e.Payload [i].Length; ++j) {
byte expected = (byte) (((i+1)*10) + (j+1));
Assert.AreEqual ((byte)(expected + 'J'), e.P3 [i][j]);
e.P3 [i][j] = expected;
Assert.AreEqual ((byte)(expected + 'J'), e.Payload [i][j]);
e.Payload [i][j] = expected;
}
}
};
Expand Down

0 comments on commit 0e95ec7

Please sign in to comment.