summaryrefslogtreecommitdiff
path: root/test/files/jvm5/annotations.scala
diff options
context:
space:
mode:
authormihaylov <mihaylov@epfl.ch>2007-03-02 08:35:59 +0000
committermihaylov <mihaylov@epfl.ch>2007-03-02 08:35:59 +0000
commit327f88d16802daaddb85b33498a1cfc5b976bd28 (patch)
tree4ba2f77fe0c329a359627cb036f0f2ee9cf0e606 /test/files/jvm5/annotations.scala
parent614ebd7eea86f1e83052638acde0c24c8d47b619 (diff)
downloadscala-327f88d16802daaddb85b33498a1cfc5b976bd28.tar.gz
scala-327f88d16802daaddb85b33498a1cfc5b976bd28.tar.bz2
scala-327f88d16802daaddb85b33498a1cfc5b976bd28.zip
renamed test/files/jvm5/attributes.scala to ann...
renamed test/files/jvm5/attributes.scala to annotations.scala
Diffstat (limited to 'test/files/jvm5/annotations.scala')
-rw-r--r--test/files/jvm5/annotations.scala91
1 files changed, 91 insertions, 0 deletions
diff --git a/test/files/jvm5/annotations.scala b/test/files/jvm5/annotations.scala
new file mode 100644
index 0000000000..fa5ab1476b
--- /dev/null
+++ b/test/files/jvm5/annotations.scala
@@ -0,0 +1,91 @@
+import java.lang.Deprecated
+
+object Test1 {
+ class Foo {
+ @remote
+ def foo: Unit = ()
+ }
+ def run: Unit = {
+ val method = classOf[Foo].getMethod("foo", Array())
+ method.getExceptionTypes foreach Console.println
+ }
+}
+
+object Test2 {
+ import java.io.{BufferedReader,FileReader, IOException}
+ class Reader(fname: String) {
+ private val in = new BufferedReader(new FileReader(fname))
+
+ @throws(classOf[IOException])
+ def read() = in.read()
+ }
+ def run: Unit = {
+ val method = classOf[Reader].getMethod("read", Array())
+ method.getExceptionTypes foreach Console.println
+ }
+}
+
+/* Java:
+public class Main {
+ @Deprecated
+ public void foo() {}
+ public static void main(String[] args) throws Exception {
+ Method method = Class.forName("test.Main").getMethod("foo", new Class[]{});
+ Annotation annotation = method.getAnnotation(Deprecated.class);
+ System.out.println(annotation); // @java.lang.Deprecated()
+ }
+}
+*/
+object Test3 {
+ class Foo {
+ @Deprecated
+ def foo: Unit = ()
+ }
+ def run: Unit = {
+ val method = classOf[Foo].getMethod("foo", Array())
+ val annotation = method.getAnnotation(classOf[Deprecated])
+ Console.println(annotation)
+ }
+}
+
+/* Java:
+@Retention(value=RetentionPolicy.RUNTIME)
+@interface Source {
+ public String url();
+ public String mail();
+}
+@Source(url="http://scala.epfl.ch", mail="scala@lists.epfl.ch")
+class Foo {}
+public class Main {
+ public static void main(String[] args) throws Exception {
+ Class clazz = Class.forName("test.Foo");
+ Annotation[] annotations = clazz.getAnnotations();
+ for (int i = 0; i < annotations.length; i++)
+ System.out.println(annotations[i]);
+ // @test.Main$Source(url=http://scala.epfl.ch, mail=scala@lists.epfl.ch)
+ }
+}
+*/
+object Test4 {
+ import test.SourceAnnotation // defined in SourceAnnotation.java
+ @SourceAnnotation{val value = "http://scala.epfl.ch", val mail = "scala@lists.epfl.ch"}
+ class Foo1
+ @SourceAnnotation("http://bloodsuckers.com") { val mail = "you@bloodsuckers.com" }
+ class Foo2
+ @SourceAnnotation("http://bloodsuckers.com")
+ class Foo3
+ def run: Unit = {
+ classOf[Foo1].getAnnotations foreach Console.println
+ classOf[Foo2].getAnnotations foreach Console.println
+ classOf[Foo3].getAnnotations foreach Console.println
+ }
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ Test1.run
+ Test2.run
+ Test3.run // requires the use of -target:jvm-1.5
+ Test4.run
+ }
+}