diff options
-rw-r--r-- | src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala | 14 | ||||
-rw-r--r-- | tests/pickling/i1202d.scala | 4 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index d7f33c75c..ad6ddf7fe 100644 --- a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -807,9 +807,10 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { tpd.Super(qual, mixName, ctx.mode.is(Mode.InSuperCall), mixClass) case APPLY => val fn = readTerm() - val isJava = fn.tpe.isInstanceOf[JavaMethodType] + val isJava = fn.symbol.is(JavaDefined) def readArg() = readTerm() match { - case SeqLiteral(elems, elemtpt) if isJava => JavaSeqLiteral(elems, elemtpt) + case SeqLiteral(elems, elemtpt) if isJava => + JavaSeqLiteral(elems, elemtpt) case arg => arg } tpd.Apply(fn, until(end)(readArg())) @@ -818,7 +819,14 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { case PAIR => Pair(readTerm(), readTerm()) case TYPED => - Typed(readTerm(), readTpt()) + val expr = readTerm() + val tpt = readTpt() + val expr1 = expr match { + case SeqLiteral(elems, elemtpt) if tpt.tpe.isRef(defn.ArrayClass) => + JavaSeqLiteral(elems, elemtpt) + case expr => expr + } + Typed(expr1, tpt) case NAMEDARG => NamedArg(readName(), readTerm()) case ASSIGN => diff --git a/tests/pickling/i1202d.scala b/tests/pickling/i1202d.scala new file mode 100644 index 000000000..d03adf197 --- /dev/null +++ b/tests/pickling/i1202d.scala @@ -0,0 +1,4 @@ +class Fail5 { + val someClass: Class[_] = ??? + val resultMethod = someClass.getMethod("result") +} |