dotnet / dotnet/macios

Getters/Setters with [NoMac] still generates Selector.GetHandle fields

Open
#17,316 0 comments 0 reactions 0 assignees View on GitHub
app-size copilot-candidate enhancement generator good first issue
Dominant language
C#
Stars
2.9k
Forks
576
Avg merge
2d 12h
Merged PRs (30d)
123

Description

It seems that accessors with [NoMac] attributes doesn't prevent the generator from writing code to fetch the selector for those unavailable members.

This change:

```diff
From e62bdcd7c44f00377069a20e19a3c6e0bdf819ec Mon Sep 17 00:00:00 2001
From: Rolf Bjarne Kvinge
Date: Thu, 19 Jan 2023 09:24:26 +0100
Subject: [PATCH] [Foundation] There's no reason to conditionally exclude code
for macOS when the member has a NoMac attribute.

This ensures that all platform assemblies know that the member doesn't exist
on macOS.
---
src/foundation.cs | 2 --
1 file changed, 2 deletions(-)

diff --git a/src/foundation.cs b/src/foundation.cs
index b6e27e43e02..d1a2b681464 100644
--- a/src/foundation.cs
+++ b/src/foundation.cs
@@ -10980,10 +10980,8 @@ partial interface NSItemProvider : NSCopying {
[Export ("preferredPresentationSize")]
CGSize PreferredPresentationSize {
get;
-#if !MONOMAC
[NoMac]
set;
-#endif
}

[NoiOS, NoTV, NoWatch, NoMacCatalyst]
```

shouldn't result in this diff in the generator code:

```diff
diff --git a/old/dotnet/macos/generated-sources/Foundation/NSItemProvider.g.cs b/new/dotnet/macos/generated-sources/Foundation/NSItemProvider.g.cs
index 2509cf3..4694821 100644
--- a/old/dotnet/macos/generated-sources/Foundation/NSItemProvider.g.cs
+++ b/new/dotnet/macos/generated-sources/Foundation/NSItemProvider.g.cs
@@ -153,6 +153,9 @@ namespace Foundation {
const string selRegisteredTypeIdentifiersWithFileOptions_ = "registeredTypeIdentifiersWithFileOptions:";
static readonly NativeHandle selRegisteredTypeIdentifiersWithFileOptions_Handle = Selector.GetHandle ("registeredTypeIdentifiersWithFileOptions:");
[BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
+ const string selSetPreferredPresentationSize_ = "setPreferredPresentationSize:";
+ static readonly NativeHandle selSetPreferredPresentationSize_Handle = Selector.GetHandle ("setPreferredPresentationSize:");
+ [BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
const string selSetPreviewImageHandler_ = "setPreviewImageHandler:";
static readonly NativeHandle selSetPreviewImageHandler_Handle = Selector.GetHandle ("setPreviewImageHandler:");
[BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
diff --git a/old/mac/full/Foundation/NSItemProvider.g.cs b/new/mac/full/Foundation/NSItemProvider.g.cs
index 47cbfdd..b2fa0d1 100644
--- a/old/mac/full/Foundation/NSItemProvider.g.cs
+++ b/new/mac/full/Foundation/NSItemProvider.g.cs
@@ -150,6 +150,9 @@ namespace Foundation {
const string selRegisteredTypeIdentifiersWithFileOptions_ = "registeredTypeIdentifiersWithFileOptions:";
static readonly IntPtr selRegisteredTypeIdentifiersWithFileOptions_Handle = Selector.GetHandle ("registeredTypeIdentifiersWithFileOptions:");
[BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
+ const string selSetPreferredPresentationSize_ = "setPreferredPresentationSize:";
+ static readonly IntPtr selSetPreferredPresentationSize_Handle = Selector.GetHandle ("setPreferredPresentationSize:");
+ [BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
const string selSetPreviewImageHandler_ = "setPreviewImageHandler:";
static readonly IntPtr selSetPreviewImageHandler_Handle = Selector.GetHandle ("setPreviewImageHandler:");
[BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
diff --git a/old/mac/mobile/Foundation/NSItemProvider.g.cs b/new/mac/mobile/Foundation/NSItemProvider.g.cs
index 47cbfdd..b2fa0d1 100644
--- a/old/mac/mobile/Foundation/NSItemProvider.g.cs
+++ b/new/mac/mobile/Foundation/NSItemProvider.g.cs
@@ -150,6 +150,9 @@ namespace Foundation {
const string selRegisteredTypeIdentifiersWithFileOptions_ = "registeredTypeIdentifiersWithFileOptions:";
static readonly IntPtr selRegisteredTypeIdentifiersWithFileOptions_Handle = Selector.GetHandle ("registeredTypeIdentifiersWithFileOptions:");
[BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
+ const string selSetPreferredPresentationSize_ = "setPreferredPresentationSize:";
+ static readonly IntPtr selSetPreferredPresentationSize_Handle = Selector.GetHandle ("setPreferredPresentationSize:");
+ [BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
const string selSetPreviewImageHandler_ = "setPreviewImageHandler:";
static readonly IntPtr selSetPreviewImageHandler_Handle = Selector.GetHandle ("setPreviewImageHandler:");
[BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
```

Ref: https://github.com/xamarin/xamarin-macios/pull/17299

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.