diff options
author | Martin Odersky <odersky@gmail.com> | 2016-11-05 15:01:28 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-11-05 15:01:36 +0100 |
commit | 9c821cb83ce6b6f566620432ef3b5d70f54c67d2 (patch) | |
tree | 323cecc1274e786ab66a9c2dc9c75d1dc81c2d8b | |
parent | a55a2607c7376ed81141ef958d6a8eeaeea8fd72 (diff) | |
download | dotty-9c821cb83ce6b6f566620432ef3b5d70f54c67d2.tar.gz dotty-9c821cb83ce6b6f566620432ef3b5d70f54c67d2.tar.bz2 dotty-9c821cb83ce6b6f566620432ef3b5d70f54c67d2.zip |
Fix #1640: Avoid applications with untyped function parts
Avoid applications with untyped function parts even if program is erroneous.
Taking the symbol fails for these applications, which can cause crashes.
-rw-r--r-- | src/dotty/tools/dotc/typer/Applications.scala | 2 | ||||
-rw-r--r-- | tests/neg/i1640.scala | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala index 56595a637..6c398cd72 100644 --- a/src/dotty/tools/dotc/typer/Applications.scala +++ b/src/dotty/tools/dotc/typer/Applications.scala @@ -591,7 +591,7 @@ trait Applications extends Compatibility { self: Typer with Dynamic => } fun1.tpe match { - case ErrorType => tree.withType(ErrorType) + case ErrorType => untpd.cpy.Apply(tree)(fun1, tree.args).withType(ErrorType) case TryDynamicCallType => typedDynamicApply(tree, pt) case _ => tryEither { diff --git a/tests/neg/i1640.scala b/tests/neg/i1640.scala new file mode 100644 index 000000000..78351a1d6 --- /dev/null +++ b/tests/neg/i1640.scala @@ -0,0 +1,4 @@ +object Test extends App { + List(1, 2, 3) map (_ match { case x => x + 1 }) + List((1, 2)) x (_ match { case (x, z) => x + z }) // error +} |