scala / bug

Scala 2 bug reports only. Please, no questions — proper bug reports only.
https://scala-lang.org
230 stars 21 forks source link

clarify leading infix example #12970

Open som-snytt opened 3 months ago

som-snytt commented 3 months ago

Questions are not bug reports

Even if the bug is a head-scratcher?

Reproduction steps

Scala version: 2.13.13 vs 3.4.1

class C {
  def ??? (i: Int): Int = i+1
}
object Test extends App {
  val ??? = 6
  val c = new C
  val x =
    c
    ???
    ??? match { case i => i }

  val y =
    "hi"
    +
    "bye" match { case "bye" => "bi" case _ => "huh" }
  println(y)
  println(x)
}

Problem

As rehashed at https://github.com/scala/scala3/discussions/19763

x is 6 in Scala 3 where leading infix is rejected; 7 in Scala 2 which accepts it.

It would be nice to either forward-port the behavior (and specify it) or, since leading infix is now behind -Xsource-options and no one will use it, let the sleeping dog lie.

som-snytt commented 3 months ago

The possible tweak is that the old suggestion to insert a semi is not leading-infix aware. (The semi would go between the lines.)

mlo.scala:10: error: value *= is not a member of Int
possible cause: maybe a semicolon is missing before `value *=`?
  Expression does not convert to assignment because receiver is not assignable.
    `a` *= 6
        ^