Skip to content

Commit 0ec70ac

Browse files
Merge pull request #4702 from dotty-staging/decompile-fix-literals
Fix printing float literals
2 parents 6199d07 + 52bb00d commit 0ec70ac

File tree

4 files changed

+107
-3
lines changed

4 files changed

+107
-3
lines changed

library/src/scala/tasty/util/ShowSourceCode.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ class ShowSourceCode[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
712712
case Constant.Short(v) => this += v
713713
case Constant.Int(v) => this += v
714714
case Constant.Long(v) => this += v += "L"
715-
case Constant.Float(v) => this += v
715+
case Constant.Float(v) => this += v += "f"
716716
case Constant.Double(v) => this += v
717717
case Constant.Char(v) => this += '\'' += escapedChar(v) += '\''
718718
case Constant.String(v) => this += '"' += escapedString(v) += '"'

tests/run-with-compiler/quote-run-constants.check

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ true
2121
1
2222
2
2323
3L
24-
4.0
24+
4.0f
2525
5.0
2626
"xyz"
2727
"\n\\\"\'"

tests/run-with-compiler/quote-type-tags.check

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ true.asInstanceOf[scala.Boolean]
55
1.toShort.asInstanceOf[scala.Short]
66
2.asInstanceOf[scala.Int]
77
3L.asInstanceOf[scala.Long]
8-
4.0.asInstanceOf[scala.Float]
8+
4.0f.asInstanceOf[scala.Float]
99
5.0.asInstanceOf[scala.Double]
1010
5.0.asInstanceOf[scala.Boolean]

tests/run/literals.decompiled

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
/** Decompiled from out/runTestFromTasty/run/literals/Test.class */
2+
object Test {
3+
def αρετη: java.lang.String = "alpha rho epsilon tau eta"
4+
case class GGG(i: scala.Int) {
5+
def αα(that: Test.GGG): scala.Int = GGG.this.i.+(that.i)
6+
override def hashCode(): scala.Int = {
7+
var acc: scala.Int = 767242539
8+
acc = scala.runtime.Statics.mix(acc, GGG.this.i)
9+
scala.runtime.Statics.finalizeHash(acc, 1)
10+
}
11+
override def equals(x$0: scala.Any): scala.Boolean = GGG.this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
12+
case x$0: Test.GGG @scala.unchecked() =>
13+
GGG.this.i.==(x$0.i)
14+
case _ =>
15+
false
16+
})
17+
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(GGG.this)
18+
override def canEqual(that: scala.Any): scala.Boolean = that.isInstanceOf[Test.GGG @scala.unchecked()]
19+
override def productArity: scala.Int = 1
20+
override def productPrefix: java.lang.String = "GGG"
21+
override def productElement(n: scala.Int): scala.Any = n match {
22+
case 0 =>
23+
GGG.this._1
24+
case _ =>
25+
throw new java.lang.IndexOutOfBoundsException(n.toString())
26+
}
27+
}
28+
object GGG extends scala.Function1[scala.Int, Test.GGG]
29+
def check_success[a](name: scala.Predef.String, closure: => a, expected: a): scala.Unit = {
30+
scala.Predef.print("test ".+(name))
31+
try {
32+
val actual: a = closure
33+
if (actual.==(expected)) {
34+
scala.Predef.print(" was successful")
35+
} else {
36+
scala.Predef.print(" failed: expected ".+(expected).+(", found ").+(actual))
37+
}
38+
} catch {
39+
case exception: scala.Throwable =>
40+
{
41+
scala.Predef.print(" raised exception ".+(exception))
42+
}
43+
}
44+
scala.Predef.println()
45+
}
46+
def main(args: scala.Array[scala.Predef.String]): scala.Unit = {
47+
Test.check_success[scala.Char]("\'\\u0024\' == \'$\'", '$', '$')
48+
Test.check_success[scala.Char]("\'\\u005f\' == \'_\'", '_', '_')
49+
Test.check_success[scala.Char]("65.asInstanceOf[Char] == \'A\'", 65.asInstanceOf[scala.Char], 'A')
50+
Test.check_success[java.lang.String]("\"\\141\\142\" == \"ab\"", "ab", "ab")
51+
Test.check_success[java.lang.String]("\"\\0x61\\0x62\".trim() == \"x61\\0x62\"", "\00x61\00x62".substring(1), "x61\00x62")
52+
scala.Predef.println()
53+
Test.check_success[scala.Boolean]("(65 : Byte) == \'A\'", (65: scala.Byte).==('A'), true)
54+
scala.Predef.println()
55+
Test.check_success[scala.Int]("0X01 == 1", 1, 1)
56+
Test.check_success[scala.Int]("0x01 == 1", 1, 1)
57+
Test.check_success[scala.Int]("0x10 == 16", 16, 16)
58+
Test.check_success[scala.Int]("0xa == 10", 10, 10)
59+
Test.check_success[scala.Int]("0x0a == 10", 10, 10)
60+
Test.check_success[scala.Int]("+0x01 == 1", 1.unary_+, 1)
61+
Test.check_success[scala.Int]("+0x10 == 16", 16.unary_+, 16)
62+
Test.check_success[scala.Int]("+0xa == 10", 10.unary_+, 10)
63+
Test.check_success[scala.Int]("+0x0a == 10", 10.unary_+, 10)
64+
Test.check_success[scala.Int]("-0x01 == -1", -1, -1)
65+
Test.check_success[scala.Int]("-0x10 == -16", -16, -16)
66+
Test.check_success[scala.Int]("-0xa == -10", -10, -10)
67+
Test.check_success[scala.Int]("-0x0a == -10", -10, -10)
68+
Test.check_success[scala.Int]("0x7fffffff == 2147483647", 2147483647, 2147483647)
69+
Test.check_success[scala.Int]("0x80000000 == -2147483648", -2147483648, -2147483648)
70+
Test.check_success[scala.Int]("0xffffffff == -1", -1, -1)
71+
scala.Predef.println()
72+
Test.check_success[scala.Long]("1l == 1L", 1L, 1L)
73+
Test.check_success[scala.Long]("1L == 1l", 1L, 1L)
74+
Test.check_success[scala.Long]("1.asInstanceOf[Long] == 1l", 1.asInstanceOf[scala.Long], 1L)
75+
Test.check_success[scala.Long]("0x7fffffffffffffffL == 9223372036854775807L", 9223372036854775807L, 9223372036854775807L)
76+
Test.check_success[scala.Long]("0x8000000000000000L == -9223372036854775808L", -9223372036854775808L, -9223372036854775808L)
77+
Test.check_success[scala.Long]("0xffffffffffffffffL == -1L", -1L, -1L)
78+
scala.Predef.println()
79+
Test.check_success[scala.Float]("1e1f == 10.0f", 10.0f, 10.0f)
80+
Test.check_success[scala.Float](".3f == 0.3f", 0.3f, 0.3f)
81+
Test.check_success[scala.Float]("0f == 0.0f", 0.0f, 0.0f)
82+
Test.check_success[scala.Float]("3.14f == 3.14f", 3.14f, 3.14f)
83+
Test.check_success[scala.Float]("6.022e23f == 6.022e23f", 6.022E23f, 6.022E23f)
84+
Test.check_success[scala.Float]("09f == 9.0f", 9.0f, 9.0f)
85+
Test.check_success[scala.Float]("1.asInstanceOf[Float] == 1.0", 1.asInstanceOf[scala.Float], 1.0f)
86+
Test.check_success[scala.Float]("1l.asInstanceOf[Float] == 1.0", 1L.asInstanceOf[scala.Float], 1.0f)
87+
scala.Predef.println()
88+
Test.check_success[scala.Double]("1e1 == 10.0", 10.0, 10.0)
89+
Test.check_success[scala.Double](".3 == 0.3", 0.3, 0.3)
90+
Test.check_success[scala.Double]("0.0 == 0.0", 0.0, 0.0)
91+
Test.check_success[scala.Double]("0d == 0.0", 0.0, 0.0)
92+
Test.check_success[scala.Double]("01.23 == 1.23", 1.23, 1.23)
93+
Test.check_success[scala.Double]("01.23d == 1.23d", 1.23, 1.23)
94+
Test.check_success[scala.Double]("3.14 == 3.14", 3.14, 3.14)
95+
Test.check_success[scala.Double]("1e-9d == 1.0e-9", 1.0E-9, 1.0E-9)
96+
Test.check_success[scala.Double]("1e137 == 1.0e137", 1.0E137, 1.0E137)
97+
Test.check_success[scala.Double]("1.asInstanceOf[Double] == 1.0", 1.asInstanceOf[scala.Double], 1.0)
98+
Test.check_success[scala.Double]("1l.asInstanceOf[Double] == 1.0", 1L.asInstanceOf[scala.Double], 1.0)
99+
scala.Predef.println()
100+
Test.check_success[scala.Int]("\"\".length()", "\032".length(), 1)
101+
val ggg: scala.Int = Test.GGG.apply(1).αα(Test.GGG.apply(2))
102+
Test.check_success[scala.Int]("ggg == 3", ggg, 3)
103+
}
104+
}

0 commit comments

Comments
 (0)