-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed as not planned
Closed as not planned
Copy link
Labels
area:inlinearea:opaque-typesitype:bugstat:needs triageEvery issue needs to have an "area" and "itype" labelEvery issue needs to have an "area" and "itype" label
Description
Compiler version
any
Minimized code
object Test:
opaque type ExtraString = String
opaque type NumString <: ExtraString = String
opaque type OtherString <: ExtraString = String
def makeExtraString(): String & ExtraString = "not a number"
extension (t: NumString)
def number: Double =
(t : String).toDouble
extension [T1 <: ExtraString](inline a: T1)
inline def test: ExtraString =
inline a match
case x: NumString =>
println(x.number) // runtime crash stack trace points here
x
case x: ExtraString =>
println("expected behavior")
x
end test
end Test
import Test.*
@main def main() =
val m1: String & ExtraString = makeExtraString()
m1.test
Output
runtime output:
Exception in thread "main" java.lang.NumberFormatException: For input string: "not a number"
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.base/java.lang.Double.parseDouble(Double.java:651)
at scala.collection.StringOps$.toDouble$extension(StringOps.scala:951)
at Test$.number(X2.scala:11)
at X2$package$.main(X2.scala:17)
at main.main(X2.scala:28)
Expectation
Print out "expected behavior"
Metadata
Metadata
Assignees
Labels
area:inlinearea:opaque-typesitype:bugstat:needs triageEvery issue needs to have an "area" and "itype" labelEvery issue needs to have an "area" and "itype" label