Skip to content

Commit 85b63b8

Browse files
committed
[nomaster] Revert "SI-6548 reflection now correctly enters jinners"
This reverts commit 54a84a3. This is necessary to maintain binary compatibility with 2.10.0. run/t6989.check had to be updated as it also (indirectly) tested SI-6548 Conflicts: test/files/lib/javac-artifacts.jar.desired.sha1 test/files/run/t6548.check test/files/run/t6548/Test_2.scala
1 parent 2f9b708 commit 85b63b8

File tree

7 files changed

+99
-64
lines changed

7 files changed

+99
-64
lines changed

bincompat-backward.whitelist.conf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ filter {
5252
# matchName="scala.reflect.runtime.SymbolLoaders.initAndEnterClassAndModule"
5353
# problemName=MissingMethodProblem
5454
# },
55-
{
56-
matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
57-
problemName=MissingMethodProblem
58-
},
59-
{
60-
matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
61-
problemName=IncompatibleResultTypeProblem
62-
},
55+
# {
56+
# matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
57+
# problemName=MissingMethodProblem
58+
# },
59+
# {
60+
# matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
61+
# problemName=IncompatibleResultTypeProblem
62+
# },
6363

6464

6565
# scala.reflect.internal

bincompat-forward.whitelist.conf

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@ filter {
6161
},
6262

6363
# scala.reflect.runtime
64-
{
65-
matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
66-
problemName=IncompatibleResultTypeProblem
67-
},
68-
{
69-
matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala1"
70-
problemName=MissingMethodProblem
71-
},
64+
# {
65+
# matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala"
66+
# problemName=IncompatibleResultTypeProblem
67+
# },
68+
# {
69+
# matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$jclassAsScala1"
70+
# problemName=MissingMethodProblem
71+
# },
7272
# {
7373
# matchName="scala.reflect.runtime.SymbolLoaders.initClassAndModule"
7474
# problemName=MissingMethodProblem

src/reflect/scala/reflect/runtime/JavaMirrors.scala

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -686,9 +686,9 @@ private[reflect] trait JavaMirrors extends internal.SymbolTable with api.JavaUni
686686
def enter(sym: Symbol, mods: Int) =
687687
(if (jModifier.isStatic(mods)) module.moduleClass else clazz).info.decls enter sym
688688

689-
for (jinner <- jclazz.getDeclaredClasses)
690-
jclassAsScala(jinner) // inner class is entered as a side-effect
691-
// no need to call enter explicitly
689+
for (jinner <- jclazz.getDeclaredClasses) {
690+
enter(jclassAsScala(jinner, clazz), jinner.getModifiers)
691+
}
692692

693693
pendingLoadActions = { () =>
694694

@@ -1046,14 +1046,14 @@ private[reflect] trait JavaMirrors extends internal.SymbolTable with api.JavaUni
10461046
* @param jclazz The Java class
10471047
* @return A Scala class symbol that wraps all reflection info of `jclazz`
10481048
*/
1049-
private def jclassAsScala(jclazz: jClass[_]): ClassSymbol =
1050-
toScala(classCache, jclazz)(_ jclassAsScala1 _)
1049+
private def jclassAsScala(jclazz: jClass[_]): Symbol = jclassAsScala(jclazz, sOwner(jclazz))
10511050

1052-
private def jclassAsScala1(jclazz: jClass[_]): ClassSymbol = {
1053-
val owner = sOwner(jclazz)
1051+
private def jclassAsScala(jclazz: jClass[_], owner: Symbol): ClassSymbol = {
10541052
val name = scalaSimpleName(jclazz)
10551053
val completer = (clazz: Symbol, module: Symbol) => new FromJavaClassCompleter(clazz, module, jclazz)
1056-
createClassModule(owner, name, completer) match { case (clazz, module) => clazz }
1054+
val (clazz, module) = createClassModule(owner, name, completer)
1055+
classCache enter (jclazz, clazz)
1056+
clazz
10571057
}
10581058

10591059
/**

test/files/run/t6548.check

Lines changed: 0 additions & 2 deletions
This file was deleted.

test/files/run/t6548/JavaAnnotationWithNestedEnum_1.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

test/files/run/t6548/Test_2.scala

Lines changed: 0 additions & 12 deletions
This file was deleted.

test/files/run/t6989.check

Lines changed: 75 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,18 @@ isProtected = false
113113
isPublic = false
114114
privateWithin = <none>
115115
============
116+
sym = class $PrivateJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
117+
isPrivate = true
118+
isProtected = false
119+
isPublic = false
120+
privateWithin = <none>
121+
============
122+
sym = value this$0, signature = foo.JavaClass_1, owner = class $PrivateJavaClass
123+
isPrivate = false
124+
isProtected = false
125+
isPublic = false
126+
privateWithin = package foo
127+
============
116128
sym = class $ProtectedJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
117129
isPrivate = false
118130
isProtected = true
@@ -131,6 +143,18 @@ isProtected = false
131143
isPublic = false
132144
privateWithin = package foo
133145
============
146+
sym = class $ProtectedJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
147+
isPrivate = false
148+
isProtected = true
149+
isPublic = false
150+
privateWithin = package foo
151+
============
152+
sym = value this$0, signature = foo.JavaClass_1, owner = class $ProtectedJavaClass
153+
isPrivate = false
154+
isProtected = false
155+
isPublic = false
156+
privateWithin = package foo
157+
============
134158
sym = class $PublicJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
135159
isPrivate = false
136160
isProtected = false
@@ -155,55 +179,97 @@ isProtected = false
155179
isPublic = true
156180
privateWithin = <none>
157181
============
158-
sym = constructor JavaClass_1, signature = ()foo.JavaClass_1, owner = class JavaClass_1
182+
sym = class $PublicJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
159183
isPrivate = false
160184
isProtected = false
161185
isPublic = true
162186
privateWithin = <none>
163187
============
164-
sym = object JavaClass_1, signature = foo.JavaClass_1.type, owner = package foo
188+
sym = constructor $PublicJavaClass, signature = (x$1: foo.JavaClass_1)JavaClass_1.this.$PublicJavaClass, owner = class $PublicJavaClass
189+
isPrivate = false
190+
isProtected = false
191+
isPublic = true
192+
privateWithin = <none>
193+
============
194+
sym = value this$0, signature = foo.JavaClass_1, owner = class $PublicJavaClass
195+
isPrivate = false
196+
isProtected = false
197+
isPublic = false
198+
privateWithin = package foo
199+
============
200+
sym = constructor JavaClass_1, signature = ()foo.JavaClass_1, owner = class JavaClass_1
165201
isPrivate = false
166202
isProtected = false
167203
isPublic = true
168204
privateWithin = <none>
169205
============
170-
sym = class PrivateStaticJavaClass, signature = ClassInfoType(...), owner = object JavaClass_1
206+
sym = class PrivateStaticJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
171207
isPrivate = true
172208
isProtected = false
173209
isPublic = false
174210
privateWithin = <none>
175211
============
176-
sym = object PrivateStaticJavaClass, signature = foo.JavaClass_1.PrivateStaticJavaClass.type, owner = object JavaClass_1
212+
sym = object PrivateStaticJavaClass, signature = JavaClass_1.this.PrivateStaticJavaClass.type, owner = class JavaClass_1
177213
isPrivate = true
178214
isProtected = false
179215
isPublic = false
180216
privateWithin = <none>
181217
============
182-
sym = class ProtectedStaticJavaClass, signature = ClassInfoType(...), owner = object JavaClass_1
218+
sym = class ProtectedStaticJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
183219
isPrivate = true
184220
isProtected = false
185221
isPublic = false
186222
privateWithin = <none>
187223
============
188-
sym = object ProtectedStaticJavaClass, signature = foo.JavaClass_1.ProtectedStaticJavaClass.type, owner = object JavaClass_1
224+
sym = object ProtectedStaticJavaClass, signature = JavaClass_1.this.ProtectedStaticJavaClass.type, owner = class JavaClass_1
189225
isPrivate = true
190226
isProtected = false
191227
isPublic = false
192228
privateWithin = <none>
193229
============
194-
sym = class PublicStaticJavaClass, signature = ClassInfoType(...), owner = object JavaClass_1
230+
sym = class PublicStaticJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
231+
isPrivate = false
232+
isProtected = false
233+
isPublic = true
234+
privateWithin = <none>
235+
============
236+
sym = constructor PublicStaticJavaClass, signature = ()JavaClass_1.this.PublicStaticJavaClass, owner = class PublicStaticJavaClass
237+
isPrivate = false
238+
isProtected = false
239+
isPublic = true
240+
privateWithin = <none>
241+
============
242+
sym = object PublicStaticJavaClass, signature = JavaClass_1.this.PublicStaticJavaClass.type, owner = class JavaClass_1
195243
isPrivate = false
196244
isProtected = false
197245
isPublic = true
198246
privateWithin = <none>
199247
============
200-
sym = constructor PublicStaticJavaClass, signature = ()foo.JavaClass_1.PublicStaticJavaClass, owner = class PublicStaticJavaClass
248+
sym = object JavaClass_1, signature = foo.JavaClass_1.type, owner = package foo
249+
isPrivate = false
250+
isProtected = false
251+
isPublic = true
252+
privateWithin = <none>
253+
============
254+
sym = class PrivateStaticJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
255+
isPrivate = true
256+
isProtected = false
257+
isPublic = false
258+
privateWithin = <none>
259+
============
260+
sym = class ProtectedStaticJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
261+
isPrivate = true
262+
isProtected = false
263+
isPublic = false
264+
privateWithin = <none>
265+
============
266+
sym = class PublicStaticJavaClass, signature = ClassInfoType(...), owner = class JavaClass_1
201267
isPrivate = false
202268
isProtected = false
203269
isPublic = true
204270
privateWithin = <none>
205271
============
206-
sym = object PublicStaticJavaClass, signature = foo.JavaClass_1.PublicStaticJavaClass.type, owner = object JavaClass_1
272+
sym = constructor PublicStaticJavaClass, signature = ()JavaClass_1.this.PublicStaticJavaClass, owner = class PublicStaticJavaClass
207273
isPrivate = false
208274
isProtected = false
209275
isPublic = true

0 commit comments

Comments
 (0)