Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API O enumification #662

Merged
merged 18 commits into from
Aug 3, 2017
Merged

API O enumification #662

merged 18 commits into from
Aug 3, 2017

Conversation

atsushieno
Copy link
Contributor

No description provided.

@atsushieno
Copy link
Contributor Author

It actually depends on dotnet/java-interop#164 i.e. I don't care about [Interface] in methodmap.csv anymore.

@atsushieno atsushieno force-pushed the api-o-enumification branch 2 times, most recently from 82f6dae to 8631954 Compare June 23, 2017 04:16
@atsushieno atsushieno changed the title [DO-NOT-MERGE-YET] Api o enumification API O enumification Jun 23, 2017
@atsushieno
Copy link
Contributor Author

It is ready to be merged (with the required java.interop changes).

@atsushieno atsushieno force-pushed the api-o-enumification branch 2 times, most recently from 390dd77 to 3da80d8 Compare June 23, 2017 07:19
@jonpryor
Copy link
Member

(with the required java.interop changes)

What are the required Java.Interop changes? Is it support for static properties on interfaces?

@jonpryor
Copy link
Member

Please rebase atop commit db668ba or later, as that has some attempted fixes (or just checks!) around adb use. The failing macOS+xbuild PR Build failed because the entire build timed out, waiting for adb to connect:

Build timed out (after 600 minutes). Marking the build as aborted.

@jonpryor
Copy link
Member

Additionally, we need to investigate the ABI breakage.

@jonpryor jonpryor added the full-mono-integration-build For PRs; run a full build (~6-10h for mono bumps), not the faster PR subset (~2h for mono bumps) label Jun 27, 2017
@jonpryor
Copy link
Member

jonpryor commented Jun 27, 2017

Trying to build this PR locally, and (oddly) it doesn't build:

obj/Debug/android-26/mcw/Android.Views.ViewGroup.cs(10,92): error CS0535: 'ViewGroup' does not implement interface member 'IViewParent.KeyboardNavigationClusterSearch(View, int)'

That aside, the previously mentioned ABI breakage is still in effect: xamarin-android/src/Mono.Android/obj/Debug/android-26/mcw/Android.App.Activity.cs contains:

		public virtual unsafe Java.Lang.Object FindViewById (int id)

while API-25 contains:

		public virtual unsafe Android.Views.View FindViewById (int id)

Changing Android.Views.View to Java.Lang.Object is (1) an ABI break, and (2) completely wrong. API-26 updates Activity.findViewById() to add a type constraint:

    <T extends View> public T findViewById(int id);

@jonpryor
Copy link
Member

It actually depends on dotnet/java-interop#164

The referenced PR has been merged.

@atsushieno
Copy link
Contributor Author

You are supposed to fix your api-merge issue first.

@atsushieno atsushieno added the do-not-merge PR should not be merged. label Jun 27, 2017
@atsushieno
Copy link
Contributor Author

Marking as do-not-merge as api-merge needs to be fixed first.

@atsushieno atsushieno force-pushed the api-o-enumification branch from 4542667 to b98ad55 Compare July 4, 2017 14:08
@atsushieno atsushieno removed the do-not-merge PR should not be merged. label Jul 6, 2017
@atsushieno
Copy link
Contributor Author

Now there is nothing that blocks merging this. No fixes in api-merge or anything else, it is not worth. Just two lines in metadata does the required work.

@atsushieno atsushieno force-pushed the api-o-enumification branch from d3adeb5 to 0a0aa95 Compare July 6, 2017 08:17
@jonpryor
Copy link
Member

Please append 26 to $(STABLE_API_LEVELS) in build-tools/scripts/BuildEverything.mk so that we ensure that the new API-26 binding doesn't break API.

@atsushieno
Copy link
Contributor Author

atsushieno commented Jul 13, 2017

Since the commit messages can be gone after force updates, I'm copypasting the original text here.

Here is the list of the reported breaking changes:

Perceptible = <span class='removed removed-inline removed-breaking-inline'>130</span> <span class='added '>230</span>

Google changed the value!

public RemoteInput.Builder SetAllowFreeFormInput (bool <span class='removed removed-inline removed-breaking-inline'>allowFreeFormInput</span> <span class='added '>allowFreeFormTextInput</span>)

The bare parameter name changes that we already resolved as "renaming to the new name is the way what we do". api-diff most likely needs fix to not report this kind of changes.

<span class='removed removed-method breaking' data-is-breaking>public virtual void OnServiceAdded (ProfileState status, BluetoothGattService service);</span>

It is actually a bugfix: https://bugzilla.xamarin.com/show_bug.cgi?id=55473

public <span class='removed removed-inline removed-breaking-inline'>AdvertiseTx</span> <span class='added '>int</span> TxPowerLevel { get; }

It is also a bugfix for https://bugzilla.xamarin.com/show_bug.cgi?id=51293

