[Proposal] Custom operators


(Anton Zhilin) #1

Sorry for the delay, please mail me a copy next time :slight_smile:

Inline:

Антон Жилин:

> No new suggestions have come in 2 days, and so I have created a pull
request!
> https://github.com/apple/swift-evolution/pull/253
1. Assignment operators in Swift 2.2 have an `assignment` keyword:
infix operator += {
  associativity right
  precedence 90
  assignment
}

Right, it was planned to be removed anyway, and so I did not include it in
the new syntax on purpose. Added removal of `assignment` to "details".

2. If assignments can't be chained, should they be non-associative?

Agreed, these operators are actually non-associative right now. Fixed that,
thanks!

3. Instead of `precedencegroup`, I suggest an abstract declaration:
operator Multiplicative {
  associativity(left)
  precedence(> Additive)
}
infix operator * : Multiplicative

Basically, change `precedencegroup` to `operator`?
In terms of keywords, operator will be only a local keyword in my proposal,
so I can say that each variant reserves one keyword.

In terms of name itself, I think, `precedencegroup` is more to the point.
Precedence groups are already mentioned in the standard.
On the other hand, I agree that we should not introduce new entities when
possible.
Overall, I'm inclined to leave currently proposed syntax.

4. In your proposal, `NilCoalesting` should be `NilCoalescing`.
-- Ben

Fixed.

- Anton