Re: Dealing with an @available warning

2018-10-25 Thread Saagar Jha
FWIW, I don’t see this in Objective-C++ either.

Saagar Jha

> On Oct 23, 2018, at 17:54, James Walker  wrote:
> 
> On 10/23/18 5:36 PM, Saagar Jha wrote:
>> Saagar Jha
>>> On Oct 23, 2018, at 17:15, James Walker >> > wrote:
>>> 
>>> On 10/23/18 3:12 PM, Saagar Jha wrote:
 What build command are you using? I’m not seeing any warnings with this 
 code, compiled with clang -x objective-c -framework AppKit 
 -Wunguarded-availability -mmacosx-version-min=10.9 - :
>>> 
>>> If you compile with a deployment version of 10.9, I don't know if it even 
>>> bothers to look at the else clause.  Try -mmacosx-version-min=10.8.
>> Oops, that was a typo. I meant -mmacosx-version-min=10.8. Either way, 
>> @available is checked at runtime, so both cases must be compiled anyways.
 
 #import 
 
 int main() {
 NSPrintInfo *info;
 if (@available(macOS 10.9, *)) {
 info.orientation = NSPaperOrientationPortrait;
 } else {
 info.orientation = NSPortraitOrientation;
 }
 }
 
 Regardless, if you really need a fix, you should be able to cast through 
 NSInteger, instead of NSPrintingOperation, as a fallback.
>>> 
>>> I'm not sure what you mean by "cast through NSInteger", but if I say
>>> 
>>> info.orientation = (NSInteger) NSPortraitOrientation;
>>> 
>>> then there's an error, "assigning to NSPaperOrientation from incompatible 
>>> type NSInteger (aka long)”.
>> I’m not seeing that error at all, even with -Wall -Wextra. What flags are 
>> you using?
> 
> 
> Hmm, it appears to be because I'm using Objective-C++.  When I put that line 
> in a .m file, there was no error.
> 
> 
>>> 
 
 Saagar Jha
 
> On Oct 23, 2018, at 15:01, James Walker  > wrote:
> 
> I had some code like this
> 
> pInfo.orientation = NSPaperOrientationPortrait;
> 
> where pInfo is of type NSPrintInfo*.  When compiling with 
> -Wunguarded-availability, I got a warning saying that 
> NSPaperOrientationPortrait is only available on macOS 10.9 and later. So 
> I wanted to change it to:
> 
> if (@available( macOS 10.9, * ))
> {
> pInfo.orientation = NSPaperOrientationPortrait;
> }
> else
> {
> pInfo.orientation = NSPortraitOrientation
> }
> 
> But then I get an error, "assigning to NSPaperOrientation from 
> incompatible type NSPrintingOrientation".  If I fix the error by adding a 
> typecast to NSPaperOrientation, then I get a warning that 
> NSPaperOrientation is only available on 10.9 and later.  Is there any way 
> out of this roundabout, other than using a later deployment target?
>>> 
> 

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Dealing with an @available warning

2018-10-23 Thread James Walker

On 10/23/18 5:36 PM, Saagar Jha wrote:


Saagar Jha

On Oct 23, 2018, at 17:15, James Walker > wrote:


On 10/23/18 3:12 PM, Saagar Jha wrote:
What build command are you using? I’m not seeing any warnings with 
this code, compiled with clang -x objective-c -framework AppKit 
-Wunguarded-availability -mmacosx-version-min=10.9 - :


If you compile with a deployment version of 10.9, I don't know if it 
even bothers to look at the else clause.  Try -mmacosx-version-min=10.8.


Oops, that was a typo. I meant -mmacosx-version-min=10.8. Either way, 
@available is checked at runtime, so both cases must be compiled anyways.




#import 

int main() {
NSPrintInfo *info;
if (@available(macOS 10.9, *)) {
info.orientation = NSPaperOrientationPortrait;
} else {
info.orientation = NSPortraitOrientation;
}
}

Regardless, if you really need a fix, you should be able to cast 
through NSInteger, instead of NSPrintingOperation, as a fallback.


