@@ -1059,7 +1059,7 @@ class TreeUnpickler(reader: TastyReader,
10591059 else
10601060 Nil
10611061
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 =
10631063 val buf = new mutable.ListBuffer [Tree ]
10641064 var curCtx = ctx
10651065 while currentAddr.index < end.index do
@@ -1069,13 +1069,15 @@ class TreeUnpickler(reader: TastyReader,
10691069 case stat : Import => curCtx = ctx.importContext(stat, stat.symbol)
10701070 case _ =>
10711071 assert(currentAddr.index == end.index)
1072- buf.toList
1072+ k( buf.toList, curCtx)
10731073
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 = {
10751075 fork.indexStats(end)
1076- readIndexedStats(exprOwner, end)
1076+ readIndexedStats(exprOwner, end, k )
10771077 }
10781078
1079+ private def sameTrees (xs : List [Tree ], ctx : Context ) = xs
1080+
10791081 def readIndexedParams [T <: MemberDef ](tag : Int )(using Context ): List [T ] =
10801082 collectWhile(nextByte == tag) { readIndexedDef().asInstanceOf [T ] }
10811083
@@ -1183,9 +1185,8 @@ class TreeUnpickler(reader: TastyReader,
11831185 case BLOCK =>
11841186 val exprReader = fork
11851187 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)))
11891190 case INLINED =>
11901191 val exprReader = fork
11911192 skipTree()
0 commit comments