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-clauseopt function-signature requirement-clauseopt >>> function-bodyopt >>> >>> union-style-enum → indirectopt enum enum-name >>> generic-parameter-clauseopt type-inheritance-clauseopt >>> requirement-clauseopt { union-style-enum-membersopt } >>> >>> raw-value-style-enum → enum enum-name generic-parameter-clauseopt >>> type-inheritance-clause requirement-clauseopt { >>> raw-value-style-enum-members *}* >>> >>> struct-declaration → attributesopt access-level-modifieropt struct >>> struct-name generic-parameter-clauseopt type-inheritance-clauseopt >>> requirement-clauseopt struct-body >>> >>> class-declaration → attributesopt access-level-modifieropt finalopt >>> class class-name generic-parameter-clauseopt >>> type-inheritance-clauseopt requirement-clauseopt class-body >>> >>> protocol-method-declaration → function-head function-name >>> generic-parameter-clauseopt function-signature requirement-clauseopt >>> >>> protocol-initializer-declaration → initializer-head >>> generic-parameter-clauseopt parameter-clause throwsopt >>> requirement-clauseopt >>> >>> protocol-initializer-declaration → initializer-head >>> generic-parameter-clauseopt parameter-clause rethrows >>> requirement-clauseopt >>> >>> initializer-declaration → initializer-head generic-parameter-clauseopt >>> parameter-clause throwsopt requirement-clauseopt initializer-body >>> >>> initializer-declaration → initializer-head generic-parameter-clauseopt >>> parameter-clause rethrows requirement-clauseopt 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