scala / bug

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

Error infering String Type as Object with getOrElse #10250

Open scabug opened 7 years ago

scabug commented 7 years ago

scala> import play.api.libs.json._ ; Option("a").getOrElse("b") : Json.JsValueWrapper
<console>:13: error: type mismatch;
 found   : Object
 required: play.api.libs.json.Json.JsValueWrapper
        Option("a").getOrElse("b") : Json.JsValueWrapper
                                           ^
scabug commented 7 years ago

Imported From: https://issues.scala-lang.org/browse/SI-10250?orig=1 Reporter: Mohammed Azougarh (momoAG) Affected Versions: 2.12.1

fmilano commented 6 years ago

I confirm that this is happening to me in 2.12.4

SethTisue commented 6 years ago

reproducible without the external dependency with:

Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_152).
Type in expressions for evaluation. Or try :help.

scala> import scala.language.implicitConversions
import scala.language.implicitConversions

scala> class Foo; implicit def string2foo(s: String): Foo = new Foo
defined class Foo
string2foo: (s: String)Foo

scala> (Option("a").getOrElse("b"): String): Foo
res0: Foo = Foo@646427f7

scala> Option("a").getOrElse("b"): Foo
<console>:15: error: type mismatch;
 found   : Object
 required: Foo
       Option("a").getOrElse("b"): Foo
                            ^

whereas in Dotty:

scala> Option("a").getOrElse("b"): Foo 
val res0: Foo = Foo@7ea08277