summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/TailCalls.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-02-22 10:44:48 +0100
committerJason Zaugg <jzaugg@gmail.com>2014-02-22 11:13:50 +0100
commit5dfcf5eb6a2fea69327420a3ebc4792f9365bf5a (patch)
tree4579d84e6063552cea02f4f7a09b02d74ceaef92 /src/compiler/scala/tools/nsc/transform/TailCalls.scala
parent00624a39ed84c3fd245dd9df7454d4cec4399e13 (diff)
downloadscala-5dfcf5eb6a2fea69327420a3ebc4792f9365bf5a.tar.gz
scala-5dfcf5eb6a2fea69327420a3ebc4792f9365bf5a.tar.bz2
scala-5dfcf5eb6a2fea69327420a3ebc4792f9365bf5a.zip
SI-8324 Fix regression in override checks for sealed classes
adeffda25 changed `Symbol#isEffectivelyFinal` to help the optimizer by inferring finality within sealed class hierarchies. However, this change wasn't neccesarily welcome for other clients of that method. In the enclosed test case, we see that overriding checks in `RefChecks` regressed. This commit moves the enhanced version into a new method and selectively uses it in the optimizer (and the tail call optimizer).
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/TailCalls.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/TailCalls.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/TailCalls.scala b/src/compiler/scala/tools/nsc/transform/TailCalls.scala
index 5973c70583..714f189ead 100644
--- a/src/compiler/scala/tools/nsc/transform/TailCalls.scala
+++ b/src/compiler/scala/tools/nsc/transform/TailCalls.scala
@@ -116,7 +116,7 @@ abstract class TailCalls extends Transform {
def tailLabels: Set[Symbol]
def enclosingType = method.enclClass.typeOfThis
- def isEligible = method.isEffectivelyFinal
+ def isEligible = method.isEffectivelyFinalOrNotOverridden
def isMandatory = method.hasAnnotation(TailrecClass)
def isTransformed = isEligible && accessed(label)