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