Skip to content

Commit a694194

Browse files
committed
Test cases for SI-5726, SI-5733, SI-6320, SI-6551, SI-6722.
All tickets involving selectDynamic fixed by the prior commit. It also fixes SI-6663, but that already has a test case.
1 parent dac1488 commit a694194

File tree

7 files changed

+110
-1
lines changed

7 files changed

+110
-1
lines changed

test/files/pos/t5726.scala

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import scala.language.dynamics
2+
3+
class DynamicTest extends Dynamic {
4+
def selectDynamic(name: String) = s"value of $name"
5+
def updateDynamic(name: String)(value: Any) {
6+
println(s"You have just updated property '$name' with value: $value")
7+
}
8+
}
9+
10+
object MyApp extends App {
11+
def testing() {
12+
val test = new DynamicTest
13+
test.firstName = "John"
14+
}
15+
16+
testing()
17+
}

test/files/pos/t6551.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import language.dynamics
1+
import scala.language.dynamics
22

33
object Test {
44
def main(args: Array[String]) {

test/files/pos/t6722.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import scala.language.dynamics
2+
3+
class Dyn extends Dynamic {
4+
def selectDynamic(s: String): Dyn = new Dyn
5+
def get[T]: T = null.asInstanceOf[T]
6+
}
7+
8+
object Foo {
9+
val dyn = new Dyn
10+
dyn.foo.bar.baz.get[String]
11+
}

test/files/run/t5733.check

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Running ABTest asserts
2+
Done

test/files/run/t5733.scala

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import scala.language.dynamics
2+
3+
object A extends Dynamic {
4+
var a = "a"
5+
6+
def selectDynamic(method:String): String = a
7+
8+
def updateDynamic(method:String)(v:String) { a = v }
9+
}
10+
11+
class B extends Dynamic {
12+
var b = "b"
13+
14+
def selectDynamic(method:String): String = b
15+
16+
def updateDynamic(method:String)(v:String) { b = v }
17+
}
18+
19+
object Test extends App {
20+
assert( A.foo == "a" )
21+
assert( A.bar == "a" )
22+
A.aaa = "aaa"
23+
assert( A.bar == "aaa" )
24+
25+
val b = new B
26+
assert( b.foo == "b" )
27+
assert( b.bar == "b" )
28+
b.bbb = "bbb"
29+
assert( b.bar == "bbb" )
30+
31+
{
32+
println("Running ABTest asserts")
33+
A.a = "a"
34+
(new ABTest).test()
35+
}
36+
37+
println("Done")
38+
}
39+
40+
class ABTest {
41+
def test() {
42+
assert( A.foo == "a" )
43+
assert( A.bar == "a" )
44+
A.aaa = "aaa"
45+
assert( A.bar == "aaa" )
46+
47+
val b = new B
48+
assert( b.foo == "b" )
49+
assert( b.bar == "b" )
50+
b.bbb = "bbb"
51+
assert( b.bar == "bbb" )
52+
}
53+
}

test/files/run/t6320.check

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
Type in expressions to have them evaluated.
2+
Type :help for more information.
3+
4+
scala>
5+
6+
scala> import scala.language.dynamics
7+
import scala.language.dynamics
8+
9+
scala> class Dyn(m: Map[String, Any]) extends Dynamic { def selectDynamic[T](s: String): T = m(s).asInstanceOf[T] }
10+
defined class Dyn
11+
12+
scala> new Dyn(Map("foo" -> 10)).foo[Int]
13+
res0: Int = 10
14+
15+
scala>
16+
17+
scala>

test/files/run/t6320.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import scala.tools.partest.ReplTest
2+
3+
object Test extends ReplTest {
4+
def code = """
5+
import scala.language.dynamics
6+
class Dyn(m: Map[String, Any]) extends Dynamic { def selectDynamic[T](s: String): T = m(s).asInstanceOf[T] }
7+
new Dyn(Map("foo" -> 10)).foo[Int]
8+
"""
9+
}

0 commit comments

Comments
 (0)