@@ -1059,7 +1059,7 @@ class TreeUnpickler(reader: TastyReader,
1059
1059
else
1060
1060
Nil
1061
1061
1062
- def readIndexedStats (exprOwner : Symbol , end : Addr ) (using Context ): List [ Tree ] =
1062
+ def readIndexedStats [ T ] (exprOwner : Symbol , end : Addr , k : ( List [ Tree ], Context ) => T = sameTrees) (using Context ): T =
1063
1063
val buf = new mutable.ListBuffer [Tree ]
1064
1064
var curCtx = ctx
1065
1065
while currentAddr.index < end.index do
@@ -1069,13 +1069,15 @@ class TreeUnpickler(reader: TastyReader,
1069
1069
case stat : Import => curCtx = ctx.importContext(stat, stat.symbol)
1070
1070
case _ =>
1071
1071
assert(currentAddr.index == end.index)
1072
- buf.toList
1072
+ k( buf.toList, curCtx)
1073
1073
1074
- def readStats (exprOwner : Symbol , end : Addr ) (using Context ): List [ Tree ] = {
1074
+ def readStats [ T ] (exprOwner : Symbol , end : Addr , k : ( List [ Tree ], Context ) => T = sameTrees) (using Context ): T = {
1075
1075
fork.indexStats(end)
1076
- readIndexedStats(exprOwner, end)
1076
+ readIndexedStats(exprOwner, end, k )
1077
1077
}
1078
1078
1079
+ private def sameTrees (xs : List [Tree ], ctx : Context ) = xs
1080
+
1079
1081
def readIndexedParams [T <: MemberDef ](tag : Int )(using Context ): List [T ] =
1080
1082
collectWhile(nextByte == tag) { readIndexedDef().asInstanceOf [T ] }
1081
1083
@@ -1183,9 +1185,8 @@ class TreeUnpickler(reader: TastyReader,
1183
1185
case BLOCK =>
1184
1186
val exprReader = fork
1185
1187
skipTree()
1186
- val stats = readStats(ctx.owner, end)
1187
- val expr = exprReader.readTerm()
1188
- Block (stats, expr)
1188
+ readStats(ctx.owner, end,
1189
+ (stats, ctx) => Block (stats, exprReader.readTerm()(using ctx)))
1189
1190
case INLINED =>
1190
1191
val exprReader = fork
1191
1192
skipTree()
0 commit comments