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> 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> のメッセージ: > >> 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 >> Author(s): David Hart, Developer, Pry Jahkola >> Status: TBD >> Review manager: TBD >> 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 >> >> 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. >> >> 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. >> >> 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 >> >> Impact on existing code >> >> This proposal impacts all declarations which contain where clauses expect >> for extension declarations and will therefore require a Fix-It. >> >> 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