summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-11-24 20:18:08 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-11-24 20:18:08 +0000
commit597acf7b0c26ca94a34f188fc2919b8482c3ab0a (patch)
tree19925504774f19edec80a3d700d0bb16f7c10507 /src/library
parent46d1d8e55aa40037a536767f0ae8d98665c73617 (diff)
downloadscala-597acf7b0c26ca94a34f188fc2919b8482c3ab0a.tar.gz
scala-597acf7b0c26ca94a34f188fc2919b8482c3ab0a.tar.bz2
scala-597acf7b0c26ca94a34f188fc2919b8482c3ab0a.zip
Fix for #3621.
Added varargs annotation. Review by Rytz.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/annotation/varargs.scala18
-rwxr-xr-xsrc/library/scala/reflect/generic/Flags.scala2
-rwxr-xr-xsrc/library/scala/reflect/generic/Symbols.scala1
3 files changed, 21 insertions, 0 deletions
diff --git a/src/library/scala/annotation/varargs.scala b/src/library/scala/annotation/varargs.scala
new file mode 100644
index 0000000000..ad6a3f9bd4
--- /dev/null
+++ b/src/library/scala/annotation/varargs.scala
@@ -0,0 +1,18 @@
+/* __ *\
+** ________ ___ / / ___ Scala API **
+** / __/ __// _ | / / / _ | (c) 2002-2010, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
+** /____/\___/_/ |_/____/_/ | | **
+** |/ **
+\* */
+package scala.annotation
+
+/** <p>
+ * A method annotation which instructs the compiler to generate a
+ * Java varargs-style forwarder method for interop. This annotation can
+ * only be applied to methods with repeated parameters.
+ * </p>
+ *
+ * @since 2.9
+ */
+final class varargs extends StaticAnnotation
diff --git a/src/library/scala/reflect/generic/Flags.scala b/src/library/scala/reflect/generic/Flags.scala
index 1988e9df90..405069f8b6 100755
--- a/src/library/scala/reflect/generic/Flags.scala
+++ b/src/library/scala/reflect/generic/Flags.scala
@@ -78,6 +78,8 @@ class Flags extends ModifierFlags {
final val SPECIALIZED = 0x10000000000L// symbol is a generated specialized member
final val VBRIDGE = 0x40000000000L// symbol is a varargs bridge
+ final val VARARGS = 0x80000000000L// symbol is a Java-style varargs method
+
// pickling and unpickling of flags
// The flags from 0x001 to 0x800 are different in the raw flags
diff --git a/src/library/scala/reflect/generic/Symbols.scala b/src/library/scala/reflect/generic/Symbols.scala
index 0362e497e5..4dcf80efe3 100755
--- a/src/library/scala/reflect/generic/Symbols.scala
+++ b/src/library/scala/reflect/generic/Symbols.scala
@@ -138,6 +138,7 @@ trait Symbols { self: Universe =>
final def isImplClass = isClass && hasFlag(IMPLCLASS) // Is this symbol an implementation class for a mixin?
final def isLazyAccessor = isLazy && lazyAccessor != NoSymbol
final def isMethod = isTerm && hasFlag(METHOD)
+ final def isVarargsMethod = isMethod && hasFlag(VARARGS)
final def isModule = isTerm && hasFlag(MODULE)
final def isModuleClass = isClass && hasFlag(MODULE)
final def isOverloaded = hasFlag(OVERLOADED)