aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-10-13 18:53:43 +0200
committerMartin Odersky <odersky@gmail.com>2016-10-13 18:53:43 +0200
commitf2530992f730b1d5662b6fad62e47a1e19a68c8b (patch)
tree50e60aa0af13d4fb5d6124cf3c95f4e002c576d7
parentdac5b931bcf8757070c8aa74571e52f3b4c6e5eb (diff)
downloaddotty-f2530992f730b1d5662b6fad62e47a1e19a68c8b.tar.gz
dotty-f2530992f730b1d5662b6fad62e47a1e19a68c8b.tar.bz2
dotty-f2530992f730b1d5662b6fad62e47a1e19a68c8b.zip
Fix #1576: Parameters of Java annotations should be public
Parameters of annotation classes parsed by the Java parser should have public val parameters. Otherwise they cannot be accessed as fields.
-rw-r--r--src/dotty/tools/dotc/parsing/JavaParsers.scala2
-rw-r--r--tests/pos/java-interop/1576/TagAnnotation.java3
-rw-r--r--tests/pos/java-interop/1576/Test.scala5
3 files changed, 9 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/parsing/JavaParsers.scala b/src/dotty/tools/dotc/parsing/JavaParsers.scala
index ed7cf9e3f..0be4226ed 100644
--- a/src/dotty/tools/dotc/parsing/JavaParsers.scala
+++ b/src/dotty/tools/dotc/parsing/JavaParsers.scala
@@ -131,7 +131,7 @@ object JavaParsers {
def makeSyntheticParam(count: Int, tpt: Tree): ValDef =
makeParam(nme.syntheticParamName(count), tpt)
def makeParam(name: TermName, tpt: Tree): ValDef =
- ValDef(name, tpt, EmptyTree).withMods(Modifiers(Flags.JavaDefined | Flags.PrivateLocalParamAccessor))
+ ValDef(name, tpt, EmptyTree).withMods(Modifiers(Flags.JavaDefined | Flags.ParamAccessor))
def makeConstructor(formals: List[Tree], tparams: List[TypeDef], flags: FlagSet = Flags.JavaDefined) = {
val vparams = mapWithIndex(formals)((p, i) => makeSyntheticParam(i + 1, p))
diff --git a/tests/pos/java-interop/1576/TagAnnotation.java b/tests/pos/java-interop/1576/TagAnnotation.java
new file mode 100644
index 000000000..3034a1a2d
--- /dev/null
+++ b/tests/pos/java-interop/1576/TagAnnotation.java
@@ -0,0 +1,3 @@
+public @interface TagAnnotation {
+ public String value();
+} \ No newline at end of file
diff --git a/tests/pos/java-interop/1576/Test.scala b/tests/pos/java-interop/1576/Test.scala
new file mode 100644
index 000000000..ea3d06a83
--- /dev/null
+++ b/tests/pos/java-interop/1576/Test.scala
@@ -0,0 +1,5 @@
+object Test {
+ val v: TagAnnotation = null
+ println(v.value) // error: value value in class TagAnnotation cannot be accessed as a
+ // member of TagAnnotation(Test.v) from module class Test$.
+}