From 597acf7b0c26ca94a34f188fc2919b8482c3ab0a Mon Sep 17 00:00:00 2001 From: Aleksandar Pokopec Date: Wed, 24 Nov 2010 20:18:08 +0000 Subject: Fix for #3621. Added varargs annotation. Review by Rytz. --- test/files/jvm/varargs.check | 2 ++ test/files/jvm/varargs/JavaClass.java | 14 ++++++++++++++ test/files/jvm/varargs/VaClass.scala | 12 ++++++++++++ test/files/jvm/varargs/varargs.scala | 21 +++++++++++++++++++++ test/files/neg/varargs.check | 7 +++++++ test/files/neg/varargs.scala | 20 ++++++++++++++++++++ 6 files changed, 76 insertions(+) create mode 100644 test/files/jvm/varargs.check create mode 100644 test/files/jvm/varargs/JavaClass.java create mode 100644 test/files/jvm/varargs/VaClass.scala create mode 100644 test/files/jvm/varargs/varargs.scala create mode 100644 test/files/neg/varargs.check create mode 100644 test/files/neg/varargs.scala (limited to 'test') diff --git a/test/files/jvm/varargs.check b/test/files/jvm/varargs.check new file mode 100644 index 0000000000..fef7448acb --- /dev/null +++ b/test/files/jvm/varargs.check @@ -0,0 +1,2 @@ +7 +10 \ No newline at end of file diff --git a/test/files/jvm/varargs/JavaClass.java b/test/files/jvm/varargs/JavaClass.java new file mode 100644 index 0000000000..b5158f2878 --- /dev/null +++ b/test/files/jvm/varargs/JavaClass.java @@ -0,0 +1,14 @@ + + + +public class JavaClass { + public static void varargz(int i, T... v) { + } + + public static void callSomeAnnotations() { + VaClass va = new VaClass(); + va.vs(4, "", "", ""); + va.vi(1, 2, 3, 4); + varargz(5, 1.0, 2.0, 3.0); + } +} \ No newline at end of file diff --git a/test/files/jvm/varargs/VaClass.scala b/test/files/jvm/varargs/VaClass.scala new file mode 100644 index 0000000000..ffa25027d3 --- /dev/null +++ b/test/files/jvm/varargs/VaClass.scala @@ -0,0 +1,12 @@ + + +import annotation.varargs + + + +class VaClass { + + @varargs def vs(a: Int, b: String*) = println(a + b.length) + @varargs def vi(a: Int, b: Int*) = println(a + b.sum) + +} diff --git a/test/files/jvm/varargs/varargs.scala b/test/files/jvm/varargs/varargs.scala new file mode 100644 index 0000000000..6d2e707bdf --- /dev/null +++ b/test/files/jvm/varargs/varargs.scala @@ -0,0 +1,21 @@ + + + + + + +object Test { + def main(args: Array[String]) { + JavaClass.callSomeAnnotations + } +} + + + + + + + + + + diff --git a/test/files/neg/varargs.check b/test/files/neg/varargs.check new file mode 100644 index 0000000000..f3254708b8 --- /dev/null +++ b/test/files/neg/varargs.check @@ -0,0 +1,7 @@ +varargs.scala:11: error: A method without repeated parameters cannot be annotated with the `varargs` annotation. + @varargs def nov(a: Int) = 0 + ^ +varargs.scala:13: error: A method with a varargs annotation produces a forwarder method with the same signature (a: Int,b: Array[java.lang.String])Int as an existing method. + @varargs def v2(a: Int, b: String*) = 0 + ^ +two errors found \ No newline at end of file diff --git a/test/files/neg/varargs.scala b/test/files/neg/varargs.scala new file mode 100644 index 0000000000..a2f895a87d --- /dev/null +++ b/test/files/neg/varargs.scala @@ -0,0 +1,20 @@ + + + +import annotation.varargs + + + +// Failing varargs annotation +object Test { + + @varargs def nov(a: Int) = 0 + @varargs def v(a: Int, b: String*) = a + b.length + @varargs def v2(a: Int, b: String*) = 0 + def v2(a: Int, b: Array[String]) = 0 + + def main(args: Array[String]) { + + } + +} -- cgit v1.2.3