[Patch][ObjC][Proposal] NSValue literals
jahanian
fjahanian at apple.com
Mon Dec 15 10:58:47 PST 2014
Looks like there is policy to not issue diagnostics on not yet introduced methods
(grep for AR_NotYetIntroduced in clang). So you need to handle this
yourself by making the call to Decl::getAvailability.
- Fariborz
On Dec 13, 2014, at 10:08 AM, AlexDenisov <1101.debian at gmail.com> wrote:
> Well, I started implementation of warnings regarding availability and faced with an issue:
> I decided to check how clang behaves and what kind of diagnostics it shows in that situation,
> but I've found that clang just compiles the code without any warnings.
>
> I've run this command:
>
> clang main.m -fsyntax-only -fmodules -Weverything
>
> with this code:
>
> //main.m
> @import Foundation;
>
> @interface Future : NSObject
> + (instancetype)newFuture __attribute__((availability(macosx,introduced=10.10)));
> @end
>
> @implementation Future
> + (instancetype)newFuture { return nil; }
> @end
>
> int main(int argc, const char * argv[]) {
> Future *f = [Future newFuture];
> return f == nil;
> }
>
> And everything was just fine (excerpt of unused variables argc/argv).
>
> So the question is: what is expected behaviour regarding boxed expressions and availability?
> I can’t even find such tests for NSNumber/NSString.
>
> I would appreciate any suggestions or advice.
>
> Best regards, Alex.
> --
> AlexDenisov
> Software Engineer, https://github.com/AlexDenisov
>
> On 11 Dec 2014 at 22:12:06, AlexDenisov (1101.debian at gmail.com) wrote:
>
>> > there is a good chance we won’t be adding boxing of pointers.
>>
>> Do you mean pointers to void (valueWithPointer) or all the pointers, like NSObject * (valueWithNonretainedObject)?
>>
>> Anyway, should I get rid of that functionality before submitting updated patch or keep it and, probably, drop later?
>>
>> --
>> AlexDenisov
>> Software Engineer, https://github.com/AlexDenisov
>>
>> On 10 Dec 2014 at 23:00:38, jahanian (fjahanian at apple.com) wrote:
>>
>>>
>>>> On Dec 9, 2014, at 12:21 AM, AlexDenisov <1101.debian at gmail.com> wrote:
>>>>
>>>>
>>>> >> Also, why can’t place this under the umbrella objc_boxed_expressions?
>>>>
>>>> Version 3.5, for example, supports objc_boxed_expression but not NSValue+boxed_expressions,
>>>> which might cause weird compilation fails. Or did I get it wrong?
>>> No wrong :).
>>>
>>>>
>>>> + // Otherwise, require a declaration of NSValue.
>>>> + S.Diag(Loc, diag::err_undeclared_nsvalue);
>>>> + return nullptr;
>>>> + }
>>>> + } else if (!S.NSValueDecl->hasDefinition()) {
>>>> + S.Diag(Loc, diag::err_undeclared_nsvalue);
>>>>
>>>> >> Maybe we should have a clearer diagnostic here.
>>>>
>>>> Makes sense, I used NSNumber' implementation here. I'd appreciate any suggestions or advice on
>>>> how to improve diagnostic here (and, probably, for NSNumber)
>>>
>>> Probably should allude to NSValue (or NSNumber) having no definition (only forward declared).
>>> But, it is not something I strongly argue for.
>>>
>>> P.S. there is a good chance we won’t be adding boxing of pointers.
>>>
>>> Thanks, Fairborz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141215/e33e9183/attachment.html>
More information about the cfe-commits
mailing list