I'm not sure what you mean by "cast through NSInteger", but if I say

info.orientation = (NSInteger) NSPortraitOrientation;

then there's an error, "assigning to NSPaperOrientation from 
incompatible type NSInteger (aka long)”.


I’m not seeing that error at all, even with -Wall -Wextra. What flags 
are you using?



Hmm, it appears to be because I'm using Objective-C++.  When I put that 
line in a .m file, there was no error.









Saagar Jha

On Oct 23, 2018, at 15:01, James Walker > wrote:


I had some code like this

pInfo.orientation = NSPaperOrientationPortrait;

where pInfo is of type NSPrintInfo*.  When compiling with 
-Wunguarded-availability, I got a warning saying that 
NSPaperOrientationPortrait is only available on macOS 10.9 and 
later. So I wanted to change it to:


if (@available( macOS 10.9, * ))
{
pInfo.orientation = NSPaperOrientationPortrait;
}
else
{
pInfo.orientation = NSPortraitOrientation
}

But then I get an error, "assigning to NSPaperOrientation from 
incompatible type NSPrintingOrientation".  If I fix the error by 
adding a typecast to NSPaperOrientation, then I get a warning that 
NSPaperOrientation is only available on 10.9 and later.  Is there 
any way out of this roundabout, other than using a later deployment 
target?






___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Dealing with an @available warning

2018-10-23 Thread Saagar Jha

Saagar Jha

> On Oct 23, 2018, at 17:15, James Walker  wrote:
> 
> On 10/23/18 3:12 PM, Saagar Jha wrote:
>> What build command are you using? I’m not seeing any warnings with this 
>> code, compiled with clang -x objective-c -framework AppKit 
>> -Wunguarded-availability -mmacosx-version-min=10.9 - :
> 
> If you compile with a deployment version of 10.9, I don't know if it even 
> bothers to look at the else clause.  Try -mmacosx-version-min=10.8.

Oops, that was a typo. I meant -mmacosx-version-min=10.8. Either way, 
@available is checked at runtime, so both cases must be compiled anyways.

>> 
>> #import 
>> 
>> int main() {
>>  NSPrintInfo *info;
>>  if (@available(macOS 10.9, *)) {
>>  info.orientation = NSPaperOrientationPortrait;
>>  } else {
>>  info.orientation = NSPortraitOrientation;
>>  }
>> }
>> 
>> Regardless, if you really need a fix, you should be able to cast through 
>> NSInteger, instead of NSPrintingOperation, as a fallback.
> 
> I'm not sure what you mean by "cast through NSInteger", but if I say
> 
> info.orientation = (NSInteger) NSPortraitOrientation;
> 
> then there's an error, "assigning to NSPaperOrientation from incompatible 
> type NSInteger (aka long)”.

I’m not seeing that error at all, even with -Wall -Wextra. What flags are you 
using?

> 
>> 
>> Saagar Jha
>> 
>>> On Oct 23, 2018, at 15:01, James Walker >> > wrote:
>>> 
>>> I had some code like this
>>> 
>>> pInfo.orientation = NSPaperOrientationPortrait;
>>> 
>>> where pInfo is of type NSPrintInfo*.  When compiling with 
>>> -Wunguarded-availability, I got a warning saying that 
>>> NSPaperOrientationPortrait is only available on macOS 10.9 and later. So I 
>>> wanted to change it to:
>>> 
>>> if (@available( macOS 10.9, * ))
>>> {
>>> pInfo.orientation = NSPaperOrientationPortrait;
>>> }
>>> else
>>> {
>>> pInfo.orientation = NSPortraitOrientation
>>> }
>>> 
>>> But then I get an error, "assigning to NSPaperOrientation from incompatible 
>>> type NSPrintingOrientation".  If I fix the error by adding a typecast to 
>>> NSPaperOrientation, then I get a warning that NSPaperOrientation is only 
>>> available on 10.9 and later.  Is there any way out of this roundabout, 
>>> other than using a later deployment target?
> 

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Dealing with an @available warning

2018-10-23 Thread James Walker


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Dealing with an @available warning

