summaryrefslogtreecommitdiff
path: root/test/files/neg/t7014
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-10-28 12:08:55 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2016-10-28 12:08:55 +0200
commitae17256f1dcde4dd82008c6e355604d68d5a07b3 (patch)
tree6eb8e3ce569eaaa41a93fc34c9942f9810012822 /test/files/neg/t7014
parent47050ee4934f5bf78339c5d81583ab445a4318dd (diff)
downloadscala-ae17256f1dcde4dd82008c6e355604d68d5a07b3.tar.gz
scala-ae17256f1dcde4dd82008c6e355604d68d5a07b3.tar.bz2
scala-ae17256f1dcde4dd82008c6e355604d68d5a07b3.zip
For scala classfiles, only parse the scala signature annotation
Skipping other annotations not only saves some cycles / GC, but also prevents some spurious warnings / errors related to cyclic dependencies when parsing annotation arguments refering to members of the class.
Diffstat (limited to 'test/files/neg/t7014')
-rw-r--r--test/files/neg/t7014/ThreadSafety.java9
-rw-r--r--test/files/neg/t7014/ThreadSafetyLevel.java8
-rw-r--r--test/files/neg/t7014/t7014.scala3
3 files changed, 20 insertions, 0 deletions
diff --git a/test/files/neg/t7014/ThreadSafety.java b/test/files/neg/t7014/ThreadSafety.java
new file mode 100644
index 0000000000..ed508804e3
--- /dev/null
+++ b/test/files/neg/t7014/ThreadSafety.java
@@ -0,0 +1,9 @@
+package t7014;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME) // must be exactly RUNTIME retention (those we parse)
+public @interface ThreadSafety {
+ ThreadSafetyLevel level();
+} \ No newline at end of file
diff --git a/test/files/neg/t7014/ThreadSafetyLevel.java b/test/files/neg/t7014/ThreadSafetyLevel.java
new file mode 100644
index 0000000000..4df1dc787a
--- /dev/null
+++ b/test/files/neg/t7014/ThreadSafetyLevel.java
@@ -0,0 +1,8 @@
+package t7014; // package needed due to other bug in scalac's java parser
+
+// since we parse eagerly, we have not yet parsed the classfile when parsing the annotation,
+// and on doing so, fail to find a symbol for the COMPLETELY_THREADSAFE reference
+// from the annotation's argument to the enum's member
+// for now, let's just not crash -- should implement lazy completing at some point
+@ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
+public enum ThreadSafetyLevel { COMPLETELY_THREADSAFE }
diff --git a/test/files/neg/t7014/t7014.scala b/test/files/neg/t7014/t7014.scala
new file mode 100644
index 0000000000..7c73f700be
--- /dev/null
+++ b/test/files/neg/t7014/t7014.scala
@@ -0,0 +1,3 @@
+package t7014
+
+import ThreadSafetyLevel.COMPLETELY_THREADSAFE // refer to annotation so it gets parsed