diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-11-24 20:18:08 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-11-24 20:18:08 +0000 |
commit | 597acf7b0c26ca94a34f188fc2919b8482c3ab0a (patch) | |
tree | 19925504774f19edec80a3d700d0bb16f7c10507 /src/library | |
parent | 46d1d8e55aa40037a536767f0ae8d98665c73617 (diff) | |
download | scala-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.scala | 18 | ||||
-rwxr-xr-x | src/library/scala/reflect/generic/Flags.scala | 2 | ||||
-rwxr-xr-x | src/library/scala/reflect/generic/Symbols.scala | 1 |
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) |