[generator] Support for generic classes in our block trampolines
- Dominant language
- C#
- Stars
- 2.9k
- Forks
- 576
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 123
Description
Binding UIKit brought some generic classes into the mix of our blocks support, see https://github.com/xamarin/xamarin-macios/pull/8992/files#diff-1ca9e8e46629c0f8806cee2c8be4aad3R22727-R22764.
Here is a proposed test case but we can adjust as needed.
```csharp
delegate T HelloGenericDelegate () where T : NSObject;
delegate T HelloGenericDelegate2 (T t1) where T : NSObject;
delegate T1 HelloGenericDelegate3 (T1 t1, T2 t2) where T1 : NSObject where T2 : NSObject;
delegate T1 HelloGenericDelegate4 (T1 t1, T2 t2, [BlockCallback] HelloGenericDelegate2 otherBlock) where T1 : NSObject where T2 : NSObject;
[BaseType(typeof(NSObject))]
interface OneGenericType
where T1 : NSObject
{
}
[BaseType(typeof(NSObject))]
interface Example
where T1 : NSObject
{
[NullAllowed, Export("one", ArgumentSemantic.Copy)]
Func One { get; set; }
[NullAllowed, Export("two", ArgumentSemantic.Copy)]
Action Two { get; set; }
[NullAllowed, Export("three", ArgumentSemantic.Copy)]
Func, OneGenericType> Three { get; set; }
[NullAllowed, Export("four", ArgumentSemantic.Copy)]
HelloGenericDelegate Four { get; set; }
[NullAllowed, Export("five", ArgumentSemantic.Copy)]
HelloGenericDelegate2 Five { get; set; }
}
interface TwoGenericsType
where T1 : NSObject
where T2 : NSObject
{
}
[BaseType(typeof(NSObject))]
interface ExampleTwo
where T1 : NSObject
where T2 : NSObject
{
[NullAllowed, Export("one", ArgumentSemantic.Copy)]
Func One { get; set; }
[NullAllowed, Export("two", ArgumentSemantic.Copy)]
Action Two { get; set; }
[NullAllowed, Export("three", ArgumentSemantic.Copy)]
Func, TwoGenericsType> Three { get; set; }
[NullAllowed, Export("four", ArgumentSemantic.Copy)]
HelloGenericDelegate3 Four { get; set; }
[NullAllowed, Export("five", ArgumentSemantic.Copy)]
HelloGenericDelegate4 Five { get; set; }
}
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.