aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-10-25 15:22:32 +0200
committerGitHub <noreply@github.com>2016-10-25 15:22:32 +0200
commit133fbb352b5acafb9e1ea5ab53e8678dca03afd9 (patch)
tree27d5ad39e133aac6431f8c463446cb1ae373876e /src
parent56731e4b18728427f0b7188eb91afc475b36bb18 (diff)
parent20cbcca0ec49a3d4de1021d261cc4a35d242925b (diff)
downloaddotty-133fbb352b5acafb9e1ea5ab53e8678dca03afd9.tar.gz
dotty-133fbb352b5acafb9e1ea5ab53e8678dca03afd9.tar.bz2
dotty-133fbb352b5acafb9e1ea5ab53e8678dca03afd9.zip
Merge pull request #1620 from dotty-staging/fix-1614
Fix #1614 tailrec.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/transform/TailRec.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/TailRec.scala b/src/dotty/tools/dotc/transform/TailRec.scala
index d99a48af3..fde4db811 100644
--- a/src/dotty/tools/dotc/transform/TailRec.scala
+++ b/src/dotty/tools/dotc/transform/TailRec.scala
@@ -143,7 +143,11 @@ class TailRec extends MiniPhaseTransform with DenotTransformer with FullParamete
newOwners = label :: Nil
).transform(rhsSemiTransformed)
})
- Block(List(labelDef), ref(label).appliedToArgss(vparamss0.map(_.map(x=> ref(x.symbol)))))
+ val callIntoLabel = (
+ if (dd.tparams.isEmpty) ref(label)
+ else ref(label).appliedToTypes(dd.tparams.map(_.tpe))
+ ).appliedToArgss(vparamss0.map(_.map(x=> ref(x.symbol))))
+ Block(List(labelDef), callIntoLabel)
}} else {
if (mandatory) ctx.error(
"TailRec optimisation not applicable, method not tail recursive",