diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2016-10-28 12:08:55 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2016-10-28 12:08:55 +0200 |
commit | ae17256f1dcde4dd82008c6e355604d68d5a07b3 (patch) | |
tree | 6eb8e3ce569eaaa41a93fc34c9942f9810012822 /test/files/neg | |
parent | 47050ee4934f5bf78339c5d81583ab445a4318dd (diff) | |
download | scala-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')
-rw-r--r-- | test/files/neg/t7014.check | 5 | ||||
-rw-r--r-- | test/files/neg/t7014.flags | 1 | ||||
-rw-r--r-- | test/files/neg/t7014/ThreadSafety.java | 9 | ||||
-rw-r--r-- | test/files/neg/t7014/ThreadSafetyLevel.java | 8 | ||||
-rw-r--r-- | test/files/neg/t7014/t7014.scala | 3 |
5 files changed, 26 insertions, 0 deletions
diff --git a/test/files/neg/t7014.check b/test/files/neg/t7014.check new file mode 100644 index 0000000000..07ad51e9d3 --- /dev/null +++ b/test/files/neg/t7014.check @@ -0,0 +1,5 @@ +warning: While parsing annotations in t7014-neg.obj/t7014/ThreadSafetyLevel.class, could not find COMPLETELY_THREADSAFE in enum object ThreadSafetyLevel. +This is likely due to an implementation restriction: an annotation argument cannot refer to a member of the annotated class (SI-7014). +error: No warnings can be incurred under -Xfatal-warnings. +one warning found +one error found diff --git a/test/files/neg/t7014.flags b/test/files/neg/t7014.flags new file mode 100644 index 0000000000..85d8eb2ba2 --- /dev/null +++ b/test/files/neg/t7014.flags @@ -0,0 +1 @@ +-Xfatal-warnings 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 |