public virtual Android.Database.ICursor Query (Android.Net.Uri <span class='removed removed-inline removed-breaking-inline'>url</span> <span class='added '>uri</span>, string[] projection, string selection, string[] selectionArgs, string sortOrder, Android.OS.CancellationSignal cancellationSignal)
public virtual void OnError (string <span class='removed removed-inline removed-breaking-inline'>itemId</span> <span class='added '>mediaId</span>)
public virtual bool EnableNetwork (int netId, bool <span class='removed removed-inline removed-breaking-inline'>disableOthers</span> <span class='added '>attemptConnect</span>)
public virtual SubscriptionInfo GetActiveSubscriptionInfoForSimSlotIndex (int <span class='removed removed-inline removed-breaking-inline'>slotIdx</span> <span class='added '>slotIndex</span>)
public virtual string GetDeviceId (int <span class='removed removed-inline removed-breaking-inline'>slotId</span> <span class='added '>slotIndex</span>)
public virtual void SetMaxEms (int <span class='removed removed-inline removed-breaking-inline'>maxems</span> <span class='added '>maxEms</span>)
public virtual void SetMaxHeight (int <span class='removed removed-inline removed-breaking-inline'>maxHeight</span> <span class='added '>maxPixels</span>)
(... and all those relevant methods on Android.Widget.TextView)
public bool IsAnnotationPresent (Class <span class='removed removed-inline removed-breaking-inline'>annotationType</span> <span class='added '>annotationClass</span>)
public bool IsAssignableFrom (Class <span class='removed removed-inline removed-breaking-inline'>c</span> <span class='added '>cls</span>)
public bool IsInstance (Object <span class='removed removed-inline removed-breaking-inline'>object</span> <span class='added '>obj</span>)
public virtual bool IsAnnotationPresent (Class <span class='removed removed-inline removed-breaking-inline'>annotationType</span> <span class='added '>annotationClass</span>)
public virtual void TraceInstructions (bool <span class='removed removed-inline removed-breaking-inline'>enable</span> <span class='added '>on</span>)
public virtual void TraceMethodCalls (bool <span class='removed removed-inline removed-breaking-inline'>enable</span> <span class='added '>on</span>)
public virtual bool IsAnnotationPresent (Java.Lang.Class <span class='removed removed-inline removed-breaking-inline'>annotationType</span> <span class='added '>annotationClass</span>)
public Java.Lang.Object NewInstance (Java.Lang.Object[] <span class='removed removed-inline removed-breaking-inline'>args</span> <span class='added '>initargs</span>)
public string GetDisplayScript (Locale <span class='removed removed-inline removed-breaking-inline'>locale</span> <span class='added '>inLocale</span>)
public string GetDisplayVariant (Locale <span class='removed removed-inline removed-breaking-inline'>locale</span> <span class='added '>inLocale</span>)
public virtual int NextInt (int <span class='removed removed-inline removed-breaking-inline'>n</span> <span class='added '>bound</span>)
public CopyOnWriteArrayList (Java.Lang.Object[] <span class='removed removed-inline removed-breaking-inline'>array</span> <span class='added '>toCopyIn</span>)
(... and all those lines in Java.Util.Concurrent.CopyOnWriteArrayList)

They are all parameter name fixes in Android API.

MaskFlags = <span class='removed removed-inline removed-breaking-inline'>4080</span> <span class='added '>65520</span>

Google changed the constant value here too. Well, it should.

    <span class='added added-interface breaking' data-is-breaking>Java.Lang.IAutoCloseable</span>

This is a bogus report. It sure adds another interface but it does not bring in any breaking change because the derived interface XmlResourceParser also contains the only member in AutoCloseable i.e. close() !

api-check must not report this as a breaking change. This applies to all other interfaces that report the same error too.

<span class='added added-method breaking' data-is-breaking>public virtual View KeyboardNavigationClusterSearch (View p0, FocusSearchDirection p1);</span>

Why is this happening? Because they are static methods that should not be part of the interface member.

Why does this happen? Because this fix is not merged! dotnet/java-interop#159

That fix really needs to be merged otherwise we keep generating these API incomatibility forever. The issue on java.time.chrono API mentioned there is actually due to totally different issue from the static <-> instance changes, so there is no excuse to not fix the static issue.

<span class='removed removed-method breaking' data-is-breaking>public IAppendable Append (string s, int start, int end);</span>

Fixed: see src/Mono.Android/Java.Lang/StringBuffer.cs and src/Mono.Android/Java.Lang/StringBuilder.cs for details.

<h3>Removed Type <span class='breaking' data-is-breaking>Java.Lang.Reflect.Constructor.InterfaceConsts</span></h3>
<h3>Removed Type <span class='breaking' data-is-breaking>Java.Lang.Reflect.Method.InterfaceConsts</span></h3>

They must be brought be intrusive Google API changes due to the step-by-step migration from Harmony to OpenJDK. There are no members that used those consts and should be simply killed even without changes. We can take bugs IF ANYONE EVER used it. I don't waste my time on "fixing" this.

