-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5191 from som-snytt/issue/9382
SI-9382 Privatize enhanced x in Tuple2Zipped.Ops
- Loading branch information
Showing
7 changed files
with
131 additions
and
99 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
t9382.scala:3: error: value x is not a member of (List[Int], List[Int]) | ||
def f = (List(1,2,3), List(4,5,6)).x | ||
^ | ||
t9382.scala:4: error: value x is not a member of (List[Int], List[Int], List[Int]) | ||
def g = (List(1,2,3), List(4,5,6), List(7,8,9)).x | ||
^ | ||
t9382.scala:5: error: value x is not a member of (Int, Int) | ||
def huh = (1,2).x | ||
^ | ||
three errors found |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
|
||
trait T { | ||
def f = (List(1,2,3), List(4,5,6)).x | ||
def g = (List(1,2,3), List(4,5,6), List(7,8,9)).x | ||
def huh = (1,2).x | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
|
||
package scala.runtime | ||
|
||
import scala.language.postfixOps | ||
|
||
import org.junit.Assert._ | ||
import org.junit.Test | ||
import org.junit.runner.RunWith | ||
import org.junit.runners.JUnit4 | ||
|
||
/** Tests Tuple?Zipped */ | ||
@RunWith(classOf[JUnit4]) | ||
class ZippedTest { | ||
@Test | ||
def crossZipped() { | ||
|
||
val xs1 = List.range(1, 100) | ||
val xs2 = xs1.view | ||
val xs3 = xs1 take 10 | ||
val ss1 = Stream from 1 | ||
val ss2 = ss1.view | ||
val ss3 = ss1 take 10 | ||
val as1 = 1 to 100 toArray | ||
val as2 = as1.view | ||
val as3 = as1 take 10 | ||
|
||
def xss1 = List[Seq[Int]](xs1, xs2, xs3, ss1, ss2, ss3, as1, as2, as3) | ||
def xss2 = List[Seq[Int]](xs1, xs2, xs3, ss3, as1, as2, as3) // no infinities | ||
def xss3 = List[Seq[Int]](xs2, xs3, ss3, as1) // representative sampling | ||
|
||
for (cc1 <- xss1 ; cc2 <- xss2) { | ||
val sum1 = (cc1, cc2).zipped map { case (x, y) => x + y } sum | ||
val sum2 = (cc1, cc2).zipped map (_ + _) sum | ||
|
||
assert(sum1 == sum2) | ||
} | ||
|
||
for (cc1 <- xss1 ; cc2 <- xss2 ; cc3 <- xss3) { | ||
val sum1 = (cc1, cc2, cc3).zipped map { case (x, y, z) => x + y + z } sum | ||
val sum2 = (cc1, cc2, cc3).zipped map (_ + _ + _) sum | ||
|
||
assert(sum1 == sum2) | ||
} | ||
|
||
assert((ss1, ss1).zipped exists ((x, y) => true)) | ||
assert((ss1, ss1, ss1).zipped exists ((x, y, z) => true)) | ||
|
||
assert(!(ss1, ss2, 1 to 3).zipped.exists(_ + _ + _ > 100000)) | ||
assert((1 to 3, ss1, ss2).zipped.forall(_ + _ + _ > 0)) | ||
assert((ss1, 1 to 3, ss2).zipped.map(_ + _ + _).size == 3) | ||
} | ||
|
||
@Test | ||
def test_si9379() { | ||
class Boom { | ||
private var i = -1 | ||
def inc = { | ||
i += 1 | ||
if (i > 1000) throw new NoSuchElementException("Boom! Too many elements!") | ||
i | ||
} | ||
} | ||
val b = new Boom | ||
val s = Stream.continually(b.inc) | ||
// zipped.toString must allow s to short-circuit evaluation | ||
assertTrue((s, s).zipped.toString contains s.toString) | ||
} | ||
} |