[swift-evolution] [Pitch] Limiting member expression with right-bound period
rintaro ishizaki
fs.output at gmail.com
Tue Nov 1 23:28:40 CDT 2016
2016-11-02 13:14 GMT+09:00 Benjamin Spratling via swift-evolution <
swift-evolution at swift.org>:
>
> CGRect(origin:.zero, size:..
>
> is pretty nice. Why do you want to get rid of it?
>
No, I'm proposing to reject CGRect(origin:. zero, size:..)
'.' whitespace identifier
Reject whitespace in this.
'.' identifier
is OK.
>
>
> return values
> .flatMap {
>
is OK. but
return valus
.
flatMap {
should be rejected.
> //code
> }
>
.filter {
> //code
> }
> .sorted { /* code */ }
> .first
>
> is also pretty clean, considering.
>
>
> On Nov 1, 2016, at 11:06 PM, rintaro ishizaki via swift-evolution <
> swift-evolution at swift.org> wrote:
>
> Hi all,
>
> The compiler currently accepts these expressions:
>
> x = expr . member
> x = expr .
> member
>
> x = expr
> .
>
> member
>
> x = .
>
> implicitMember
>
>
> I propose to reject them because this could cause some unnecessary
> confusion.
> (especially after SE-0071
> <https://github.com/apple/swift-evolution/blob/master/proposals/0071-member-keywords.md>
> )
> For instance:
>
> _ = foo(.
> func bar(x: Int) { ... }
>
>
> The current compiler parses this as:
>
> // call foo(_:_:)
> _ = foo(.func // implicit-member-expression
> // missing ','
> // call bar(x:_:) with argument 'Int' and trailing closure
> bar(x: Int) { ... }
> // missing closing ')'
>
>
> Here's the summary of *current* behavior:
>
> // accept
> expr.member
>
> // accept
> expr .member
>
> // accept
> expr
> .member
>
> // reject with fix-it to remove white spaces
> expr. member
>
> // two distinct statements
> expr. // reject as missing member name
> member
>
> // accept
> expr . member
>
> // accept
> expr .
> member
>
>
> I propose to change the last 2 examples:
>
> // reject with fix-it to remove white spaces
> some . member
>
> // two distinct statements
> some . // reject as missing member name
> member
>
>
> I think, this is consistent behavior with '.' at postfix position.
>
> Specifically:
>
> - If '.' is at *prefix-operator* or *unspaced-binary-operator*
> position, accept.
> - If the next token after '.' is at the same line, propose to fix-it.
> - Otherwise, reject it as missing member name.
>
> This affect following expressions and types in the grammer:
>
> expressions:
> self-method-expression
> self-initializer-expression
> superclass-method-expression
> superclass-initializer-expression
> implicit-member-expression
> initializer-expression
> explicit-member-expression
> postfix-self-expression
> explicit-member-expression
> postfix-self-expression
> types:
> type-identifier
> metatype-type
>
> Of course this is a source breaking change, though.
> Any thought?
>
> _______________________________________________
> 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/20161102/e98742f7/attachment.html>
More information about the swift-evolution
mailing list