diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2014-02-10 18:27:17 +0100 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2014-02-10 18:27:17 +0100 |
commit | 6c73837668cb961b50f5f523aa0a5d6fe4d849c3 (patch) | |
tree | 9865c31c7a1acb7548048eefb0af1054f3c6639b /test/files/pos | |
parent | 4ffbb06566fab0fe4dc2ed00800b13656cc8fea3 (diff) | |
parent | d6b1e6e4ff1cb477e9b26ba7e1a02d1ea98fa132 (diff) | |
download | scala-6c73837668cb961b50f5f523aa0a5d6fe4d849c3.tar.gz scala-6c73837668cb961b50f5f523aa0a5d6fe4d849c3.tar.bz2 scala-6c73837668cb961b50f5f523aa0a5d6fe4d849c3.zip |
Merge pull request #3428 from retronym/ticket/6260
SI-6260 Avoid double-def error with lambdas over value classes
Diffstat (limited to 'test/files/pos')
-rw-r--r-- | test/files/pos/delambdafy_t6260_method.check | 13 | ||||
-rw-r--r-- | test/files/pos/delambdafy_t6260_method.flags | 1 | ||||
-rw-r--r-- | test/files/pos/delambdafy_t6260_method.scala | 17 | ||||
-rw-r--r-- | test/files/pos/t6260.flags | 1 | ||||
-rw-r--r-- | test/files/pos/t6260.scala | 17 | ||||
-rw-r--r-- | test/files/pos/t6260b.scala | 3 |
6 files changed, 52 insertions, 0 deletions
diff --git a/test/files/pos/delambdafy_t6260_method.check b/test/files/pos/delambdafy_t6260_method.check new file mode 100644 index 0000000000..f5cd6947d1 --- /dev/null +++ b/test/files/pos/delambdafy_t6260_method.check @@ -0,0 +1,13 @@ +delambdafy_t6260_method.scala:3: error: bridge generated for member method apply: (bx: Object)Object in class map$extension1 +which overrides method apply: (v1: Object)Object in trait Function1 +clashes with definition of the member itself; +both have erased type (bx: Object)Object + ((bx: Box[X]) => new Box(f(bx.x)))(this) + ^ +delambdafy_t6260_method.scala:8: error: bridge generated for member method apply: (bx: Object)Object in class map21 +which overrides method apply: (v1: Object)Object in trait Function1 +clashes with definition of the member itself; +both have erased type (bx: Object)Object + ((bx: Box[X]) => new Box(f(bx.x)))(self) + ^ +two errors found diff --git a/test/files/pos/delambdafy_t6260_method.flags b/test/files/pos/delambdafy_t6260_method.flags new file mode 100644 index 0000000000..48b438ddf8 --- /dev/null +++ b/test/files/pos/delambdafy_t6260_method.flags @@ -0,0 +1 @@ +-Ydelambdafy:method diff --git a/test/files/pos/delambdafy_t6260_method.scala b/test/files/pos/delambdafy_t6260_method.scala new file mode 100644 index 0000000000..93b5448227 --- /dev/null +++ b/test/files/pos/delambdafy_t6260_method.scala @@ -0,0 +1,17 @@ +class Box[X](val x: X) extends AnyVal { + def map[Y](f: X => Y): Box[Y] = + ((bx: Box[X]) => new Box(f(bx.x)))(this) +} + +object Test { + def map2[X, Y](self: Box[X], f: X => Y): Box[Y] = + ((bx: Box[X]) => new Box(f(bx.x)))(self) + + def main(args: Array[String]) { + val f = (x: Int) => x + 1 + val g = (x: String) => x + x + + map2(new Box(42), f) + new Box("abc") map g + } +} diff --git a/test/files/pos/t6260.flags b/test/files/pos/t6260.flags new file mode 100644 index 0000000000..2349d8294d --- /dev/null +++ b/test/files/pos/t6260.flags @@ -0,0 +1 @@ +-Ydelambdafy:inline diff --git a/test/files/pos/t6260.scala b/test/files/pos/t6260.scala new file mode 100644 index 0000000000..93b5448227 --- /dev/null +++ b/test/files/pos/t6260.scala @@ -0,0 +1,17 @@ +class Box[X](val x: X) extends AnyVal { + def map[Y](f: X => Y): Box[Y] = + ((bx: Box[X]) => new Box(f(bx.x)))(this) +} + +object Test { + def map2[X, Y](self: Box[X], f: X => Y): Box[Y] = + ((bx: Box[X]) => new Box(f(bx.x)))(self) + + def main(args: Array[String]) { + val f = (x: Int) => x + 1 + val g = (x: String) => x + x + + map2(new Box(42), f) + new Box("abc") map g + } +} diff --git a/test/files/pos/t6260b.scala b/test/files/pos/t6260b.scala new file mode 100644 index 0000000000..73e2e58f73 --- /dev/null +++ b/test/files/pos/t6260b.scala @@ -0,0 +1,3 @@ + +class X(val value: Object) extends AnyVal { def or(alt: => X): X = this } +class Y { def f = new X("") or new X("") } |