<span class='removed removed-method breaking' data-is-breaking>public virtual bool IsAnnotationPresent (Java.Lang.Class annotationClass);</span>
<span class='removed removed-method breaking' data-is-breaking>public virtual void AddPropertyChangeListener (Java.Beans.IPropertyChangeListener listener);</span>
<span class='removed removed-method breaking' data-is-breaking>public virtual void RemovePropertyChangeListener (Java.Beans.IPropertyChangeListener listener);</span>
(in both Pack200.IPacker and Pack200.IUnpacker)
<span class='removed removed-property breaking' data-is-breaking>public virtual bool IsDestroyed { get; }</span>
<span class='removed removed-method breaking' data-is-breaking>public virtual void Destroy ();</span>

They are all api-merge bug: why does api-merge preserve this method as a default interface method?? It had been non-default in earlier API Levels, therefore api-merge must generate this method as non-default.

    <span class='added added-interface breaking' data-is-breaking>IAnnotatedElement</span>

This is new in java.lang.reflect.GenericDeclaration interface and should also be part of huge Harmony - OpenJDK migration. And unlike other new additional interfaces, those methods in AnnotatedElement are not default, so they are indeed breaking changes.

At this state, I don't think there is anything we can help the situation. We cannot remove this base interface type because that will generate JCW that doesn't compile.

The only idea I can think of is to completely kill this type. It's just like we give up EntityIterator.

<span class='removed removed-method breaking' data-is-breaking>public virtual FileChannel Position (long newPosition);</span>
<span class='removed removed-method breaking' data-is-breaking>public virtual FileChannel Truncate (long size);</span>
<span class='removed removed-method breaking' data-is-breaking>public System.Threading.Tasks.Task&lt;FileChannel&gt; TruncateAsync (long size);</span>

This was actually newly introduced breakage for OpenJDK migration too. FileChannel now implements SeekableByteChannel, which never existed, and they require those methods to return ISeekableByteChannel in C#, not FileChannel whereas FileChannel is ISeekableByteChannel.

So they are changed in the metadata fixup, but then this breakage. Now Position() and Truncate() are added as explicit interface implementation.

However, what can we do for TruncateAsync() ? NOTHING! It is (semi-)automatically generated by generateAsyncWrapper='true' which is NOT defined in the interface and therefore it cannot be explicitly implemented. And it's all about return types.

<span class='added added-interface breaking' data-is-breaking>Javax.Security.Auth.IDestroyable</span>

This should not be reported because all those interface methods are default!

<h3>Removed Type <span class='breaking' data-is-breaking>Android.Service.Quicksettings.TileState</span></h3></div> <!-- end namespace Android.Service.Quicksettings -->

I explicitly removed this. It had been marked as [Obsolete].

@atsushieno atsushieno force-pushed the api-o-enumification branch 2 times, most recently from 9e6be77 to bb12445 Compare July 13, 2017 15:14
@jonpryor
Copy link
Member

build

@jonpryor jonpryor mentioned this pull request Jul 18, 2017
jonpryor pushed a commit to xamarin/xamarin-android-api-compatibility that referenced this pull request Jul 19, 2017
Context: dotnet/android#662

The intention of [xamarin-android][xa]'s [api-compatibility][compat]
test is to ensure that API compatibility isn't broken by a commit.
The `api-compatibility` test works by using the `make check` target
in this repo (`xamarin-android-api-compatibility`).

Unfortunately, it's broken: API breakage which *should* be reported
*isn't* being reported.

The cause of the failure is the intermix of three things:

 1. The `make check` target redirects `mono-api-info` standard output
    to a file, a file which *must* be valid XML in order for the
    subsequent `mono-api-html` invocation to succeed

 2. When `mono-api-info`
    [encounters an error loading an assembly][assembly-error], the
    error message is written to standard output.

 3. For currently unknown reasons, the xamarin-android build system
    doesn't always copy debug symbols when it copies assemblies.

The result of this interplay is that when processing
`Mono.Android.dll`, the resulting `Mono.Android.xml` file is not
valid XML:

	Symbol file …/xamarin-android/bin/BuildDebug/Xamarin.Android.Cecil.pdb doesn't match image …/xamarin-android/bin/BuildDebug/Xamarin.Android.Cecil.dll
	<?xml version="1.0" encoding="utf-8"?>
	…

(I don't immediately know why `Xamarin.Android.Cecil.dll` is being
loaded while processing `Mono.Android.dll`. I just know that the
resulting intermediate `Mono.Android.xml` for API compatibility
checking starts with the above output.)

While all three factors can -- and should! -- be individually fixed,
it's easiest at this point in time to fix the first factor: instead
of redirecting `mono-api-info` standard output to `Mono.Android.xml`,
instead use `mono-api-info -o FILENAME`. This ensures that the
resulting file that we care about will contain valid XML.

[xa]: https://github.com/xamarin/xamarin-android
[compat]: https://github.com/xamarin/xamarin-android/tree/master/tests/api-compatibility
[assembly-error]: https://github.com/mono/mono/blob/a715c0daee65db97e2df1080ef42dc99436a3f52/mcs/tools/corcompare/mono-api-info.cs#L205
jonpryor pushed a commit that referenced this pull request Jul 19, 2017
Context: #662

