SIP-33 - Priority-based infix type precedence#6147
SIP-33 - Priority-based infix type precedence#6147soronpo wants to merge 1 commit intoscala:2.13.xfrom
Conversation
|
@milessabin or @SethTisue please trigger community-build check for this PR. |
|
@soronpo I seem to have dropped the ball there, sorry. if you rebase this against current 2.13.x, I'll run the community build. |
|
@soronpo Just a (re) heads up: this is currently failing on Jenkins and it has merge conflicts with the target branch. Given SIP-33 has been accepted, it would be lovely to actually ship it too! 😄 |
|
Yeah, thanks. I was waiting for the 2.13-M4 community build to stabilize on green before resolving this issue (because I want to make sure I'm not breaking anything). |
|
@SethTisue can you please run a community build for this branch? |
there are currently 46 green projects in the 2.13 build (out of ~170). that's enough to give some assurance. stronger additional assurance is available if you backport a change to 2.12.x (even if it's not intended to actually be merged there) and run the community build on that. I'll trigger a build for you sometime today. |
|
@SethTisue why was the build aborted? |
|
NM, I've now noticed the |
|
the build aborted because nscala-time's tests hung. might be related to the PR, or might be transient, let's try again: https://scala-ci.typesafe.com/job/scala-2.13.x-integrate-community-build/1292/ |
|
|
@soronpo where do we stand, here? |
|
It's a bit problematic for me to debug the issue since the failure is in a compiler-plugin (kind-projector). |
|
okay. we can reopen the ticket when work resumes.
I see... feel free to ask for help (here, or on Gitter or Discourse) with workflow issues |
Instead of:
val x: A with B = new A with B {}
One can now write:
val x: A & B = new A with B {}
However mixing `&` with other infix operators is not allowed, because
unlike Scala 3, we do not take operator precedence into account, cf scala#6147.
Instead of:
val x: A with B = new A with B {}
One can now write:
val x: A & B = new A with B {}
However mixing `&` with other infix operators is not allowed, because
unlike Scala 3, we do not take operator precedence into account, cf scala#6147.
Instead of:
val x: A with B = new A with B {}
One can now write:
val x: A & B = new A with B {}
However mixing `&` with other infix operators is not allowed, because
unlike Scala 3, we do not take operator precedence into account, cf scala#6147.
This implementation is a bit more restrictive than the Scala 3 one which
allows shadowing the built-in `&` with your own `&` type operator, but
this cannot be done with the simple parser-based approach of this PR.
Instead of:
val x: A with B = new A with B {}
One can now write:
val x: A & B = new A with B {}
However mixing `&` with other infix operators is not allowed, because
unlike Scala 3, we do not take operator precedence into account, cf scala#6147.
This implementation is a bit more restrictive than the Scala 3 one which
allows shadowing the built-in `&` with your own `&` type operator, but
this cannot be done with the simple parser-based approach of this PR.
Instead of:
val x: A with B = new A with B {}
One can now write:
val x: A & B = new A with B {}
However mixing `&` with other infix operators is not allowed, because
unlike Scala 3, we do not take operator precedence into account, cf scala#6147.
This implementation is a bit more restrictive than the Scala 3 one which
allows shadowing the built-in `&` with your own `&` type operator, but
this cannot be done with the simple parser-based approach of this PR.
Instead of:
val x: A with B = new A with B {}
One can now write:
val x: A & B = new A with B {}
However mixing `&` with other infix operators is not allowed, because
unlike Scala 3, we do not take operator precedence into account, cf scala#6147.
This implementation is a bit more restrictive than the Scala 3 one which
allows shadowing the built-in `&` with your own `&` type operator, but
this cannot be done with the simple parser-based approach of this PR.
Implements SIP33: Priority-based infix type precedence
https://docs.scala-lang.org/sips/priority-based-infix-type-precedence.html