Skip to content

Commit 023d0a2

Browse files
committed
Push java inner class privateWithin setting
[Cherry-picked 14e46e8][modified]
1 parent 54c9ce7 commit 023d0a2

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
@@ -48,19 +48,23 @@ object SymbolLoaders {
4848
*/
4949
def enterClass(
5050
owner: Symbol, name: PreName, completer: SymbolLoader,
51-
flags: FlagSet = EmptyFlags, scope: Scope = EmptyScope)(using Context): Symbol = {
52-
val cls = newClassSymbol(owner, name.toTypeName.unmangleClassName.decode, flags, completer, assocFile = completer.sourceFileOrNull)
51+
flags: FlagSet = EmptyFlags, scope: Scope = EmptyScope, privateWithin: Symbol = NoSymbol,
52+
)(using Context): Symbol = {
53+
val cls = newClassSymbol(owner, name.toTypeName.unmangleClassName.decode, flags, completer, privateWithin, assocFile = completer.sourceFileOrNull)
5354
enterNew(owner, cls, completer, scope)
5455
}
5556

5657
/** Enter module with given `name` into scope of `owner`.
5758
*/
5859
def enterModule(
5960
owner: Symbol, name: PreName, completer: SymbolLoader,
60-
modFlags: FlagSet = EmptyFlags, clsFlags: FlagSet = EmptyFlags, scope: Scope = EmptyScope)(using Context): Symbol = {
61+
modFlags: FlagSet = EmptyFlags, clsFlags: FlagSet = EmptyFlags,
62+
scope: Scope = EmptyScope, privateWithin: Symbol = NoSymbol,
63+
)(using Context): Symbol = {
6164
val module = newModuleSymbol(
6265
owner, name.toTermName.decode, modFlags, clsFlags,
6366
(module, _) => completer.proxy.withDecls(newScope).withSourceModule(module),
67+
privateWithin,
6468
assocFile = completer.sourceFileOrNull)
6569
enterNew(owner, module, completer, scope)
6670
enterNew(owner, module.moduleClass, completer, scope)
@@ -100,14 +104,16 @@ object SymbolLoaders {
100104
*/
101105
def enterClassAndModule(
102106
owner: Symbol, name: PreName, completer: SymbolLoader,
103-
flags: FlagSet = EmptyFlags, scope: Scope = EmptyScope)(using Context): (Symbol, Symbol) = {
104-
val clazz = enterClass(owner, name, completer, flags, scope)
107+
flags: FlagSet = EmptyFlags, scope: Scope = EmptyScope, privateWithin: Symbol = NoSymbol,
108+
)(using Context): Unit = {
109+
val clazz = enterClass(owner, name, completer, flags, scope, privateWithin)
105110
val module = enterModule(
106111
owner, name, completer,
107112
modFlags = flags.toTermFlags & RetainedModuleValFlags,
108113
clsFlags = flags.toTypeFlags & RetainedModuleClassFlags,
109-
scope = scope)
110-
(clazz, module)
114+
scope = scope,
115+
privateWithin = privateWithin,
116+
)
111117
}
112118

113119
/** 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
@@ -884,17 +884,14 @@ class ClassfileParser(
884884
*/
885885
private def enterOwnInnerClasses()(using Context, DataReader): Unit = {
886886
def enterClassAndModule(entry: InnerClassEntry, file: AbstractFile, jflags: Int) =
887-
val (cls, mod) = SymbolLoaders.enterClassAndModule(
888-
getOwner(jflags),
887+
SymbolLoaders.enterClassAndModule(
888+
getOwner(jflags),
889889
entry.originalName,
890-
new ClassfileLoader(file),
891-
classTranslation.flags(jflags),
892-
getScope(jflags))
893-
894-
val privateWithin = getPrivateWithin(jflags)
895-
cls.setPrivateWithin(privateWithin)
896-
mod.setPrivateWithin(privateWithin)
897-
mod.sourceModule.setPrivateWithin(privateWithin)
890+
new ClassfileLoader(file),
891+
classTranslation.flags(jflags),
892+
getScope(jflags),
893+
getPrivateWithin(jflags),
894+
)
898895

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

0 commit comments

Comments
 (0)