diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2009-11-06 18:00:43 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2009-11-06 18:00:43 +0000 |
commit | d42f62bbd76df85ed57162118a8c720f50bbd5c5 (patch) | |
tree | 7f250f596a8dafbe3503bdd66e9f67bfa2c3f236 /src | |
parent | 1b807250a30c8526851e67271f0545c67362b365 (diff) | |
download | scala-d42f62bbd76df85ed57162118a8c720f50bbd5c5.tar.gz scala-d42f62bbd76df85ed57162118a8c720f50bbd5c5.tar.bz2 scala-d42f62bbd76df85ed57162118a8c720f50bbd5c5.zip |
Fixed initial variable binding for method param...
Fixed initial variable binding for method parameters, that caused the
inliner to infer wrong types for tail recursive methods
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala index 0dadd8980d..32a6037d41 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/TypeFlowAnalysis.scala @@ -126,6 +126,12 @@ abstract class TypeFlowAnalysis { in(b) = typeFlowLattice.bottom out(b) = typeFlowLattice.bottom } + + // start block has var bindings for each of its parameters + val entryBindings = new VarBinding + m.params.foreach(p => entryBindings += ((p, p.kind))) + in(m.code.startBlock) = lattice.IState(entryBindings, typeStackLattice.bottom) + m.exh foreach { e => in(e.startBlock) = lattice.IState(in(e.startBlock).vars, typeStackLattice.exceptionHandlerStack) } |