[swift-dev] Swift 2.2 review request: SE-0022 #selector implementation
Thomas Krajacic
thomas.krajacic at gmail.com
Fri Feb 5 02:22:50 CST 2016
Hi,
I am seeing a problem with the new #selector syntax (latest development snapshot 2016-05-02):
It is not possible to put selectors in an array anymore it seems (example for checking an action against a list of selectors):
[#selector(MainWindowController.save(_:)), #selector(MainWindowController.discardChanges(_:))].contains(anItem.action())
and Xcode reports:
...MainWindowController.swift:132:53: Expected '#]' at end of object literal expression
...MainWindowController.swift:132:53: Expected 'let' or 'var' in conditional; use '&&' to join boolean conditions
...MainWindowController.swift:132:133: Braced block of statements is an unused closure
...MainWindowController.swift:132:133: Expression resolves to an unused function
The old syntax works fine:
[Selector("save:"), Selector("discardChanges:")].contains(anItem.action())
Was this change expected?
Thanks for looking into it,
Thomas
> On 29 Jan 2016, at 01:17, Douglas Gregor via swift-dev <swift-dev at swift.org> wrote:
>
>>
>> On Jan 28, 2016, at 3:48 PM, Jordan Rose <jordan_rose at apple.com <mailto:jordan_rose at apple.com>> wrote:
>>
>>>
>>> On Jan 28, 2016, at 12:12, Douglas Gregor via swift-dev <swift-dev at swift.org <mailto:swift-dev at swift.org>> wrote:
>>>
>>> Hi all,
>>>
>>> I’ve finished the implementation of SE-0022, the #selector expression. Part of that proposal is the deprecation of the use of string literals to form Selectors, which is something we would like to do in Swift 2.2 (so that we can remove it outright in Swift 3).
>>>
>>> However, it’s a non-trivial set of changes, and I’d like review of the corresponding commits before pulling it into the branch. The commits are:
>>>
>>> https://github.com/apple/swift/commit/dccf3155f1fe5400df0c9b51f21a3b8f7fa09b9c <https://github.com/apple/swift/commit/dccf3155f1fe5400df0c9b51f21a3b8f7fa09b9c> (Jordan reviewed this)
>>> https://github.com/apple/swift/commit/7c0e087cd514c926d9eaa3082679edff626effc8 <https://github.com/apple/swift/commit/7c0e087cd514c926d9eaa3082679edff626effc8>
>>> https://github.com/apple/swift/commit/89834f8d5fcce652401ecaeec4addace48cb2fae <https://github.com/apple/swift/commit/89834f8d5fcce652401ecaeec4addace48cb2fae>
>>> https://github.com/apple/swift/commit/f7407f6a4d2c9b20ef1d2aab6dbaff5f9419aa88
>>> https://github.com/apple/swift/commit/00313a1e7ec4934a1df12541b9a8f2683f28ed67
>>> https://github.com/apple/swift/commit/1a830fa541705594bd4b3936de24a20b5b943059 (Jordan reviewed this)
>>> https://github.com/apple/swift/commit/2a42664129d7e95d182a91858fb268e50373b68b
>>> https://github.com/apple/swift/commit/37441e1b46cd97d42161455dd712d17ce2ccfe87
>>> https://github.com/apple/swift/commit/0a359424d7d5bd31c9e7a2f98c15cd9a1fa40328
>>> https://github.com/apple/swift/commit/9a0241bb3bcdde3531d0ba683e8d6668c50c9f58
>>
>> I reviewed all of these except
>>
>> https://github.com/apple/swift/commit/89834f8d5fcce652401ecaeec4addace48cb2fae <https://github.com/apple/swift/commit/89834f8d5fcce652401ecaeec4addace48cb2fae> (IRGen)
>> https://github.com/apple/swift/commit/f7407f6a4d2c9b20ef1d2aab6dbaff5f9419aa88 <https://github.com/apple/swift/commit/f7407f6a4d2c9b20ef1d2aab6dbaff5f9419aa88> (SILGen)
>>
>> I will say I'm not happy that we don't have any real code completion or IDE support. That seems important for putting it into a release.
>
> The code completion we have is just filling in the “selector(@objc method)” after “#” in expression contexts, which is very weak. There are two things we want:
>
> * Better code completion in general for compound names, e.g., after “UIView.”, we probably want to see (or have some easy way to get to) the compound name “insertSubview(_:aboveSubview:)”. That’s really SE-0021 not having good code completion.
> * Within #selector(…), we want to see compound names as the primary completions after a type name, and limit to @objc methods.
>
> - Doug
>
>
> _______________________________________________
> swift-dev mailing list
> swift-dev at swift.org <mailto:swift-dev at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-dev <https://lists.swift.org/mailman/listinfo/swift-dev>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160205/64f6af0c/attachment.html>
More information about the swift-dev
mailing list