aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala14
-rw-r--r--tests/pickling/i1202d.scala4
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")
+}