[swift-evolution] [Discussion] Replacing Equal Signs with Colons For Attribute Arguments
Thorsten Seitz
tseitz42 at icloud.com
Wed Feb 17 11:08:31 CST 2016
+1 to the proposal
-Thorsten
> Am 17.02.2016 um 02:05 schrieb Erica Sadun via swift-evolution <swift-evolution at swift.org>:
>
> Adding:
>
> @available(*, unavailable, renamed: "MyRenamedProtocol")
> typealias MyProtocol = MyRenamedProtocol
>
> @warn_unused_result(mutable_variant: "sortInPlace")
> public func sort() -> [Self.Generator.Element]
>
> @available(*, deprecated, message: "it will be removed in Swift 3. Use the 'generate()' method on the collection.")
> public init(_ bounds: Range<Element>)
>
> gist: https://gist.github.com/erica/d96011a5c22d9b995b91
>
> -- E
>
>>> On Feb 16, 2016, at 5:43 PM, Charles Kissinger <crk at akkyra.com> wrote:
>>>
>>>
>>> On Feb 16, 2016, at 4:08 PM, Erica Sadun via swift-evolution <swift-evolution at swift.org> wrote:
>>>
>>> Ricardo,
>>>
>>> This proposal is so narrow that I believe *every single example possible* is already in there under motivation. Just sub out each "=" for ":" and you have the entire extent of the change.
>>
>> Hi Erica,
>>
>> I think Ricardo means full examples of the new style, including @ symbol, attribute-name, parens, attribute argument label and example attribute arguments. There are no full examples in the proposal of either the existing or proposed style.
>>
>> It might seem nit-picky (and it is :-)), but that’s the only way for us to evaluate how it will actually look in practice. (Yes, we could look up a few and type them in somewhere ourselves, but it would be nice to have them in the proposal.)
>>
>> —CK
>>
>>>
>>> -- Erica
>>>
>>>> On Feb 16, 2016, at 5:03 PM, Ricardo Parada <rparada at mac.com> wrote:
>>>>
>>>> Hi Erica,
>>>>
>>>> I understand this is a draft and even though it may be obvious to many, I would add a few examples with the proposed solution.
>>>>
>>>> Thanks
>>>> Ricardo Parada
>>>>
>>>>
>>>>> On Feb 16, 2016, at 5:42 PM, Erica Sadun via swift-evolution <swift-evolution at swift.org> wrote:
>>>>>
>>>>> Thoughts and feedback appreciated. Thank you, -- Erica
>>>>>
>>>>>
>>>>> Replacing Equal Signs with Colons For Attribute Arguments
>>>>>
>>>>> Proposal: TBD
>>>>> Author(s): Erica Sadun
>>>>> Status: TBD
>>>>> Review manager: TBD
>>>>> Introduction
>>>>>
>>>>> Attribute arguments are unlike other Swift language arguments. At the call site, they use = instead of colons to distinguish argument names from passed values. This proposal brings attributes into compliance with Swift standard practices by replacing the use of "=" with ":" in this one-off case.
>>>>>
>>>>> Discussion took place on the Swift Evolution mailing list in the [Discussion] Replacing Equal Signs with Colons For Attribute Arguments thread. Thanks to Doug Gregor for suggesting this enhancement.
>>>>>
>>>>> Motivation
>>>>>
>>>>> Attributes enable developers to annotate declarations and types with keywords that constrain behavior. Recognizable by their at-sign "@" prefix, attributes communicate features, characteristics, restrictions, and expectations of types and declarations to the Swift compiler. Common attributes include @noescape for parameters that cannot outlive the lifetime of a call, @convention, to indicates whether a type's calling conventions follows a Swift, C, or (Objective-C) block model, and @available to enumerate a declaration's compatibility with platform and OS versions. Swift currently offers about a dozen distinct attributes, and is likely to expand this vocabulary in future language updates.
>>>>>
>>>>> Some attributes accept arguments: @attribute-name(attribute-arguments) including @available and @warn_unused_result. In the current grammar, an equal sign separates attribute argument keywords from values:
>>>>>
>>>>> introduced=version-number
>>>>> deprecated=version-number
>>>>> obsoleted=version-number
>>>>> message=message
>>>>> renamed=new-name
>>>>> mutable_variant=method-name
>>>>> Using = is out of step with other Swift parameterization call-site patterns. Tweaking the grammar to match the rest of Swift introduces a small change that adds consistency across the language.
>>>>>
>>>>> parameter name: parameter value
>>>>> Detail Design
>>>>>
>>>>> This proposal replaces the use of = with : in the balanced tokens used to compose an attribute argument clause along the following lines:
>>>>>
>>>>> attribute → @ attribute-name attribute-argument-clause<sub>opt</sub>
>>>>> attribute-name → identifier
>>>>> attribute-argument-clause → ( balanced-tokens<sub>opt<opt> )
>>>>> balanced-tokens → balanced-token
>>>>> balanced-tokens → balanced-token, balanced-tokens
>>>>> balanced-token → attribute-argument-label : attribute argument-value
>>>>> This design can be summarized as "wherever current Swift attributes use =, use : instead".
>>>>>
>>>>> Alternatives Considered
>>>>>
>>>>> There are no alternatives to put forth other than not accepting this proposal.
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution at swift.org
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160217/1386d7d6/attachment.html>
More information about the swift-evolution
mailing list