The intention of `xamarin-android`'s
[api-compatibility](tests/api-compatibility) test is to ensure that
API compatibility isn't broken by a commit. The `api-compatibility`
test works by using the `make check` target in the
[`xamarin-android-api-compatibility` repo][xa-compat].

Unfortunately, it was broken: API breakage which *should* be reported
*isn't* being reported.

The cause of the failure was the intermix of three things:

 1. The `make check` target redirects `mono-api-info` standard output
    to a file, a file which *must* be valid XML in order for the
    subsequent `mono-api-html` invocation to succeed

 2. When `mono-api-info`
    [encounters an error loading an assembly][assembly-error], the
    error message is written to standard output.

 3. For currently unknown reasons, the xamarin-android build system
    doesn't always copy debug symbols when it copies assemblies.

The result of this interplay is that when processing
`Mono.Android.dll`, the resulting `Mono.Android.xml` file is not
valid XML:

	Symbol file …/xamarin-android/bin/BuildDebug/Xamarin.Android.Cecil.pdb doesn't match image …/xamarin-android/bin/BuildDebug/Xamarin.Android.Cecil.dll
	<?xml version="1.0" encoding="utf-8"?>
	…

(I don't immediately know why `Xamarin.Android.Cecil.dll` is being
loaded while processing `Mono.Android.dll`. I just know that the
resulting intermediate `Mono.Android.xml` for API compatibility
checking starts with the above output.)

While all three factors can -- and should! -- be individually fixed,
it's easiest at this point in time to fix the first factor: instead
of redirecting `mono-api-info` standard output to `Mono.Android.xml`,
instead use `mono-api-info -o FILENAME`. This ensures that the
resulting file that we care about will contain valid XML.

Bump to xamarin-android-api-compatibility/master/0e1889b0 so that the
`mono-api-info` invocation uses `mono-api-info -o FILENAME`.

[xa-compat]: https://github.com/xamarin/xamarin-android-api-compatibility
[assembly-error]: https://github.com/mono/mono/blob/a715c0daee65db97e2df1080ef42dc99436a3f52/mcs/tools/corcompare/mono-api-info.cs#L205
@atsushieno atsushieno force-pushed the api-o-enumification branch from bb12445 to efd6bf3 Compare July 19, 2017 13:21
@atsushieno
Copy link
Contributor Author

@atsushieno
Copy link
Contributor Author

I am tired of seeing those pointless "data-is-non-breaking" reports. Why are they reported at all?

@atsushieno
Copy link
Contributor Author

If any insignificant lines still matter in this build step, why don't we dump the entire MSBuild log files from our msbuild tests? No you don't want to see them. I don't want to open useless logs every time I have to work on this stuff either, so let's not do this.

@atsushieno
Copy link
Contributor Author

Since the original reports at #662 (comment) is too long to read, especially now that we've got tons of "fixes", here is the updated list of the reported breaking changes:

Perceptible = <span class='removed removed-inline removed-breaking-inline'>130</span> <span class='added '>230</span>

Google changed the value!

<span class='removed removed-method breaking' data-is-breaking>public virtual void OnServiceAdded (ProfileState status, BluetoothGattService service);</span>

It is actually a bugfix: https://bugzilla.xamarin.com/show_bug.cgi?id=55473

public <span class='removed removed-inline removed-breaking-inline'>AdvertiseTx</span> <span class='added '>int</span> TxPowerLevel { get; }

It is also a bugfix for https://bugzilla.xamarin.com/show_bug.cgi?id=51293

MaskFlags = <span class='removed removed-inline removed-breaking-inline'>4080</span> <span class='added '>65520</span>

Google changed the constant value here too. Well, it should.

<h3>Removed Type <span class='breaking' data-is-breaking>Java.Lang.Reflect.Constructor.InterfaceConsts</span></h3>
<h3>Removed Type <span class='breaking' data-is-breaking>Java.Lang.Reflect.Method.InterfaceConsts</span></h3>

They must be brought be intrusive Google API changes due to the step-by-step migration from Harmony to OpenJDK. There are no members that used those consts and should be simply killed even without changes. We can take bugs IF ANYONE EVER used it. I don't waste my time on "fixing" this.

I found two additional warnings.

Type Changed: Java.Lang.Reflect.Constructor
Modified base type: Java.Lang.Reflect.AccessibleObject Java.Lang.Reflect.Executable

Type Changed: Java.Lang.Reflect.Method
Modified base type: Java.Lang.Reflect.AccessibleObject Java.Lang.Reflect.Executable

(Why such an overlook happened? I was grepping "data-is-breaking" items but those lines were not marked with that specific attribute! This time they were uncovered because I could read the entire API diff report after all insignificant nonbreaking changes went away.)

Those are OpenJDK changes that we have no control over.

