-
Notifications
You must be signed in to change notification settings - Fork 554
Port the generator to IKVM. #1849
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
Conversation
… since we're always using the system corlib.
… the IKVM-based generator.
|
|
|
Build success |
chamons
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not the expert of experts on the generator, but LGTM.
🎉 🎉 🎉
mk/xamarin.mk
Outdated
|
|
||
| MACCORE_DIRECTORY := maccore | ||
| MACCORE_MODULE := git@github.com:xamarin/maccore.git | ||
| MACCORE_MODULE := git@github.com:rolfbjarne/maccore.git |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Before this goes in I assume this will have to change back from your branch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missed your comment above on don't merge. Nevermind on this.
src/generator-attribute-manager.cs
Outdated
| static T [] FilterAttributes<T> (IList<CustomAttributeData> attributes) where T : System.Attribute | ||
| { | ||
| if (attributes == null || attributes.Count == 0) | ||
| return new T [0]; // FIXME: ugh, we end up allocating a lot of empty arrays |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe move to a bug long term?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This method is returning an empty array just to match the System.Reflection API. Once the SR code is gone, this can be changed to whatever we want (and fix the callers accordingly).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would not using Array.Empty<T> () solve the allocations issue ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because I didn't know about Array.Empty<T> () 😄
src/generator-attribute-manager.cs
Outdated
| if (list != null) | ||
| return list.ToArray (); | ||
|
|
||
| return new T [0]; // FIXME: ugh, we end up allocating a lot of empty arrays |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
dalexsoto
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me! super excited about this!
|
|
||
| The generator relies heavily on binding attributes; all the binding attributes | ||
| (that are not in the platform assembly) are compiled into a separate attribute | ||
| assembly (Xamarin.[iOS|TVOS|WatchOS|Mac].BindingAttributes.dll). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❤️ it, finally no more broken autocompletion in binding projects!
|
|
||
| public static Type GetUnderlyingNullableType (Type type) | ||
| { | ||
| #if IKVM |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see there is some stuff we need to "workaround" using IKVM, this is a nice example (this is more a comment for future me 😉 )
…tocol] without a [Model] that specify a [BaseType] https://bugzilla.xamarin.com/show_bug.cgi?id=42855 We had some logic to catch this but we did not do anything with it. We now error out with BI1060 whenever we find [Model] but no [BaseType] added test case. I am using BI1060 because Rolf reserved today the missing ones in PR dotnet#1849
…tocol] without a [Model] that specify a [BaseType] https://bugzilla.xamarin.com/show_bug.cgi?id=42855 We had some logic to catch this but we did not do anything with it. We now error out with BI1060 whenever we find [Model] but no [BaseType] added test case. I am using BI1060 because Rolf reserved today the missing ones in PR dotnet#1849
…tocol] without a [Model] that specify a [BaseType] (#1859) https://bugzilla.xamarin.com/show_bug.cgi?id=42855 We had some logic to catch this but we did not do anything with it. We now error out with BI1060 whenever we find [Model] but no [BaseType] added test case. I am using BI1060 because Rolf reserved today the missing ones in PR #1849
spouliot
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor comment for Array.Empty<T>.
As for testing it's clear (no diff) there's not issue on our side but did you (or, if not, can you) run (and compare) monotouch-bindings results from both SRE and IKVM versions ?
src/generator-attribute-manager.cs
Outdated
| static T [] FilterAttributes<T> (IList<CustomAttributeData> attributes) where T : System.Attribute | ||
| { | ||
| if (attributes == null || attributes.Count == 0) | ||
| return new T [0]; // FIXME: ugh, we end up allocating a lot of empty arrays |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would not using Array.Empty<T> () solve the allocations issue ?
src/generator-attribute-manager.cs
Outdated
| if (list != null) | ||
| return list.ToArray (); | ||
|
|
||
| return new T [0]; // FIXME: ugh, we end up allocating a lot of empty arrays |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
|
Build success |
|
Build success |
|
There are no regressions in neither monotouch-bindings, XamarinComponents, FacebookComponents nor GoogleApisForiOSComponents. Regarding the generator diff: it was run with this PR's IKVM implementation vs master (i.e. SRE before these changes). I did not diff IKVM vs SRE where both implementation come from this branch. |
|
@spouliot I think this is good now, QA doesn't have much more tests in this area. |
|
Build success |
|
@rolfbjarne I wanted to discuss acceptance, in general, on Monday [1] but if @GouriKumari is onboard then I'm fine with merging this now. [1] https://trello.com/c/c9oacCxk/683-pr-acceptance-criteria |
|
Discussion happened, no feedback for generator so Iet's merge that :) |
|
With regards to generator, I do not have any comments. The only factor is time that takes to build, analyze and fix the bugs for each PR. With general acceptance of a major feature, can you include integration testing of that feature with IDE and if the feature can be automated (QA) and run from command line as a criteria. |
|
Build failure |
…ing IKVM-based bgen. Simplify mac tests by using different variables for the various flavors of mac generators, and use these new flavors so that all tests pass when using the IKVM-based bgen.
|
Build failure |
|
Test failure is unrelated (bug #52903). |
This is in part so we get xamarin/maccore#1924 -> [mlaunch] Connect to devices on a background thread. That should hopefully fix device not found issues we're having on some bots/ New commits in xamarin/macios-binaries: * xamarin/macios-binaries@01d34af Bump mlaunch to xamarin/maccore@809b2def39 (dotnet#24) Diff: https://github.com/xamarin/macios-binaries/compare/b474fa2e732974fde2edbfe054f23c5eefd0255b..01d34af6b03e81cefbb30d964e58fca66da86c4a New commits in xamarin/maccore: * xamarin/maccore@809b2def39 [mlaunch] Connect to devices on a background thread. (dotnet#1778) (dotnet#1924) * xamarin/maccore@5215c09e8c Merge pull request dotnet#1923 from xamarin/swift-o-matic-hello-protocol-list-type * xamarin/maccore@21447e2538 I. Can't. Believe. I'm. Checking. This. In. * xamarin/maccore@da6518f920 Added ProtocolListTypeSpec * xamarin/maccore@a9b9a0f5b3 Merge pull request dotnet#1920 from xamarin/swift-o-matic-bye-swift-protocol * xamarin/maccore@01e9420598 Lose all the SwiftProtocol related types. * xamarin/maccore@ca3bd0ab5b Merge pull request dotnet#1919 from xamarin/swift-redo-regular-protocols * xamarin/maccore@f534abee12 Now with existential containers * xamarin/maccore@9e180a823a Merge pull request dotnet#1911 from xamarin/swift-o-matic-string-convertible * xamarin/maccore@9874985856 Typo * xamarin/maccore@26731ff5cb Next step in Protocol revamp * xamarin/maccore@9fe4cdd652 Merge pull request dotnet#1904 from xamarin/swift-o-matic-hashable * xamarin/maccore@a1cd988dda iOS include * xamarin/maccore@f1fc694da6 Revamped hashable. * xamarin/maccore@16a6629a43 Merge pull request dotnet#1902 from xamarin/swift-o-matic-comparable * xamarin/maccore@a98db5b976 Dead symbol, changed symbol. * xamarin/maccore@3c38895694 Reworked Swift.Comparable to be defined in terms of EveryProtocol * xamarin/maccore@ef1d3c1397 Merge pull request dotnet#1895 from xamarin/swift-o-matic-equatable * xamarin/maccore@1c1a57fa4f Try again and get all the files, thanks. * xamarin/maccore@ec0a5b99b7 Revised EveryProtocol, updated Equatable * xamarin/maccore@198a489387 Simplified EveryProtocol, revised Equatable * xamarin/maccore@ee7710a186 Merge pull request dotnet#1894 from xamarin/swift-o-matic-every-protocol * xamarin/maccore@4fc0810fd2 Let's not leak memory, OK? * xamarin/maccore@451c0ba18d Try a little dispose magic. * xamarin/maccore@864854e407 Minor tweak to public API * xamarin/maccore@052990af11 Adding in EveryProtocol object * xamarin/maccore@b7f1347fcf Merge pull request dotnet#1893 from xamarin/swift-o-matic-protocol-binding * xamarin/maccore@df4aefe447 no swap files, vi. * xamarin/maccore@1e6bf8d4ef Merge pull request dotnet#1892 from xamarin/swift-o-matic-protocol-binding * xamarin/maccore@e46a543544 Typo * xamarin/maccore@fea9514c69 Let's document! * xamarin/maccore@9b5ecdfdce Merge pull request dotnet#1890 from xamarin/swift-o-matic-fail-on-wrong-version * xamarin/maccore@0b4afae5f3 Put in a hard fail on compiler version mismatch errors. * xamarin/maccore@d1475a43d1 Merge pull request dotnet#1881 from xamarin/swift-o-matic-NRE * xamarin/maccore@900e453695 Fixes and NRE from SCLAlertView * xamarin/maccore@0164c0ae83 Merge pull request dotnet#1873 from xamarin/swift-o-matic-README * xamarin/maccore@211b05a515 READMEs for errors, reminder to check README and associated issues in Makefile * xamarin/maccore@74650bf3f8 [SoM] Add '/usr/lib/swift' as an rpath before any other rpaths. (dotnet#1857) * xamarin/maccore@73dd23d00b Merge pull request dotnet#1859 from xamarin/swift-o-matic-SwiftLocation * xamarin/maccore@6704604de1 Add SwiftLocation * xamarin/maccore@e96ab505d8 Merge pull request dotnet#1855 from xamarin/swift-o-matic-bye-bye-dormant-3rd-party * xamarin/maccore@c17c506738 Remove dormant 3rd Party Tests * xamarin/maccore@366e201f11 Merge pull request dotnet#1854 from xamarin/swift-o-matic-update-3rd-party * xamarin/maccore@da748a9a1d Updated makefiles for projects that have updated to Swift 4.2 or > * xamarin/maccore@2e371bdaf2 Merge pull request dotnet#1849 from xamarin/swift-o-matic-gentler-errors * xamarin/maccore@921c21251d Lighten up on errors, get paper-switch * xamarin/maccore@f4fc280efe Merge pull request dotnet#1844 from xamarin/swift-o-matic-lottie * xamarin/maccore@e47aa6b50c Adding lottie-ios * xamarin/maccore@cf09fd4c59 [SoM] Copy swift libraries to foo.app/Frameworks for non-macOS apps. (dotnet#1842) * xamarin/maccore@a4af9cdd2d Merge pull request dotnet#1841 from xamarin/swift-o-matic-gentler-skip * xamarin/maccore@fc7cd38f64 [SoM] Handle the new BuildVersion load command. (dotnet#1827) * xamarin/maccore@8666e81b7d Ha-ha! When you make errors become warnings, tests that depend on errors change. * xamarin/maccore@e42a8c394f continue... * xamarin/maccore@3b0d6bc0e6 [SoM] Don't duplicate the nuget version number. (dotnet#1838) * xamarin/maccore@143afaf991 [msbuild] No need to use a shell function to resolve a relative path in make. (dotnet#1839) * xamarin/maccore@cbe86e0152 [SoM] Add a helpful make target to create a nuget and setup a local feed repository for it. (dotnet#1837) * xamarin/maccore@cfaaf1c5a5 [SoM] Enable swift's Stable ABI. (dotnet#1836) * xamarin/maccore@79166d9755 Made errors more lenient, added Hue framework. * xamarin/maccore@f4b0feeb55 Merge pull request dotnet#1830 from xamarin/swift-o-matic-prop-closure * xamarin/maccore@a14198fdee whitespace * xamarin/maccore@285874eceb handle ()->() and ()->type properly * xamarin/maccore@4785afe4ea Handle closures as return values. * xamarin/maccore@e89b80ca53 [SoM] Don't redownload the swift toolchain if we already have the file. (dotnet#1825) * xamarin/maccore@217a608e72 [SoM] Improve installed scripts. (dotnet#1826) * xamarin/maccore@ff283225b6 [SoM] Fix typo in type name. (dotnet#1824) * xamarin/maccore@189ea0cba7 Merge pull request dotnet#1818 from xamarin/swift-o-matic-SwiftMessages-NRE * xamarin/maccore@937541e0a6 restore back original code. * xamarin/maccore@30be8a354a continue on null * xamarin/maccore@dfceb83692 Merge pull request dotnet#1816 from xamarin/swift-o-matic-warn-not-fail * xamarin/maccore@b32e33e71d Make warnings, not errors. * xamarin/maccore@84504ced5e Merge pull request dotnet#1814 from xamarin/swift-o-matic-fix-predicate * xamarin/maccore@82000e1a63 [submission] Fix makefile and clarify README (dotnet#1805) * xamarin/maccore@d0ebe3b175 Remove stale predicate. * xamarin/maccore@de6143449a Merge pull request dotnet#1806 from xamarin/swift-o-matic-c-structs * xamarin/maccore@e10ef79504 C struct exceptions * xamarin/maccore@a272402c7c Add the developerid required to run the notarization tests (dotnet#1804) * xamarin/maccore@747c18c482 Merge pull request dotnet#1803 from xamarin/swift-o-matic-date-nuance * xamarin/maccore@716082fd5e Moved string constants to SwiftFoundationConstants * xamarin/maccore@f250ca5418 Merge pull request dotnet#1799 from xamarin/swift-o-matic-date * xamarin/maccore@4d9a764e90 Basic support for Foundation.Date * xamarin/maccore@5ef84bc50c Merge pull request dotnet#1795 from xamarin/swift-o-matic-ctor-finding * xamarin/maccore@0899c35771 Demote error to warning. * xamarin/maccore@ba80294413 Drop the mono-extensions dependency. (dotnet#1789) * xamarin/maccore@ca616ef842 Merge pull request dotnet#1793 from xamarin/swift-o-matic-spring-fwk * xamarin/maccore@f0cd48c28c Fix name conflict * xamarin/maccore@beef68bf1e Merge pull request dotnet#1792 from xamarin/swift-o-matic-demangle-static * xamarin/maccore@558b62da62 typo * xamarin/maccore@5905981ad5 Added existential metatype * xamarin/maccore@ed7d4b8b19 Merge pull request dotnet#1784 from xamarin/swift-o-matic-bound-generics * xamarin/maccore@84f0bed939 Promote bound generics in closures to warnings, not errors. Diff: https://github.com/xamarin/maccore/compare/348833cb21c75ce1e82b477f405c8ef4bed9812c..809b2def3933d59811c3761e55c64351be94f6d3
This is in part so we get xamarin/maccore#1924 -> [mlaunch] Connect to devices on a background thread. That should hopefully fix device not found issues we're having on some bots/ New commits in xamarin/macios-binaries: * xamarin/macios-binaries@01d34af Bump mlaunch to xamarin/maccore@809b2def39 (#24) Diff: https://github.com/xamarin/macios-binaries/compare/b474fa2e732974fde2edbfe054f23c5eefd0255b..01d34af6b03e81cefbb30d964e58fca66da86c4a New commits in xamarin/maccore: * xamarin/maccore@809b2def39 [mlaunch] Connect to devices on a background thread. (#1778) (#1924) * xamarin/maccore@5215c09e8c Merge pull request #1923 from xamarin/swift-o-matic-hello-protocol-list-type * xamarin/maccore@21447e2538 I. Can't. Believe. I'm. Checking. This. In. * xamarin/maccore@da6518f920 Added ProtocolListTypeSpec * xamarin/maccore@a9b9a0f5b3 Merge pull request #1920 from xamarin/swift-o-matic-bye-swift-protocol * xamarin/maccore@01e9420598 Lose all the SwiftProtocol related types. * xamarin/maccore@ca3bd0ab5b Merge pull request #1919 from xamarin/swift-redo-regular-protocols * xamarin/maccore@f534abee12 Now with existential containers * xamarin/maccore@9e180a823a Merge pull request #1911 from xamarin/swift-o-matic-string-convertible * xamarin/maccore@9874985856 Typo * xamarin/maccore@26731ff5cb Next step in Protocol revamp * xamarin/maccore@9fe4cdd652 Merge pull request #1904 from xamarin/swift-o-matic-hashable * xamarin/maccore@a1cd988dda iOS include * xamarin/maccore@f1fc694da6 Revamped hashable. * xamarin/maccore@16a6629a43 Merge pull request #1902 from xamarin/swift-o-matic-comparable * xamarin/maccore@a98db5b976 Dead symbol, changed symbol. * xamarin/maccore@3c38895694 Reworked Swift.Comparable to be defined in terms of EveryProtocol * xamarin/maccore@ef1d3c1397 Merge pull request #1895 from xamarin/swift-o-matic-equatable * xamarin/maccore@1c1a57fa4f Try again and get all the files, thanks. * xamarin/maccore@ec0a5b99b7 Revised EveryProtocol, updated Equatable * xamarin/maccore@198a489387 Simplified EveryProtocol, revised Equatable * xamarin/maccore@ee7710a186 Merge pull request #1894 from xamarin/swift-o-matic-every-protocol * xamarin/maccore@4fc0810fd2 Let's not leak memory, OK? * xamarin/maccore@451c0ba18d Try a little dispose magic. * xamarin/maccore@864854e407 Minor tweak to public API * xamarin/maccore@052990af11 Adding in EveryProtocol object * xamarin/maccore@b7f1347fcf Merge pull request #1893 from xamarin/swift-o-matic-protocol-binding * xamarin/maccore@df4aefe447 no swap files, vi. * xamarin/maccore@1e6bf8d4ef Merge pull request #1892 from xamarin/swift-o-matic-protocol-binding * xamarin/maccore@e46a543544 Typo * xamarin/maccore@fea9514c69 Let's document! * xamarin/maccore@9b5ecdfdce Merge pull request #1890 from xamarin/swift-o-matic-fail-on-wrong-version * xamarin/maccore@0b4afae5f3 Put in a hard fail on compiler version mismatch errors. * xamarin/maccore@d1475a43d1 Merge pull request #1881 from xamarin/swift-o-matic-NRE * xamarin/maccore@900e453695 Fixes and NRE from SCLAlertView * xamarin/maccore@0164c0ae83 Merge pull request #1873 from xamarin/swift-o-matic-README * xamarin/maccore@211b05a515 READMEs for errors, reminder to check README and associated issues in Makefile * xamarin/maccore@74650bf3f8 [SoM] Add '/usr/lib/swift' as an rpath before any other rpaths. (#1857) * xamarin/maccore@73dd23d00b Merge pull request #1859 from xamarin/swift-o-matic-SwiftLocation * xamarin/maccore@6704604de1 Add SwiftLocation * xamarin/maccore@e96ab505d8 Merge pull request #1855 from xamarin/swift-o-matic-bye-bye-dormant-3rd-party * xamarin/maccore@c17c506738 Remove dormant 3rd Party Tests * xamarin/maccore@366e201f11 Merge pull request #1854 from xamarin/swift-o-matic-update-3rd-party * xamarin/maccore@da748a9a1d Updated makefiles for projects that have updated to Swift 4.2 or > * xamarin/maccore@2e371bdaf2 Merge pull request #1849 from xamarin/swift-o-matic-gentler-errors * xamarin/maccore@921c21251d Lighten up on errors, get paper-switch * xamarin/maccore@f4fc280efe Merge pull request #1844 from xamarin/swift-o-matic-lottie * xamarin/maccore@e47aa6b50c Adding lottie-ios * xamarin/maccore@cf09fd4c59 [SoM] Copy swift libraries to foo.app/Frameworks for non-macOS apps. (#1842) * xamarin/maccore@a4af9cdd2d Merge pull request #1841 from xamarin/swift-o-matic-gentler-skip * xamarin/maccore@fc7cd38f64 [SoM] Handle the new BuildVersion load command. (#1827) * xamarin/maccore@8666e81b7d Ha-ha! When you make errors become warnings, tests that depend on errors change. * xamarin/maccore@e42a8c394f continue... * xamarin/maccore@3b0d6bc0e6 [SoM] Don't duplicate the nuget version number. (#1838) * xamarin/maccore@143afaf991 [msbuild] No need to use a shell function to resolve a relative path in make. (#1839) * xamarin/maccore@cbe86e0152 [SoM] Add a helpful make target to create a nuget and setup a local feed repository for it. (#1837) * xamarin/maccore@cfaaf1c5a5 [SoM] Enable swift's Stable ABI. (#1836) * xamarin/maccore@79166d9755 Made errors more lenient, added Hue framework. * xamarin/maccore@f4b0feeb55 Merge pull request #1830 from xamarin/swift-o-matic-prop-closure * xamarin/maccore@a14198fdee whitespace * xamarin/maccore@285874eceb handle ()->() and ()->type properly * xamarin/maccore@4785afe4ea Handle closures as return values. * xamarin/maccore@e89b80ca53 [SoM] Don't redownload the swift toolchain if we already have the file. (#1825) * xamarin/maccore@217a608e72 [SoM] Improve installed scripts. (#1826) * xamarin/maccore@ff283225b6 [SoM] Fix typo in type name. (#1824) * xamarin/maccore@189ea0cba7 Merge pull request #1818 from xamarin/swift-o-matic-SwiftMessages-NRE * xamarin/maccore@937541e0a6 restore back original code. * xamarin/maccore@30be8a354a continue on null * xamarin/maccore@dfceb83692 Merge pull request #1816 from xamarin/swift-o-matic-warn-not-fail * xamarin/maccore@b32e33e71d Make warnings, not errors. * xamarin/maccore@84504ced5e Merge pull request #1814 from xamarin/swift-o-matic-fix-predicate * xamarin/maccore@82000e1a63 [submission] Fix makefile and clarify README (#1805) * xamarin/maccore@d0ebe3b175 Remove stale predicate. * xamarin/maccore@de6143449a Merge pull request #1806 from xamarin/swift-o-matic-c-structs * xamarin/maccore@e10ef79504 C struct exceptions * xamarin/maccore@a272402c7c Add the developerid required to run the notarization tests (#1804) * xamarin/maccore@747c18c482 Merge pull request #1803 from xamarin/swift-o-matic-date-nuance * xamarin/maccore@716082fd5e Moved string constants to SwiftFoundationConstants * xamarin/maccore@f250ca5418 Merge pull request #1799 from xamarin/swift-o-matic-date * xamarin/maccore@4d9a764e90 Basic support for Foundation.Date * xamarin/maccore@5ef84bc50c Merge pull request #1795 from xamarin/swift-o-matic-ctor-finding * xamarin/maccore@0899c35771 Demote error to warning. * xamarin/maccore@ba80294413 Drop the mono-extensions dependency. (#1789) * xamarin/maccore@ca616ef842 Merge pull request #1793 from xamarin/swift-o-matic-spring-fwk * xamarin/maccore@f0cd48c28c Fix name conflict * xamarin/maccore@beef68bf1e Merge pull request #1792 from xamarin/swift-o-matic-demangle-static * xamarin/maccore@558b62da62 typo * xamarin/maccore@5905981ad5 Added existential metatype * xamarin/maccore@ed7d4b8b19 Merge pull request #1784 from xamarin/swift-o-matic-bound-generics * xamarin/maccore@84f0bed939 Promote bound generics in closures to warnings, not errors. Diff: https://github.com/xamarin/maccore/compare/348833cb21c75ce1e82b477f405c8ef4bed9812c..809b2def3933d59811c3761e55c64351be94f6d3

Port the generator to IKVM.
The old System.Reflection-based code is still present, so we can easily switch (using a Makefile variable) back if we want to (the code will be removed fairly soon though, it's not a long-term goal to maintain both implementations).
This branch is also executed on wrench: https://wrench.internalx.com/Wrench/ViewTable.aspx?lane_id=4534&host_id=379
Generator diff: https://gist.github.com/rolfbjarne/d2779dab71c6db7f59a98bf306f7ed8d