diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2014-07-23 09:56:24 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2014-07-23 10:07:13 +0200 |
commit | 926585a3f36f35c9afc3f9ed9fe0ded72f6b7014 (patch) | |
tree | 75bf522accac99be17ac4b1460e0a1e58ddaa86d /test/files/pos | |
parent | 73fb460c1cd20ee97556ec0867d17efaa795d129 (diff) | |
download | scala-926585a3f36f35c9afc3f9ed9fe0ded72f6b7014.tar.gz scala-926585a3f36f35c9afc3f9ed9fe0ded72f6b7014.tar.bz2 scala-926585a3f36f35c9afc3f9ed9fe0ded72f6b7014.zip |
SI-8743 Fix crasher with poly-methods annotated with @varargs
The code that generated the Java varargs forwarder was basing
things on the `ValDef-s` of the parameters of the source method.
But, their types refer to a type parameter skolems of the enclosing
method, which led to a type mismatch when typechecking the forwarder.
Instead, I've reworked the code to simply use the `DefDef`-s symbol's
info, which *doesn't* refer to skolems. This actually simplifies the
surrounding code somewhat; rather than repeated symbols in a map
we can just time travel the pre-uncurry method signatures to figure
out which params are releated.
Diffstat (limited to 'test/files/pos')
-rw-r--r-- | test/files/pos/t8743.scala | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/test/files/pos/t8743.scala b/test/files/pos/t8743.scala new file mode 100644 index 0000000000..03b0cd7044 --- /dev/null +++ b/test/files/pos/t8743.scala @@ -0,0 +1,15 @@ +import annotation.varargs + +object VarArgs { + @varargs + def foo[A](x: A, xs: String*): A = ??? + + @varargs + def bar[A](x: List[A], xs: String*): A = ??? + + @varargs + def baz[A](x: List[A], xs: String*): A = ??? + + @varargs + def boz[A](x: A, xs: String*): Nothing = ??? +} |