atsushieno added a commit to atsushieno/xamarin-android-api-compatibility that referenced this pull request Aug 1, 2017
…tion branch

See dotnet/android#662 for all those details.
Particularly dotnet/android#662 (comment)
for the latest details.
@atsushieno atsushieno force-pushed the api-o-enumification branch from 04f545d to d3f8957 Compare August 2, 2017 07:39
atsushieno added a commit to atsushieno/xamarin-android-api-compatibility that referenced this pull request Aug 2, 2017
…tion branch

See dotnet/android#662 for all those details.
Particularly dotnet/android#662 (comment)
for the latest details.
atsushieno added a commit to atsushieno/xamarin-android-api-compatibility that referenced this pull request Aug 2, 2017
…tion branch

See dotnet/android#662 for all those details.
Particularly dotnet/android#662 (comment)
for the latest details.
atsushieno added a commit to atsushieno/xamarin-android-api-compatibility that referenced this pull request Aug 2, 2017
…tion branch

See dotnet/android#662 for all those details.
Particularly dotnet/android#662 (comment)
for the latest details.
jonpryor pushed a commit to xamarin/xamarin-android-api-compatibility that referenced this pull request Aug 2, 2017
Context: dotnet/android#662

There are three breaking changes in this update which we consider
to be acceptable:

1. Removal of `Android.Service.Quicksettings.TileState`
2. Removal of `Java.Lang.Reflect.Constructor.InterfaceConsts`
3. Removal of `Java.Lang.Reflect.Method.InterfaceConsts`

The `TileState` enum (1) is present due to a type-o: the namespace is
*supposed* to be `Android.Service.QuickSettings` (note the
capital-`S` in `QuickSettings`), and there is also an identical
`Android.Service.QuickSettings.TileState` enum type.

The incorrect `Android.Service.Quicksettings.TileState` type has been
`[Obsolete]` for quite some time, so we're removing it now.

The `InterfaceConsts` types (2, 3) are for `static final int` members
from a Java interface. (In this case, `Constructor` and `Method` are
*classes*, so the `InterfaceConsts` types were coming from interfaces
those types implement.)

Related: https://developer.xamarin.com/guides/android/advanced_topics/api_design/

> All classes that implement a Java interface containing constants
> get a new nested `InterfaceConsts` type which contains constants
> from all implemented interfaces.

However, the `InterfaceConsts` types are only emitted on types which
implement the interface.

In API-25, we had:

	// Java
	interface Member {
	  public static final int DECLARED  = 1;
	  public static final int PUBLIC    = 0;
	  // ...
	}
	class Constructor extends AccessibleObject implements Member {
	  // ...
	}

This resulted in the C# binding:

	// C#
	partial class Constructor : AccessibleObject, IMember {
	  public static class InterfaceConsts {
	    public const int Declared    = 1;
	    public const int Public      = 1;
	  }
	}

API-26 changes this: `Constructor` and `Method` no longer directly
implement the `Member` interface. Instead, they inherit from
`Executable`, which implements `Member`:

	// Java
	class Executable extends AccessibleObject implements Member {
	  // ...
	}
	class Constructor extends Executable {
	  // ...
	}

Which results in the binding:

	// C#
	partial class Executable : AccessibleObject, IMember {
	  public static class InterfaceConsts {
	    public const int Declared    = 1;
	    public const int Public      = 1;
	  }
	}
	partial class Constructor : Executable {
	}

*This* is the state of affairs for the "breaking change" in (2, 3):
the `Constructor.InterfaceConsts` and `Method.InterfaceConsts`
types are no longer generated.

However, *these are not breaking changes*.

The removal of e.g. `Constructor.InterfaceConsts` isn't an ABI break,
as it isn't possible for IL to reference any
`Constructor.InterfaceConsts` members: it's a static class with no
methods, only `const` fields. Thus, the `const` value will be
"inlined" at their usage sites, and there are no other members which
can be referenced from IL under normal usage.

Additionally, this isn't an API (source) break either: because the
`InterfaceConsts` type was "moved" to a base class, existing source
code with a C# expression of `Constructor.InterfaceConsts.Default`
will continue to compile as expected, with unchanged semantics.

We thus deem (2, 3) to be acceptable changes.
@jonpryor
Copy link
Member

jonpryor commented Aug 2, 2017

xamarin/xamarin-android-api-compatibility#5 has been merged. Please update this PR to use the appropriate xamarin-android-api-compatibility commit.

That said, the macOS+xbuild PR Build is failing:

        Android.Bluetooth/BluetoothGattServerCallback.cs(12,39): error CS0246: The type or namespace name 'ProfileState' could not be found (are you missing a using directive or an assembly reference?)
        Android.Bluetooth/BluetoothGattServerCallback.cs(12,60): error CS0246: The type or namespace name 'BluetoothGattService' could not be found (are you missing a using directive or an assembly reference?)
        Android.Bluetooth/BluetoothGattServerCallback.cs(17,30): error CS0246: The type or namespace name 'ProfileState' could not be found (are you missing a using directive or an assembly reference?)
        Android.Bluetooth/BluetoothGattServerCallback.cs(17,51): error CS0246: The type or namespace name 'BluetoothGattService' could not be found (are you missing a using directive or an assembly reference?)

