@@ -49,6 +49,7 @@ object Test {
4949 def main (args : Array [String ]): Unit = {
5050 runFooTests1()
5151 runFooTests2()
52+ runFooTests3()
5253 runBarTests()
5354 runBazTests()
5455 runQuxTests()
@@ -102,6 +103,63 @@ object Test {
102103 assertEquals(" selectDynamic(bazSelectUpdate).update(key, value)" , foo.bazSelectUpdate(" key" ) = " value" )
103104 }
104105
106+ /** Test apply insertions kick in before dynamic calls. */
107+ def runFooTests3 () = {
108+ val foo = new Foo
109+
110+ assertEquals(" applyDynamic(apply)()" , foo())
111+ assertEquals(" applyDynamic(apply)(1)" , foo(1 ))
112+ assertEquals(" applyDynamic(apply)(1, 2, 3)" , foo(1 , 2 , 3 ))
113+ assertEquals(" applyDynamic(apply)(1, 2, a)" , foo(1 , 2 , " a" ))
114+ assertEquals(" applyDynamic(apply)(1, 2, a)" , foo(List (1 , 2 , " a" ): _* ))
115+
116+ assertEquals(" applyDynamicNamed(apply)((a,1))" , foo(a = 1 ))
117+ assertEquals(" applyDynamicNamed(apply)((a,1), (b,2))" , foo(a = 1 , b = 2 ))
118+ assertEquals(" applyDynamicNamed(apply)((a,1), (,0))" , foo(a = 1 , 0 ))
119+ assertEquals(" applyDynamicNamed(apply)((a,1), (a,5))" , foo(a = 1 , a = 5 ))
120+ assertEquals(" applyDynamicNamed(apply)((,d), (a,1), (,5), (a,c))" , foo(" d" , a = 1 , 5 , a = 'c' ))
121+
122+ assertEquals(" applyDynamic(apply)()" , foo.apply())
123+ assertEquals(" applyDynamic(apply)(1)" , foo.apply(1 ))
124+ assertEquals(" applyDynamic(apply)(1, 2, 3)" , foo.apply(1 , 2 , 3 ))
125+ assertEquals(" applyDynamic(apply)(1, 2, a)" , foo.apply(1 , 2 , " a" ))
126+ assertEquals(" applyDynamic(apply)(1, 2, a)" , foo.apply(List (1 , 2 , " a" ): _* ))
127+
128+ assertEquals(" applyDynamicNamed(apply)((a,1))" , foo.apply(a = 1 ))
129+ assertEquals(" applyDynamicNamed(apply)((a,1), (b,2))" , foo.apply(a = 1 , b = 2 ))
130+ assertEquals(" applyDynamicNamed(apply)((a,1), (,0))" , foo.apply(a = 1 , 0 ))
131+ assertEquals(" applyDynamicNamed(apply)((a,1), (a,5))" , foo.apply(a = 1 , a = 5 ))
132+ assertEquals(" applyDynamicNamed(apply)((,d), (a,1), (,5), (a,c))" , foo.apply(" d" , a = 1 , 5 , a = 'c' ))
133+
134+ object bar {
135+ val foo : Foo = new Foo
136+ }
137+
138+ assertEquals(" applyDynamic(apply)()" , bar.foo())
139+ assertEquals(" applyDynamic(apply)(1)" , bar.foo(1 ))
140+ assertEquals(" applyDynamic(apply)(1, 2, 3)" , bar.foo(1 , 2 , 3 ))
141+ assertEquals(" applyDynamic(apply)(1, 2, a)" , bar.foo(1 , 2 , " a" ))
142+ assertEquals(" applyDynamic(apply)(1, 2, a)" , bar.foo(List (1 , 2 , " a" ): _* ))
143+
144+ assertEquals(" applyDynamicNamed(apply)((a,1))" , bar.foo(a = 1 ))
145+ assertEquals(" applyDynamicNamed(apply)((a,1), (b,2))" , bar.foo(a = 1 , b = 2 ))
146+ assertEquals(" applyDynamicNamed(apply)((a,1), (,0))" , bar.foo(a = 1 , 0 ))
147+ assertEquals(" applyDynamicNamed(apply)((a,1), (a,5))" , bar.foo(a = 1 , a = 5 ))
148+ assertEquals(" applyDynamicNamed(apply)((,d), (a,1), (,5), (a,c))" , bar.foo(" d" , a = 1 , 5 , a = 'c' ))
149+
150+ assertEquals(" applyDynamic(apply)()" , bar.foo.apply())
151+ assertEquals(" applyDynamic(apply)(1)" , bar.foo.apply(1 ))
152+ assertEquals(" applyDynamic(apply)(1, 2, 3)" , bar.foo.apply(1 , 2 , 3 ))
153+ assertEquals(" applyDynamic(apply)(1, 2, a)" , bar.foo.apply(1 , 2 , " a" ))
154+ assertEquals(" applyDynamic(apply)(1, 2, a)" , bar.foo.apply(List (1 , 2 , " a" ): _* ))
155+
156+ assertEquals(" applyDynamicNamed(apply)((a,1))" , bar.foo.apply(a = 1 ))
157+ assertEquals(" applyDynamicNamed(apply)((a,1), (b,2))" , bar.foo.apply(a = 1 , b = 2 ))
158+ assertEquals(" applyDynamicNamed(apply)((a,1), (,0))" , bar.foo.apply(a = 1 , 0 ))
159+ assertEquals(" applyDynamicNamed(apply)((a,1), (a,5))" , bar.foo.apply(a = 1 , a = 5 ))
160+ assertEquals(" applyDynamicNamed(apply)((,d), (a,1), (,5), (a,c))" , bar.foo.apply(" d" , a = 1 , 5 , a = 'c' ))
161+ }
162+
105163 /** Test cains of dynamic calls. */
106164 def runBarTests () = {
107165 val bar = new Bar (" bar" )
0 commit comments