aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Applications.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-10-29 11:52:43 +0100
committerMartin Odersky <odersky@gmail.com>2014-11-09 10:17:34 +0100
commit936e83f3617e7dd1b9141cf20b1dc8ec3482df97 (patch)
treec268d2f3b199c80d0a5298070e49621f8c260331 /src/dotty/tools/dotc/typer/Applications.scala
parent252b6d9f3a80bdfc789e2f5b463ee7dc7a10b659 (diff)
downloaddotty-936e83f3617e7dd1b9141cf20b1dc8ec3482df97.tar.gz
dotty-936e83f3617e7dd1b9141cf20b1dc8ec3482df97.tar.bz2
dotty-936e83f3617e7dd1b9141cf20b1dc8ec3482df97.zip
New phase: RestoreScopes
Cleans up after LambdaLift and Flatten. RestoreScopes exhibited a problem (double definition) when compiling Unpickler. The root of the problem was in Applications.scala. The effect was that arguments woulkd be lifted out, but then the argument expression would be used anyway. That caused a closure to be present twice which caused the double def error much later. -Ycheck did not catch it because the two closure expressions were in non-overlapping scopes.
Diffstat (limited to 'src/dotty/tools/dotc/typer/Applications.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Applications.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala
index 035f19028..a237e7781 100644
--- a/src/dotty/tools/dotc/typer/Applications.scala
+++ b/src/dotty/tools/dotc/typer/Applications.scala
@@ -461,7 +461,7 @@ trait Applications extends Compatibility { self: Typer =>
val result = {
var typedArgs = typedArgBuf.toList
- val app0 = cpy.Apply(app)(normalizedFun, typedArgs)
+ def app0 = cpy.Apply(app)(normalizedFun, typedArgs) // needs to be a `def` because typedArgs can change later
val app1 =
if (!success) app0.withType(ErrorType)
else {