xamarin-macios/tests/generator
Alex Soto 78052430ab [generator] Fixes bug 52570 - [generator] warn when [Static] is used in a [Category] (#1862)
https://bugzilla.xamarin.com/show_bug.cgi?id=52570

In some cases you will find **static** members inside categories like in the following example:

```objc
@interface FooObject (MyFooObjectExtension)
+ (BOOL)boolMethod:(NSRange *)range;
@end
```

This will lead to an **incorrect** Category C# interface definition:

```csharp
[Category]
[BaseType (typeof (FooObject))]
interface FooObject_Extensions {

	// Incorrect Interface definition
	[Static]
	[Export ("boolMethod:")]
	bool BoolMethod (NSRange range);
}
```

This is incorrect because in order to use the `BoolMethod` extension you need an instance of `FooObject` but you are binding an ObjC **static** extension, this is a side effect due to the fact of how C# extension methods are implemented.

The only way to use the above definitions is by the following ugly code:

```csharp
(null as FooObject).BoolMethod (range);
```

The recommendation to avoid this is to inline the `BoolMethod` definition inside the `FooObject` interface definition itself, this will allow you to call this extension like it is intended `FooObject.BoolMethod (range)`.

```csharp
[BaseType (typeof (NSObject))]
interface FooObject {

	[Static]
	[Export ("boolMethod:")]
	bool BoolMethod (NSRange range);
}
```

We will issue a warning (BI1117) whenever we find a `[Static]` member inside a `[Category]` definition. If you really want to have `[Static]` members inside your `[Category]` definitions you can silence the warning by using `[Category (allowStaticMembers: true)]` or by decorating either your member or `[Category]` interface definition with `[Internal]`.
2017-03-14 13:03:13 -06:00
..
.gitignore [tests] Import 2016-05-26 15:06:52 +02:00
Makefile [generator] Fixes bug 52570 - [generator] warn when [Static] is used in a [Category] (#1862) 2017-03-14 13:03:13 -06:00
NSApplicationPublicEnsureMethods.cs [tests] Import 2016-05-26 15:06:52 +02:00
README.md [tests] Import 2016-05-26 15:06:52 +02:00
arrayfromhandlebug.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bi1036.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bi1046.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bindas1048error.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bindas1049error.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bindas1050modelerror.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bindas1050protocolerror.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bindastests.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bmac-with-hyphen-in-name.cs [tests] Import 2016-05-26 15:06:52 +02:00
bmac_smoke.cs [tests] Import 2016-05-26 15:06:52 +02:00
btouch-with-hyphen-in-name.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug15283.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug15307.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug15799.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug16036.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug17232.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug23041.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug24078-ignore-methods-events.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug27428.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug27430.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug27986.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug29493.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug31788.cs [tests] Import 2016-05-26 15:06:52 +02:00
bug34042.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug35176.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug36457.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug37527-missing-property.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug37527-wrong-property.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug39614.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug40282.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug42855.cs [generator] Fixes bug 42855 generator should report an error for [Protocol] without a [Model] that specify a [BaseType] (#1859) 2017-03-10 09:52:32 -06:00
bug43579.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug46292.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
bug52570.cs [generator] Fixes bug 52570 - [generator] warn when [Static] is used in a [Category] (#1862) 2017-03-14 13:03:13 -06:00
bug52570allowstaticmembers.cs [generator] Fixes bug 52570 - [generator] warn when [Static] is used in a [Category] (#1862) 2017-03-14 13:03:13 -06:00
bug52570classinternal.cs [generator] Fixes bug 52570 - [generator] warn when [Static] is used in a [Category] (#1862) 2017-03-14 13:03:13 -06:00
bug52570methodinternal.cs [generator] Fixes bug 52570 - [generator] warn when [Static] is used in a [Category] (#1862) 2017-03-14 13:03:13 -06:00
classNameCollision-enum.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
classNameCollision.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
desk63279A.cs [tests] Import 2016-05-26 15:06:52 +02:00
desk63279B.cs [tests] Import 2016-05-26 15:06:52 +02:00
desk79124.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
forcedtype.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
forum54078.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
multiple-api-definitions1.cs [tests] Import 2016-05-26 15:06:52 +02:00
multiple-api-definitions2-a.cs [tests] Import 2016-05-26 15:06:52 +02:00
multiple-api-definitions2-b.cs [tests] Import 2016-05-26 15:06:52 +02:00
property-redefination-ios.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
property-redefination-mac.cs [tests] Import 2016-05-26 15:06:52 +02:00
protocol-duplicate-abstract-error.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
protocol-duplicate-abstract.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
protocol-duplicate-method-diff-length.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
protocol-duplicate-method-diff-out.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
protocol-duplicate-method-diff-return.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
protocol-duplicate-method-diff-type.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
sof20696157.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
sof20696157.sh [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
strong-dict-support-templated-dicts.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00
virtualwrap.cs [tests][generator] Port XI/Classic tests to XI/Unified. (#1745) 2017-02-22 16:47:11 +01:00

README.md

Tests for the binding generator

New test

  • Create a C# file with the api definition.
  • Add the C# file to the Makefile, like all the other tests. Remember to add it to the 'all' target.