2018-10-23 Thread James Walker


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Dealing with an @available warning

2018-10-23 Thread Greg Parker


> On Oct 23, 2018, at 3:01 PM, James Walker  wrote:
> 
> I had some code like this
> 
> pInfo.orientation = NSPaperOrientationPortrait;
> 
> where pInfo is of type NSPrintInfo*.  When compiling with 
> -Wunguarded-availability, I got a warning saying that 
> NSPaperOrientationPortrait is only available on macOS 10.9 and later. So I 
> wanted to change it to:
> 
> if (@available( macOS 10.9, * ))
> {
>   pInfo.orientation = NSPaperOrientationPortrait;
> }
> else
> {
>   pInfo.orientation = NSPortraitOrientation
> }
> 
> But then I get an error, "assigning to NSPaperOrientation from incompatible 
> type NSPrintingOrientation".  If I fix the error by adding a typecast to 
> NSPaperOrientation, then I get a warning that NSPaperOrientation is only 
> available on 10.9 and later.  Is there any way out of this roundabout, other 
> than using a later deployment target?

Dumb answer: use #pragma clang diagnostic to disable the guarded availability 
check on that line. Something like this:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availability"
pInfo.orientation = (NSPaperOrientation)NSPortraitOrientation;
#pragma clang diagnostic pop

You should file a bug report against AppKit. I'm not sure there is any benefit 
to marking a plain C enum as unavailable. Use of a new enum would work fine 
when running on an old OS version.


-- 
Greg Parker gpar...@apple.com  Runtime 
Wrangler


___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Dealing with an @available warning

2018-10-23 Thread Saagar Jha
What build command are you using? I’m not seeing any warnings with this code, 
compiled with clang -x objective-c -framework AppKit -Wunguarded-availability 
-mmacosx-version-min=10.9 - :

#import 

int main() {
NSPrintInfo *info;
if (@available(macOS 10.9, *)) {
info.orientation = NSPaperOrientationPortrait;
} else {
info.orientation = NSPortraitOrientation;
}
}

Regardless, if you really need a fix, you should be able to cast through 
NSInteger, instead of NSPrintingOperation, as a fallback.

Saagar Jha

> On Oct 23, 2018, at 15:01, James Walker  wrote:
> 
> I had some code like this
> 
> pInfo.orientation = NSPaperOrientationPortrait;
> 
> where pInfo is of type NSPrintInfo*.  When compiling with 
> -Wunguarded-availability, I got a warning saying that 
> NSPaperOrientationPortrait is only available on macOS 10.9 and later. So I 
> wanted to change it to:
> 
> if (@available( macOS 10.9, * ))
> {
>   pInfo.orientation = NSPaperOrientationPortrait;
> }
> else
> {
>   pInfo.orientation = NSPortraitOrientation
> }
> 
> But then I get an error, "assigning to NSPaperOrientation from incompatible 
> type NSPrintingOrientation".  If I fix the error by adding a typecast to 
> NSPaperOrientation, then I get a warning that NSPaperOrientation is only 
> available on 10.9 and later.  Is there any way out of this roundabout, other 
> than using a later deployment target?
> ___
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/saagar%40saagarjha.com
> 
> This email sent to saa...@saagarjha.com

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Dealing with an @available warning

2018-10-23 Thread James Walker

I had some code like this

pInfo.orientation = NSPaperOrientationPortrait;

where pInfo is of type NSPrintInfo*.  When compiling with 
-Wunguarded-availability, I got a warning saying that 
NSPaperOrientationPortrait is only available on macOS 10.9 and later. 
So I wanted to change it to:


if (@available( macOS 10.9, * ))
{
pInfo.orientation = NSPaperOrientationPortrait;
}
else
{
pInfo.orientation = NSPortraitOrientation
}

But then I get an error, "assigning to NSPaperOrientation from 
incompatible type NSPrintingOrientation".  If I fix the error by adding 
a typecast to NSPaperOrientation, then I get a warning that 
NSPaperOrientation is only available on 10.9 and later.  Is there any 
way out of this roundabout, other than using a later deployment target?

___

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com