[swift-evolution] [Review] SE-0077: Improved operator declarations

Антон Жилин antonyzhilin at gmail.com
Fri May 20 15:25:39 CDT 2016


2016-05-20 20:58 GMT+03:00 John McCall <rjmccall at apple.com>:

> The transitivity rule plus the ability to define precedence relationships
> in both directions on a new precedence group allows a new precedence group
> to create a precedence relationship between existing unrelated precedence
> groups.  This should be forbidden.

Agreed, although there is an alternate solution to allow global-scope
relationship definition.
Trying to write it formally:

Precedence relationships that, by transitivity rule, create relationship
between two imported groups, is an error. Example:

// Module X
precedencegroup A { }
precedencegroup C { }

// Module Y
import X
precedencegroup B { precedence(> A) precedence(< C) }

This results in compilation error "B uses transitivity to define
relationship between imported groups A and C".
The rationale behind this is that otherwise one can create relationships
between standard precedence groups that are confusing for the reader.

What's the purpose of equality relationships between precedence groups?

Agreed, will remove.

> Your proposal should call out the special treatment of the Assignment and
> Ternary groups.

Do you mean that most operators should define greater precedence than
Assignment / Ternary? Or there should be some other special treatment?

- Anton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160520/84e01062/attachment.html>

More information about the swift-evolution mailing list