Skip to content

Commit 58a5620

Browse files
authored
Merge pull request #8399 from dotty-staging/fix-#8398
fix #8398 - dont parse hex literals as floating point
2 parents 54385d4 + 6f993d2 commit 58a5620

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

compiler/src/dotty/tools/dotc/typer/Typer.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -558,9 +558,15 @@ class Typer extends Namer
558558
case _ =>
559559
}
560560
else if (target.isRef(defn.FloatClass))
561-
return lit(floatFromDigits(digits))
561+
tree.kind match {
562+
case Whole(16) => // cant parse hex literal as float
563+
case _ => return lit(floatFromDigits(digits))
564+
}
562565
else if (target.isRef(defn.DoubleClass))
563-
return lit(doubleFromDigits(digits))
566+
tree.kind match {
567+
case Whole(16) => // cant parse hex literal as double
568+
case _ => return lit(doubleFromDigits(digits))
569+
}
564570
else if (target.isValueType && isFullyDefined(target, ForceDegree.none)) {
565571
// If expected type is defined with a FromDigits instance, use that one
566572
val fromDigitsCls = tree.kind match {

tests/run/i8398.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@main def Test =
2+
assert((0x7FFF_FFFF : Float) == 2.14748365E9f)
3+
assert((0x7FFF_FFFF : Double) == 2.147483647E9)

0 commit comments

Comments
 (0)