Граф коммитов

128 Коммитов

Автор SHA1 Сообщение Дата
Rolf Bjarne Kvinge ab73088c0b [net8.0] Merge main into net8.0. 2023-05-19 08:06:07 +02:00
Git History Editor b8ccbad871 [src] Add helper methods for the managed static registrar 2023-05-11 13:10:30 +02:00
Rolf Bjarne Kvinge b8c7dc7dc3 [net8.0] Merge main into net8.0. 2023-05-11 11:54:37 +02:00
Rolf Bjarne Kvinge 36af029204
Change all null checking expressions to use 'is' and 'is not'. (#18176)
Change all null checking expressions to use 'is null' and 'is not null'
instead of '== null' and '!= null'.

This was mostly done with sed, so code can probably be improved in many
other ways with manual inspection, but that will come over time.

Also add code to the autoformat script to automatically fix these issues in the future.
2023-05-05 17:52:19 +02:00
Rolf Bjarne Kvinge f3b7673124 [net8.0] Merge main into net8.0. 2023-04-28 11:14:04 +02:00
Rolf Bjarne Kvinge 59d8370d6f
[tests] Fix finding instructions that take methods in cecil-tests. (#18138)
The calli instruction calls a function pointer on the stack, not a specific
managed function, so don't include it when looking for calls to managed functions.
2023-04-26 15:25:07 +02:00
Rolf Bjarne Kvinge ce19b092c2 [net8.0] Merge main into net8.0. 2023-04-21 12:31:53 +02:00
Rolf Bjarne Kvinge 03f0a35012
[CoreMidi] Create a blittable version of MidiCIDeviceIdentification. (#18052)
The original implementation for the MidiCIDeviceIdentification struct uses
public byte[] fields with a MarshalAs attribute to set the array size. This is
not blittable, but unfortunately these are _public_ fields, which means we
can't change them.

Instead introduce an internal intermediate struct, which is blittable, and
convert to and from this struct when marshalling to and from native code.

Then in XAMCORE_5_0 we can make the intermediate struct public and use it
instead of the non-blittable struct everywhere.
2023-04-17 07:49:31 +02:00
Rolf Bjarne Kvinge f2dc429f3c [net8.0] Merge main into net8.0. 2023-04-13 08:27:25 +02:00
Rolf Bjarne Kvinge 2012ffbb75
[tests] Fix BlittablePInvokes.CheckForNonBlittablePInvokes to not verify known failures unless building for all platforms. (#18007)
This fixes a test failure when not including all platforms:

	Cecil.Tests.BlittablePInvokes.CheckForNonBlittablePInvokes: Known failures that aren't failing anymore - remove these from the list of known failures: In the file tests/cecil-tests/BlittablePInvokes.cs, read the guide carefully.
		Expected: <empty>
		But was: < "AudioUnit.AudioComponentStatus AudioUnit.AudioUnit::AudioOutputUnitPublish(AudioUnit.AudioComponentDescription,System.IntPtr,System.UInt32,System.IntPtr)", ...
2023-04-11 07:12:46 +02:00
Alex Soto db0b1ff52f Merge remote-tracking branch 'xamarin/main' into net8.0-main-merge 2023-04-05 15:25:09 -04:00
Alex Soto 4d98f09877 [tests] Add two more know issues to the BlittablePInvokes.CheckForNonBlittablePInvoke 2023-03-29 22:25:30 -04:00
Rolf Bjarne Kvinge 58c6724c71 [net8.0] Merge main into net8.0. 2023-03-28 15:23:06 +02:00
Rolf Bjarne Kvinge d5ad7db296
[tests] Improve the Blittable P/Invoke test to report signatures with MarshalAs attributes. (#17879)
Also augment the test to use existing helper methods to compare actual
failures with known failures.
2023-03-28 12:44:55 +02:00
Rolf Bjarne Kvinge cfa2734a3a Merge remote-tracking branch 'origin/main' into bump-main-in-net8.0-2023-03-14 2023-03-23 15:33:43 +01:00
Rolf Bjarne Kvinge 4131267879 Merge remote-tracking branch 'origin/main' into bump-main-in-net8.0-2023-03-14 2023-03-23 08:36:21 +01:00
Rolf Bjarne Kvinge 6e2ff59b30
[tests] Port Cecil tests to a .NET test project. (#17836) 2023-03-23 08:34:52 +01:00
Rolf Bjarne Kvinge 999c5a3e97
[tests] Share code to verify failures. (#17872)
We have some code that verifies a list of failures against a known set of
failures and:

* Fails if any known failure is fixed.
* Fails if there any new (unknown) failures.

Create a helper method that contains this logic, since it's duplicated quite a
few times across various tests.
2023-03-22 11:47:54 +01:00
Steve Hawley 63470f9b74
add EditorBrowsable to obsolete member (#17854) 2023-03-21 07:41:39 +01:00
Rolf Bjarne Kvinge d970fa94a3 Merge remote-tracking branch 'origin/main' into bump-main-in-net8.0-2023-03-14 2023-03-15 16:04:21 +01:00
Rolf Bjarne Kvinge 0faf60c2e9
[tests] Add new cecil tests to verify correct block literal usage in our own code. Fixes #15783. (#17794)
This is the final step in our improved block support.

Fixes https://github.com/xamarin/xamarin-macios/issues/15783.

Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
2023-03-15 14:31:02 +01:00
Rolf Bjarne Kvinge 6e10fd5d27 [net8.0] Merge main into net8.0. 2023-03-14 10:12:55 +01:00
Rolf Bjarne Kvinge 29633a6231
[generator] Make the block callbacks UnmanagedCallersOnly functions in .NET. (#17741)
This also required updating a manual binding since it poked into
generated internals.

Contributes towards https://github.com/xamarin/xamarin-macios/issues/15783.
2023-03-14 10:08:28 +01:00
Rolf Bjarne Kvinge 69f5c42db4 [net8.0] Merge main into net8.0. 2023-03-08 23:48:50 +01:00
Steve Hawley 4c1e5681f1
[dotnet] future proof the test (#17739)
Add documentation in case of future test fails
2023-03-08 12:29:57 -05:00
Rolf Bjarne Kvinge 07afcf9e97 [net8.0] Merge main into net8.0. 2023-03-07 18:12:02 +01:00
Steve Hawley dec6ce3445
[dotnet] final blittable pinvoke (#17723)
test passes now.
2023-03-07 10:16:11 -05:00
Steve Hawley d87d0cddef
[dotnet] Darwin p/invokes (#17698) 2023-03-06 10:25:41 -05:00
Rolf Bjarne Kvinge 7a866a5cc6 [net8.0] Merge main into net8.0. 2023-03-02 15:49:52 +01:00
Rolf Bjarne Kvinge a867353096 [net8.0] Merge main into net8.0. 2023-02-28 08:00:23 +01:00
Steve Hawley aacedd12c7
[dotnet] Remove dead method, add some ignores (#17631)
Removed a flavor of `class_addMethod` that is unused.
Ignored a few cases that are going to be in .NET and/or may break AOT
optimizations

Now all iOS pivots pass, 17 macOS remain.
2023-02-27 17:56:06 -05:00
Steve Hawley 32961d97dd
[dotnet] UIMain changes (#17611)
handling of string array for args
2023-02-27 10:23:39 -05:00
Steve Hawley 1ca9a8fbdf
[dotnet] CGImageMetadata (#17530)
Fixed pinvoke used for CGIMetadata.EnumerateTags
2023-02-23 10:50:58 -05:00
Rolf Bjarne Kvinge 7e05ea54bb Merge main into net8.0. 2023-02-17 14:58:12 +01:00
Steve Hawley 309dbe3be0
[DotNet] CoreFoundation Pinvokes (#17505)
Updates the pinvokes in CoreFoundation to have blittable types.
I intentionally did *not* do `CFReadStream` and `CFWriteStream` as the
changes needed for those are may create a breaking API change, so those
should probably be their own PR for closer scrutiny.

Please look closely at CFProxySupport as that was the least
straightforward of the changes.
2023-02-10 19:06:29 -05:00
Steve Hawley 1a9e9be626
[dotnet] address book pinvokes (#17419) 2023-02-08 12:02:06 -05:00
Rolf Bjarne Kvinge 9f55faeee0 Merge remote-tracking branch 'origin/net8.0' into bump-main-in-net8.0-2023-02-06 2023-02-07 07:18:23 +01:00
Rolf Bjarne Kvinge 367f0a5c13
[src] Fix a few inconsistencies in obsolete attributes. (#17447)
* Add obsolete attributes for all platforms.
* Make sure the same obsolete message is used on all platforms.
* Fix a few typos.

There are many more APIs to fix (as evidenced by the fact that this only
removes a few known failures), but this is how far I've gotten right now.
2023-02-06 08:49:00 +01:00
Rolf Bjarne Kvinge 6d36bf1c1b
[cecil-tests] Add more availability attribute checks. (#17430)
Also fix a few issues:

* Fix an issue with replicating availability attributes with a third digit.

  The third version number is 'Build', not 'Revision' (which is fourth), so
  adjust our code accordingly.

  This fixes an issue where the copy of 'macos10.15.4' would become
  'macos10.15' and we'd lose the third number.

* Fix an issue when generating filter code. We were using the wrong type as
  the target (inlined) type, resulting in the wrong availability attributes
  getting created sometimes.
2023-02-03 16:44:01 +01:00
Rolf Bjarne Kvinge 7f52b11753 [cecil-tests] Remove a known failure that's been fixed now. 2023-02-03 09:10:47 +01:00
Rolf Bjarne Kvinge 3e9e6a39db
[cecil-tests] Fix check for unsupported attribute on API that's present in an assembly. (#17423)
This also required fixing a few issues with the availability attributes.
2023-02-02 07:37:56 +01:00
Steve Hawley 8266659ddb
[dotnet] audiotoolbox blittable pinvokes with delegates (#17388)
AudioToolbox changes to make the pinvokes blittable.
2023-01-31 10:29:19 -05:00
Rolf Bjarne Kvinge 1350683690
[src/generator] Stop implying Mac Catalyst availability attributes from the iOS attributes. (#17375)
Stop implying Mac Catalyst attributes from the iOS attributes, and instead
treat Mac Catalyst like all the other platforms (not implying anything from
any other platform).

This makes our attribute logic much easier to reason about and understand.

It also required adding numerous Mac Catalyst attributes that were previously
implied. This task was way too big to do manually, so I made some changes to
Chris' mellite tool, and managed to do it quite easily with Roslyn with the
changes in this branch: https://github.com/rolfbjarne/mellite/tree/explicit-maccatalyst-attributes
2023-01-31 14:51:53 +01:00
Rolf Bjarne Kvinge 50c01fe10c
[generator] Fix an issue where we'd not copy attributes from inlined protocols. (#17381)
Protocols with one set of introduced attributes ([TV (12, 0)]) inlined in
types that were introduced in a different version ([TV (10, 0)]) would always
use the attributes from the type.

This is wrong if the protocol was introduced after the type, in which case we
should instead use the introduced attributes from the protocol.

Fix this by choosing the latest introduced attribute when we have multiple to
choose from.

This required passing a bit more information around so that we always know if
a member is being inlined in another type.

This PR will also print availability attributes on the protocol members themselves:

	[Protocol]
	interface IProtocol
	{
		[TV (12, 0)] // this was not printed before
		[Export ("someProperty")]
		string SomeProperty { get; set; }
	}

Also add and improve some tests.

Contributes towards https://github.com/xamarin/xamarin-macios/issues/14802.
2023-01-30 08:00:06 +01:00
Rolf Bjarne Kvinge 688fa45856
[tests] Improve the AttributeTest.FindSupportedOnElementsThatDoNotExistInThatAssembly cecil test. (#17367)
* Fix an issue where it would not compute the correct grouping key for each member,
  effectively grouping unrelated members together and coming up with weird and incorrect
  results.
* Make it match failures exactly, which makes it possible to detect (and report,
  which it now does) when a known failure is fixed.
* Ignore any hidden members (EditorBrowsableState.Never), because they're most
  likely mistakes.
* Ignore any members in AppKit and UIKit, because these namespaces have a lot of
  conflicting availability attributes. This is tracked in a separate bug (#17292).

Co-authored-by: GitHub Actions Autoformatter <github-actions-autoformatter@xamarin.com>
2023-01-25 20:55:28 +01:00
Rolf Bjarne Kvinge a57695bcf5
[generator] Fix property accessor attributes when one accessor's iOS availability is different than the property itself. (#17298)
This PR handles two scenarios (fixed in separate commits):

Scenario 1:

* The property has different availability attributes than the containing type.
* The property's accessor(s) do not have availability attributes.

We'd generate the wrong availability attributes for the property accessors,
because we'd take the type's availability attributes and add them to the
accessors.

As for the fix: I can't really explain it. This code is rather impenetrable,
and the parameter names don't make much sense, but whatever I did seems to
work?

And it turns out this fix shows up in an existing test as well (the
generator's Bug35176 test), which I had to modify to remove the expectation of
(now redundant) availability attributes that we no longer produce.

Scenario 2:

* Type is available on iOS, tvOS.
* Property in the type is available on iOS (and not tvOS).
* Property accessor has explicit availability attributes for iOS.

Then the property accessor would get the availability attribute for tvOS from
the type, and not the (un)availability attribute from the property.

The fix is to make sure the parent context is the property (and not the type)
when processing availability attributes for the accessor.
2023-01-25 09:27:58 +01:00
Rolf Bjarne Kvinge 3cbd86aba2 [AVFoundation] Adjust availability attributes according to conditional compilation directives. (#17311)
According to the compilation compilation directives, these APIs are not
available on tvOS nor macOS, so update the availability attributes
accordingly.
2023-01-24 14:22:31 +01:00
Steve Hawley 74ceecaf3f
[dotnet] last of the strings in pinvokes are gone (#17205)
removed strings from pinvokes in ObjCRuntime
2023-01-18 10:25:52 -05:00
Rolf Bjarne Kvinge 49d13fc0ef
[AppKit] Bind an NSWindow(IntPtr) constructor in the API definition. (#17264)
This simplifies our manual bindings a little bit.
2023-01-18 07:13:58 +01:00
Rolf Bjarne Kvinge a26e3c57f4
[tests] Enable some of the asserts in the Cecil.Tests.ApiAvailabilityTest.AttributeConsistency test. (#17113)
They're passing now.
2023-01-09 10:40:57 +01:00