Skip to content

Commit 49a18da

Browse files
authored
Merge pull request #2187 from dotty-staging/fix-2166
fix #2166: unpickling of shared CaseDef
2 parents 09cc237 + 9191d63 commit 49a18da

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1059,7 +1059,13 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table, posUnpickle
10591059
}
10601060

10611061
def readCases(end: Addr)(implicit ctx: Context): List[CaseDef] =
1062-
collectWhile(nextByte == CASEDEF && currentAddr != end) { readCase()(ctx.fresh.setNewScope) }
1062+
collectWhile((nextByte == CASEDEF || nextByte == SHARED) && currentAddr != end) {
1063+
if (nextByte == SHARED) {
1064+
readByte()
1065+
forkAt(readAddr()).readCase()(ctx.fresh.setNewScope)
1066+
}
1067+
else readCase()(ctx.fresh.setNewScope)
1068+
}
10631069

10641070
def readCase()(implicit ctx: Context): CaseDef = {
10651071
val start = currentAddr

tests/pickling/i2166.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
object Test {
2+
@inline def f = "" match { case _ => false }
3+
4+
def main(args: Array[String]): Unit = f
5+
}

0 commit comments

Comments
 (0)