Name updated: https://github.com/apple/swift-evolution/pull/281

> On 02 May 2016, at 09:39, David Hart <da...@hartbit.com> wrote:
> 
> I'll update the proposal ASAP :) Btw, wasn't sure if you wanted to be cited 
> as co-author because I did not have your express approval, but I thought it 
> was the right thing to do. Was in a bit in a hurry to send the Pull Request 
> before going to work.
> 
> On 02 May 2016, at 09:20, Developer <devteam.cod...@gmail.com 
> <mailto:devteam.cod...@gmail.com>> wrote:
> 
>> Hi there, just wanted to let you know I have a name!  It's unfortunate that 
>> the mailing list won't accept the update I've made (this has been the 
>> 3rd-ish time I've tried).
>> 
>> ~Robert Widmann
>> 
>> 2016/05/02 3:16、David Hart <da...@hartbit.com <mailto:da...@hartbit.com>> 
>> のメッセージ:
>> 
>>> Hello swift-evolution,
>>> 
>>> I took the pitch originally from Developer to move the where clause out of 
>>> the generic parameter list, with improvements brought up by Pyry Jahkola, 
>>> and wrote a proposal for it. I opened a Pull Request, but if anybody wants 
>>> to bring some modifications to it before it is merged, please let me know 
>>> what you think:
>>> 
>>> Move where clause to end of declaration
>>> 
>>> Proposal: SE-XXXX 
>>> <https://github.com/apple/swift-evolution/blob/master/proposals/XXXX-move-where-expression.md>
>>> Author(s): David Hart <https://github.com/hartbit>, Developer, Pry Jahkola 
>>> <https://github.com/hartbit/swift-evolution/blob/move-where-clause/proposals/pyry.jahk...@iki.fi>
>>> Status: TBD
>>> Review manager: TBD
>>>  
>>> <https://github.com/hartbit/swift-evolution/blob/move-where-clause/proposals/XXXX-move-where-expression.md#introduction>Introduction
>>> 
>>> This proposal suggests moving the where clause to the end of the 
>>> declaration syntax, but before the body, for readability reasons. It has 
>>> been discussed at length on the following swift-evolution thread:
>>> 
>>> [Pitch] Moving where Clauses Out Of Parameter Lists 
>>> <https://github.com/hartbit/swift-evolution/blob/move-where-clause/proposals/GMANE_DOWN_FOR_NOW>
>>>  
>>> <https://github.com/hartbit/swift-evolution/blob/move-where-clause/proposals/XXXX-move-where-expression.md#motivation>Motivation
>>> 
>>> The where clause in declarations can become quite long. When that happens, 
>>> it breaks the declaration syntax in two, hurting its readability. There is 
>>> also no good way of formatting the declaration syntax to make it much 
>>> better.
>>> 
>>>  
>>> <https://github.com/hartbit/swift-evolution/blob/move-where-clause/proposals/XXXX-move-where-expression.md#proposed-solution>Proposed
>>>  solution
>>> 
>>> The proposal suggests moving the where clause at the end of the 
>>> declaration, but before the body of concerned declarations. With the 
>>> proposed change, where clauses do not impede the main declaration and are 
>>> also more easily formattable. For example, here is the same function 
>>> declaration before and after the change: 
>>> 
>>> func anyCommonElements<T : SequenceType, U : SequenceType where
>>>     T.Generator.Element: Equatable,
>>>     T.Generator.Element == U.Generator.Element>(lhs: T, _ rhs: U) -> Bool 
>>> where
>>> {
>>>     ...
>>> }
>>> 
>>> func anyCommonElements<T : SequenceType, U : SequenceType>(lhs: T, _ rhs: 
>>> U) -> Bool where
>>>     T.Generator.Element: Equatable,
>>>     T.Generator.Element == U.Generator.Element
>>> {
>>>     ...
>>> }
>>> This proposal has no impact on extension declarations with constraints 
>>> because those declarations already have the where clauses right before the 
>>> body. In that regard, the proposal makes the other declarations more 
>>> consistent with extension declarations.
>>> 
>>>  
>>> <https://github.com/hartbit/swift-evolution/blob/move-where-clause/proposals/XXXX-move-where-expression.md#detailed-design>Detailed
>>>  design
>>> 
>>> First of all, the grammar of generic-parameter-clause is modified to loose 
>>> the requirement- clause:
>>> 
>>> generic-parameter-clause → < ­generic-parameter-list­­ >­
>>> 
>>> The grammar of declarations are then amended to gain the 
>>> requirement-clause: 
>>> 
>>> function-declaration → function-head­ function-name­ 
>>> generic-parameter-clause­opt­ function-signature requirement-clause­opt 
>>> ­function-body­opt
>>> 
>>> union-style-enum → indirect­­opt­ ­enum ­enum-name 
>>> ­generic-parameter-clause­­opt ­type-inheritance-clause­­opt­ 
>>> requirement-clause­opt { ­union-style-enum-members­­opt­ }
>>> 
>>> raw-value-style-enum → enum ­enum-name­ generic-parameter-clause­­opt 
>>> ­type-inheritance-clause requirement-clause­opt ­{ 
>>> ­raw-value-style-enum-members­ *}­*
>>> 
>>> struct-declaration → attributes­­opt ­access-level-modifier­­opt ­struct 
>>> ­struct-name ­generic-parameter-clause­­opt ­type-inheritance-clause­­opt 
>>> requirement-clause­opt ­struct-body­
>>> 
>>> class-declaration → attributes­­opt ­access-level-modifier­opt ­final­opt 
>>> ­class ­class-name ­generic-parameter-clause­opt 
>>> ­type-inheritance-clause­opt requirement-clause­opt ­class-body­
>>> 
>>> protocol-method-declaration → function-head ­function-name 
>>> ­generic-parameter-clause­­opt ­function-signature­ requirement-clause­opt
>>> 
>>> protocol-initializer-declaration → initializer-head 
>>> ­generic-parameter-clause­­opt ­parameter-clause ­throws­­opt­ 
>>> requirement-clause­opt
>>> 
>>> protocol-initializer-declaration → initializer-head 
>>> ­generic-parameter-clause­opt ­parameter-clause­ rethrows­ 
>>> requirement-clause­opt
>>> 
>>> initializer-declaration → initializer-head ­generic-parameter-clause­­opt 
>>> ­parameter-clause ­throws­opt requirement-clause­opt ­initializer-body­
>>> 
>>> initializer-declaration → initializer-head ­generic-parameter-clause­opt 
>>> ­parameter-clause ­rethrows requirement-clause­opt ­initializer-body­
>>> 
>>>  
>>> <https://github.com/hartbit/swift-evolution/blob/move-where-clause/proposals/XXXX-move-where-expression.md#impact-on-existing-code>Impact
>>>  on existing code
>>> 
>>> This proposal impacts all declarations which contain where clauses expect 
>>> for extension declarations and will therefore require a Fix-It. 
>>> 
>>>  
>>> <https://github.com/hartbit/swift-evolution/blob/move-where-clause/proposals/XXXX-move-where-expression.md#alternatives-considered>Alternatives
>>>  considered
>>> 
>>> The first post in the swift-evolution thread originally proposed moving the 
>>> where clause just after the generic type declaration. Since then, the 
>>> original author and many other participants in the thread have agreed that 
>>> the current proposal is superior.
>>> 
>>> It was also proposed to remove the simple inheritance constraints from the 
>>> generic parameter list, but several arguments were brought up that it would 
>>> complicate declarations of simple generics which only needed inheritance 
>>> constraints.

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to