@@ -1076,9 +1076,10 @@ class TreeUnpickler(reader: TastyReader,
1076
1076
1077
1077
def accessibleDenot (qualType : Type , name : Name , sig : Signature , target : Name ) = {
1078
1078
val pre = ctx.typeAssigner.maybeSkolemizePrefix(qualType, name)
1079
- val d = qualType.findMember(name, pre).atSignature(sig, target)
1080
- if (! d.symbol.exists || d.symbol.isAccessibleFrom(pre)) d
1081
- else qualType.findMember(name, pre, excluded = Private ).atSignature(sig, target)
1079
+ val d = qualType.decl(name).atSignature(sig, target)
1080
+ if ! d.symbol.exists then d
1081
+ else if d.symbol.isAccessibleFrom(pre) then d.asSeenFrom(pre)
1082
+ else qualType.nonPrivateDecl(name).atSignature(sig, target).asSeenFrom(pre)
1082
1083
}
1083
1084
1084
1085
def readSimpleTerm (): Tree = tag match {
@@ -1178,6 +1179,12 @@ class TreeUnpickler(reader: TastyReader,
1178
1179
readTerm().outerSelect(levels, SkolemType (readType()))
1179
1180
case SELECTin =>
1180
1181
// tests/run/hashsetremove.scala failed
1182
+ import java .io ._
1183
+ import java .nio .charset .StandardCharsets
1184
+ def writeBytes ( data : String , file : File ) = {
1185
+ val target = new BufferedOutputStream ( new FileOutputStream (file) );
1186
+ try target.write(data.getBytes(StandardCharsets .UTF_8 )) finally target.close;
1187
+ }
1181
1188
var sname = readName()
1182
1189
val qual = readTerm()
1183
1190
val qualType = qual.tpe.widenIfUnstable
@@ -1186,16 +1193,25 @@ class TreeUnpickler(reader: TastyReader,
1186
1193
makeSelect(qual, name, denot.asSeenFrom(pre))
1187
1194
def select (name : Name , sig : Signature , target : Name ) =
1188
1195
makeSelect(qual, name, accessibleDenot(qualType, name, sig, target))
1189
- sname match
1196
+ val res = sname match
1190
1197
case SignedName (name, sig, target) =>
1191
1198
val pre = ctx.typeAssigner.maybeSkolemizePrefix(qualType, name)
1192
1199
val isAmbiguous = pre.nonPrivateMember(name).isOverloaded
1193
1200
if isAmbiguous then
1201
+ // writeBytes(TastyPrinter.show(reader.bytes), new File("WOW123.txt"))
1202
+ // val d0 = pre.nonPrivateMember(name)
1203
+ // val d0_1 = d0.atSignature(sig, target)
1204
+ // val d0_2 = d0_1.asSeenFrom(pre)
1205
+ // val d1 = space.decl(name)
1206
+ // val d1_1 = d1.atSignature(sig, target)
1207
+ // val d1_2 = d1_1.asSeenFrom(pre)
1208
+ // report.echo(s"[$d0, $d0_1, $d0_2] [$d1, $d1_1, $d1_2]")
1194
1209
makeSelect(qual, name, space.decl(name).atSignature(sig, target).asSeenFrom(pre))
1195
1210
else
1196
1211
select(name, sig, target)
1197
1212
case name =>
1198
1213
select(name, Signature .NotAMethod , EmptyTermName )
1214
+ res
1199
1215
case REPEATED =>
1200
1216
val elemtpt = readTpt()
1201
1217
SeqLiteral (until(end)(readTerm()), elemtpt)
0 commit comments