…ttServerCallback)

from xamarin/xamarin-android-api-compatibility#5 (comment)
(with a handful of fixes as the code just does not build)
@atsushieno atsushieno force-pushed the api-o-enumification branch from d3f8957 to b3098e7 Compare August 3, 2017 06:41
@jonpryor jonpryor merged commit e33eb53 into dotnet:master Aug 3, 2017
atsushieno added a commit to atsushieno/xamarin-android that referenced this pull request Aug 3, 2017
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=30909
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=51293
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=55473

Bump to xamarin-android-api-compatibility/master/6fe9b17f.

Add `Documentation/HowToAddNewApiLevel.md`, to describe the process
for binding new API levels, including enumification.

Enumify API-26.

Update `build-tools/enumification-helpers` to support the latest
droiddoc `packages.html` format.

API-26 changed `Activity.findViewById(int)` to be a generic method.
Remove the `<typeParameters/>` element and "fix" the return type so
that we don't break API compatibility, as `generator` doesn't
currently do anything sane here. (Specifically, all generic
paramaters are currently bound as `Java.Lang.Object`, *even if* the
type parameter has a constraint which provides a more specific type!)

Fix binding of `Java.Nio.FileChannel` so it can be actually bound,
related `SeekableByteChannel` support fixes.

Remove `//implements[@name='AutoCloseable']` and
`//implements[@name='Destryable']`, as they add Java `default`
interface methods which can't be sanely supported at this time.

Update `api-merge` to change `default` interface methods to
non-`default` methods when merging with an older API level which
contained the non-`default` interface method. This preserves backward
compatibility with existing assemblies and source code. Remove the
associated workarounds.

Bump xamarin-android-api-compatibility to check against the
latest-and-greatest API-26 binding.
jonpryor pushed a commit that referenced this pull request Aug 4, 2017
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=30909
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=51293
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=55473

Bump to xamarin-android-api-compatibility/master/6fe9b17f.

Add `Documentation/HowToAddNewApiLevel.md`, to describe the process
for binding new API levels, including enumification.

Enumify API-26.

Update `build-tools/enumification-helpers` to support the latest
droiddoc `packages.html` format.

API-26 changed `Activity.findViewById(int)` to be a generic method.
Remove the `<typeParameters/>` element and "fix" the return type so
that we don't break API compatibility, as `generator` doesn't
currently do anything sane here. (Specifically, all generic
paramaters are currently bound as `Java.Lang.Object`, *even if* the
type parameter has a constraint which provides a more specific type!)

Fix binding of `Java.Nio.FileChannel` so it can be actually bound,
related `SeekableByteChannel` support fixes.

Remove `//implements[@name='AutoCloseable']` and
`//implements[@name='Destryable']`, as they add Java `default`
interface methods which can't be sanely supported at this time.

Update `api-merge` to change `default` interface methods to
non-`default` methods when merging with an older API level which
contained the non-`default` interface method. This preserves backward
compatibility with existing assemblies and source code. Remove the
associated workarounds.

Bump xamarin-android-api-compatibility to check against the
latest-and-greatest API-26 binding.
atsushieno added a commit to atsushieno/xamarin-android that referenced this pull request Aug 7, 2017
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=30909
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=51293
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=55473

Bump to xamarin-android-api-compatibility/master/6fe9b17f.

Add `Documentation/HowToAddNewApiLevel.md`, to describe the process
for binding new API levels, including enumification.

Enumify API-26.

Update `build-tools/enumification-helpers` to support the latest
droiddoc `packages.html` format.

API-26 changed `Activity.findViewById(int)` to be a generic method.
Remove the `<typeParameters/>` element and "fix" the return type so
that we don't break API compatibility, as `generator` doesn't
currently do anything sane here. (Specifically, all generic
paramaters are currently bound as `Java.Lang.Object`, *even if* the
type parameter has a constraint which provides a more specific type!)

Fix binding of `Java.Nio.FileChannel` so it can be actually bound,
related `SeekableByteChannel` support fixes.

Remove `//implements[@name='AutoCloseable']` and
`//implements[@name='Destryable']`, as they add Java `default`
interface methods which can't be sanely supported at this time.

Update `api-merge` to change `default` interface methods to
non-`default` methods when merging with an older API level which
contained the non-`default` interface method. This preserves backward
compatibility with existing assemblies and source code. Remove the
associated workarounds.

Bump xamarin-android-api-compatibility to check against the
latest-and-greatest API-26 binding.
atsushieno added a commit to atsushieno/xamarin-android that referenced this pull request Aug 7, 2017
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=30909
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=51293
Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=55473

Bump to xamarin-android-api-compatibility/master/6fe9b17f.

Add `Documentation/HowToAddNewApiLevel.md`, to describe the process
for binding new API levels, including enumification.

Enumify API-26.

