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

[master] [generator] Do not generate PlatformNotSupportedException in chaining .ctor #7092

Merged
merged 2 commits into from
Sep 25, 2019

Commits on Sep 24, 2019

  1. [generator] Do not generate PlatformNotSupportedException in chaining…

    … .ctor
    
    Types that are new in 64bits only OS are generated differently on 32bits
    bindings. They mainly throw a `PlatformNotSupportedException` so it's
    easier to diagnose (than a crash) what's happening at runtime.
    
    This works well in all cases except one. When a new type, let's say
    `UIMenuElement` is added **and** serves as a new base type for existing
    types.
    
    `UIKeyCommand` (iOS 7) -> `UICommand` (iOS 13)-> `UIMenuElement` (iOS 13)
    
    This is _correct_ as new base types can be added (in ObjC and C#).
    However the generated code for the constructors of `UICommand` and
    `UIMenuElement` would be throwing a `PlatformNotSupportedException`
    which breaks the `UIKeyCommand` on 32 bits devices.
    
    We fixed this in a few places by tweaking the availability attribute
    but that requires spotting the new base type while doing bindings and
    that is error prone [1][2].
    
    This PR simply does let the `protected` constructor, using when chaining,
    be generated normally. It's simpler and will cover all the cases (without
    requiring hacks in the availability of those types)
    
    [1] xamarin#7083
    [2] xamarin#7084
    Sebastien Pouliot authored and monojenkins committed Sep 24, 2019
    Configuration menu
    Copy the full SHA
    4542c08 View commit details
    Browse the repository at this point in the history
  2. [tests] Only run new test on iOS

    Sebastien Pouliot authored and monojenkins committed Sep 24, 2019
    Configuration menu
    Copy the full SHA
    cea9f3f View commit details
    Browse the repository at this point in the history