Skip to content

Commit 9fe541e

Browse files
committed
Fix tests
1 parent ae1d7d9 commit 9fe541e

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

tests/neg/harmonize.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,17 @@ object Test {
5353
inline val b = 33
5454
def f(): Int = b + 1
5555
val a1 = Array(b, 33, 'a')
56-
val b1: Array[Int] = a1 // error: no widening
56+
val b1: Array[Int] = a1 // OK, Array constructor selection uses weak conformance
5757
val a2 = Array(b, 33, 'a', f())
58-
val b2: Array[Int] = a2 // error: no widening
58+
val b2: Array[Int] = a2 // OK, Array constructor selection uses weak conformance
5959
val a3 = Array(1.0f, 'a', 0)
60-
val b3: Array[Float] = a3 // error: no widening
60+
val b3: Array[Float] = a3 // OK, Array constructor selection uses weak conformance
6161
val a4 = Array(1.0f, 1L)
62-
val b4: Array[Double] = a4 // error: no widening
62+
val b4: Array[Double] = a4 // error: Array[Float] is picked
6363
val a5 = Array(1.0f, 1L, f())
64-
val b5: Array[AnyVal] = a5
64+
val b5: Array[AnyVal] = a5 // error: Array[Float] is picked
6565
val a6 = Array(1.0f, 1234567890)
66-
val b6: Array[AnyVal] = a6
66+
val b6: Array[AnyVal] = a6 // error: Array[Float] is picked
6767

6868
def totalDuration(results: List[Long], cond: Boolean): Long =
6969
results.map(r => if (cond) r else 0).sum

tests/run/weak-conformance.scala

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,17 @@ object Test extends App {
2121
}
2222

2323
locally {
24+
// Arrays behave differently from lists since they have overloaded constructors, and weak
25+
// conformance does apply for selecting one. See Issue #7630.
2426
def f(): Int = b + 1
25-
val x1 = Array(b, 33, 5.5) ; x1: Array[Double] // b is an inline val
26-
val x2 = Array(f(), 33, 5.5) ; x2: Array[AnyVal] // f() is not a constant
27+
val x1 = Array(b, 33, 5.5) ; x1: Array[Double]
28+
val x2 = Array(f(), 33, 5.5) ; x2: Array[Double]
2729
val x3 = Array(5, 11L) ; x3: Array[Long]
28-
val x4 = Array(5, 11L, 5.5) ; x4: Array[AnyVal] // Long and Double found
30+
val x4 = Array(5, 11L, 5.5) ; x4: Array[Double]
2931
val x5 = Array(1.0f, 2) ; x5: Array[Float]
30-
val x6 = Array(1.0f, 1234567890); x6: Array[AnyVal] // loss of precision
31-
val x7 = Array(b, 33, 'a') ; x7: Array[Char]
32-
val x8 = Array(5.toByte, 11) ; x8: Array[Byte]
32+
val x6 = Array(1.0f, 1234567890); x6: Array[Float]
33+
val x7 = Array(b, 33, 'a') ; x7: Array[Int]
34+
val x8 = Array(5.toByte, 11) ; x8: Array[Int]
3335

3436
val x9: Array[AnyVal] = Array(1.0f, 0)
3537
assert(x9(0).getClass == classOf[java.lang.Float])

0 commit comments

Comments
 (0)