Update `build-tools/enumification-helpers` to support the latest
droiddoc `packages.html` format.

API-26 changed `Activity.findViewById(int)` to be a generic method.
Remove the `<typeParameters/>` element and "fix" the return type so
that we don't break API compatibility, as `generator` doesn't
currently do anything sane here. (Specifically, all generic
paramaters are currently bound as `Java.Lang.Object`, *even if* the
type parameter has a constraint which provides a more specific type!)

Fix binding of `Java.Nio.FileChannel` so it can be actually bound,
related `SeekableByteChannel` support fixes.

Remove `//implements[@name='AutoCloseable']` and
`//implements[@name='Destryable']`, as they add Java `default`
interface methods which can't be sanely supported at this time.

Update `api-merge` to change `default` interface methods to
non-`default` methods when merging with an older API level which
contained the non-`default` interface method. This preserves backward
compatibility with existing assemblies and source code. Remove the
associated workarounds.

Bump xamarin-android-api-compatibility to check against the
latest-and-greatest API-26 binding.
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jun 15, 2020
Changes: dotnet/java-interop@b00e644...1de5501

  * dotnet/java-interop@1de5501: [CI] Add an "macOS .NET Core" build (dotnet#655)
  * dotnet/java-interop@9a56465: [generator] Use proper syntax for nested classes for DIM invokers (dotnet#662)
  * dotnet/java-interop@267c3f3: [generator] Support XML defined enums with no JNI info (dotnet#659)
  * dotnet/java-interop@5dcf896: [generator] Don't invalidate interface if static method is invalidated (dotnet#660)
  * dotnet/java-interop@1b59dcc: [java-interop] Update to SDK style project (dotnet#657)
  * dotnet/java-interop@b136ac9: [param-name-importer] Bump to Microsoft.Xml.SgmlReader 1.8.16 (dotnet#656)
  * dotnet/java-interop@eb39a3a: Bump to xamarin/xamarin-android-tools/master@3974fc38 (dotnet#658)
  * dotnet/java-interop@a99b451: [logcat-parse] Update to Mono.Terminal 5.4.0 (dotnet#654)
  * dotnet/java-interop@425f79d: [Java.Interop] Fix C# warnings (dotnet#652)
  * dotnet/java-interop@2e0f55d: [Java.Interop.Tools.Generator] Specify $(OutputPath) (dotnet#650)
  * dotnet/java-interop@4b266fa: [Xamarin.Android.Tools.Bytecode] Support @jvmoverloads (dotnet#651)
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jun 15, 2020
Changes: dotnet/java-interop@76d1ac7...1f3388a

  * dotnet/java-interop@1f3388a: [generator] Use proper syntax for nested classes for DIM invokers (dotnet#662)
  * dotnet/java-interop@5e23163: [generator] Support XML defined enums with no JNI info (dotnet#659)
  * dotnet/java-interop@5c4581d: [generator] Don't invalidate interface if static method is invalidated (dotnet#660)
  * dotnet/java-interop@9687bb5: Bump to xamarin/xamarin-android-tools/d16-7@017078f2 (dotnet#658)
  * dotnet/java-interop@abfade5: [Java.Interop] Fix C# warnings (dotnet#652)
  * dotnet/java-interop@fb6d5f9: [Java.Interop.Tools.Generator] Specify $(OutputPath) (dotnet#650)
  * dotnet/java-interop@a3f148c: [Xamarin.Android.Tools.Bytecode] Support @jvmoverloads (dotnet#651)
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jun 15, 2020
Changes: dotnet/java-interop@76d1ac7...1f3388a

  * dotnet/java-interop@1f3388a: [generator] Use proper syntax for nested classes for DIM invokers (dotnet#662)
  * dotnet/java-interop@5e23163: [generator] Support XML defined enums with no JNI info (dotnet#659)
  * dotnet/java-interop@5c4581d: [generator] Don't invalidate interface if static method is invalidated (dotnet#660)
  * dotnet/java-interop@9687bb5: Bump to xamarin/xamarin-android-tools/d16-7@017078f2 (dotnet#658)
  * dotnet/java-interop@abfade5: [Java.Interop] Fix C# warnings (dotnet#652)
  * dotnet/java-interop@fb6d5f9: [Java.Interop.Tools.Generator] Specify $(OutputPath) (dotnet#650)
  * dotnet/java-interop@a3f148c: [Xamarin.Android.Tools.Bytecode] Support @jvmoverloads (dotnet#651)
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jun 15, 2020
Changes: dotnet/java-interop@b00e644...1de5501

  * dotnet/java-interop@1de5501: [CI] Add an "macOS .NET Core" build (dotnet#655)
  * dotnet/java-interop@9a56465: [generator] Use proper syntax for nested classes for DIM invokers (dotnet#662)
  * dotnet/java-interop@267c3f3: [generator] Support XML defined enums with no JNI info (dotnet#659)
  * dotnet/java-interop@5dcf896: [generator] Don't invalidate interface if static method is invalidated (dotnet#660)
  * dotnet/java-interop@1b59dcc: [java-interop] Update to SDK style project (dotnet#657)
  * dotnet/java-interop@b136ac9: [param-name-importer] Bump to Microsoft.Xml.SgmlReader 1.8.16 (dotnet#656)
  * dotnet/java-interop@eb39a3a: Bump to xamarin/xamarin-android-tools/master@3974fc38 (dotnet#658)
  * dotnet/java-interop@a99b451: [logcat-parse] Update to Mono.Terminal 5.4.0 (dotnet#654)
  * dotnet/java-interop@425f79d: [Java.Interop] Fix C# warnings (dotnet#652)
  * dotnet/java-interop@2e0f55d: [Java.Interop.Tools.Generator] Specify $(OutputPath) (dotnet#650)
  * dotnet/java-interop@4b266fa: [Xamarin.Android.Tools.Bytecode] Support @jvmoverloads (dotnet#651)
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jun 15, 2020
Changes: dotnet/java-interop@b00e644...1de5501

  * dotnet/java-interop@1de5501: [CI] Add an "macOS .NET Core" build (dotnet#655)
  * dotnet/java-interop@9a56465: [generator] Use proper syntax for nested classes for DIM invokers (dotnet#662)
  * dotnet/java-interop@267c3f3: [generator] Support XML defined enums with no JNI info (dotnet#659)
  * dotnet/java-interop@5dcf896: [generator] Don't invalidate interface if static method is invalidated (dotnet#660)
  * dotnet/java-interop@1b59dcc: [java-interop] Update to SDK style project (dotnet#657)
  * dotnet/java-interop@b136ac9: [param-name-importer] Bump to Microsoft.Xml.SgmlReader 1.8.16 (dotnet#656)
  * dotnet/java-interop@eb39a3a: Bump to xamarin/xamarin-android-tools/master@3974fc38 (dotnet#658)
  * dotnet/java-interop@a99b451: [logcat-parse] Update to Mono.Terminal 5.4.0 (dotnet#654)
  * dotnet/java-interop@425f79d: [Java.Interop] Fix C# warnings (dotnet#652)
  * dotnet/java-interop@2e0f55d: [Java.Interop.Tools.Generator] Specify $(OutputPath) (dotnet#650)
  * dotnet/java-interop@4b266fa: [Xamarin.Android.Tools.Bytecode] Support @jvmoverloads (dotnet#651)
jonpryor added a commit that referenced this pull request Jun 15, 2020
Changes: dotnet/java-interop@76d1ac7...1f3388a

  * dotnet/java-interop@1f3388a: [generator] Use proper syntax for nested classes for DIM invokers (#662)
  * dotnet/java-interop@5e23163: [generator] Support XML defined enums with no JNI info (#659)
  * dotnet/java-interop@5c4581d: [generator] Don't invalidate interface if static method is invalidated (#660)
  * dotnet/java-interop@9687bb5: Bump to xamarin/xamarin-android-tools/d16-7@017078f2 (#658)
  * dotnet/java-interop@abfade5: [Java.Interop] Fix C# warnings (#652)
  * dotnet/java-interop@fb6d5f9: [Java.Interop.Tools.Generator] Specify $(OutputPath) (#650)
  * dotnet/java-interop@a3f148c: [Xamarin.Android.Tools.Bytecode] Support @jvmoverloads (#651)
jonpryor added a commit that referenced this pull request Jun 16, 2020
Changes: dotnet/java-interop@b00e644...1de5501

  * dotnet/java-interop@1de5501: [CI] Add an "macOS .NET Core" build (#655)
  * dotnet/java-interop@9a56465: [generator] Use proper syntax for nested classes for DIM invokers (#662)
  * dotnet/java-interop@267c3f3: [generator] Support XML defined enums with no JNI info (#659)
  * dotnet/java-interop@5dcf896: [generator] Don't invalidate interface if static method is invalidated (#660)
  * dotnet/java-interop@1b59dcc: [java-interop] Update to SDK style project (#657)
  * dotnet/java-interop@b136ac9: [param-name-importer] Bump to Microsoft.Xml.SgmlReader 1.8.16 (#656)
  * dotnet/java-interop@eb39a3a: Bump to xamarin/xamarin-android-tools/master@3974fc38 (#658)
  * dotnet/java-interop@a99b451: [logcat-parse] Update to Mono.Terminal 5.4.0 (#654)
  * dotnet/java-interop@425f79d: [Java.Interop] Fix C# warnings (#652)
  * dotnet/java-interop@2e0f55d: [Java.Interop.Tools.Generator] Specify $(OutputPath) (#650)
  * dotnet/java-interop@4b266fa: [Xamarin.Android.Tools.Bytecode] Support @jvmoverloads (#651)
@github-actions github-actions bot locked and limited conversation to collaborators Feb 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
do-not-merge PR should not be merged. full-mono-integration-build For PRs; run a full build (~6-10h for mono bumps), not the faster PR subset (~2h for mono bumps)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants