Skip to content

Commit 6ca4c23

Browse files
dwijnandWojciechMazur
authored andcommitted
Push java inner class privateWithin setting
[Cherry-picked 14e46e8]
1 parent 2e63e61 commit 6ca4c23

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

compiler/src/dotty/tools/dotc/core/SymbolLoaders.scala

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,23 @@ object SymbolLoaders {
5151
*/
5252
def enterClass(
5353
owner: Symbol, name: PreName, completer: SymbolLoader,
54-
flags: FlagSet = EmptyFlags, scope: Scope = EmptyScope)(using Context): Symbol = {
55-
val cls = newClassSymbol(owner, name.toTypeName.unmangleClassName.decode, flags, completer, compUnitInfo = completer.compilationUnitInfo)
54+
flags: FlagSet = EmptyFlags, scope: Scope = EmptyScope, privateWithin: Symbol = NoSymbol,
55+
)(using Context): Symbol = {
56+
val cls = newClassSymbol(owner, name.toTypeName.unmangleClassName.decode, flags, completer, privateWithin, compUnitInfo = completer.compilationUnitInfo)
5657
enterNew(owner, cls, completer, scope)
5758
}
5859

5960
/** Enter module with given `name` into scope of `owner`.
6061
*/
6162
def enterModule(
6263
owner: Symbol, name: PreName, completer: SymbolLoader,
63-
modFlags: FlagSet = EmptyFlags, clsFlags: FlagSet = EmptyFlags, scope: Scope = EmptyScope)(using Context): Symbol = {
64+
modFlags: FlagSet = EmptyFlags, clsFlags: FlagSet = EmptyFlags,
65+
scope: Scope = EmptyScope, privateWithin: Symbol = NoSymbol,
66+
)(using Context): Symbol = {
6467
val module = newModuleSymbol(
6568
owner, name.toTermName.decode, modFlags, clsFlags,
6669
(module, _) => completer.proxy.withDecls(newScope).withSourceModule(module),
70+
privateWithin,
6771
compUnitInfo = completer.compilationUnitInfo)
6872
enterNew(owner, module, completer, scope)
6973
enterNew(owner, module.moduleClass, completer, scope)
@@ -103,14 +107,16 @@ object SymbolLoaders {
103107
*/
104108
def enterClassAndModule(
105109
owner: Symbol, name: PreName, completer: SymbolLoader,
106-
flags: FlagSet = EmptyFlags, scope: Scope = EmptyScope)(using Context): (Symbol, Symbol) = {
107-
val clazz = enterClass(owner, name, completer, flags, scope)
110+
flags: FlagSet = EmptyFlags, scope: Scope = EmptyScope, privateWithin: Symbol = NoSymbol,
111+
)(using Context): Unit = {
112+
val clazz = enterClass(owner, name, completer, flags, scope, privateWithin)
108113
val module = enterModule(
109114
owner, name, completer,
110115
modFlags = flags.toTermFlags & RetainedModuleValFlags,
111116
clsFlags = flags.toTypeFlags & RetainedModuleClassFlags,
112-
scope = scope)
113-
(clazz, module)
117+
scope = scope,
118+
privateWithin = privateWithin,
119+
)
114120
}
115121

116122
/** Enter all toplevel classes and objects in file `src` into package `owner`, provided

compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,17 +1059,14 @@ class ClassfileParser(
10591059
*/
10601060
private def enterOwnInnerClasses()(using Context, DataReader): Unit = {
10611061
def enterClassAndModule(entry: InnerClassEntry, file: AbstractFile, jflags: Int) =
1062-
val (cls, mod) = SymbolLoaders.enterClassAndModule(
1063-
getOwner(jflags),
1062+
SymbolLoaders.enterClassAndModule(
1063+
getOwner(jflags),
10641064
entry.originalName,
1065-
new ClassfileLoader(file),
1066-
classTranslation.flags(jflags),
1067-
getScope(jflags))
1068-
1069-
val privateWithin = getPrivateWithin(jflags)
1070-
cls.setPrivateWithin(privateWithin)
1071-
mod.setPrivateWithin(privateWithin)
1072-
mod.sourceModule.setPrivateWithin(privateWithin)
1065+
new ClassfileLoader(file),
1066+
classTranslation.flags(jflags),
1067+
getScope(jflags),
1068+
getPrivateWithin(jflags),
1069+
)
10731070

10741071
for entry <- innerClasses.valuesIterator do
10751072
// create a new class member for immediate inner classes

0 commit comments

Comments
 (0)