aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/TypeAssigner.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-06-29 19:02:34 +0200
committerMartin Odersky <odersky@gmail.com>2016-07-11 13:34:58 +0200
commitcdb4a1cb986f25eddf411dfc45aeb20dd994f7d5 (patch)
treeba9c96c271418ec09c4b39adad8ebdbf7b81f4fa /src/dotty/tools/dotc/typer/TypeAssigner.scala
parent5d0318681f8c368f04796da5dd11ee1c9fcbdbd0 (diff)
downloaddotty-cdb4a1cb986f25eddf411dfc45aeb20dd994f7d5.tar.gz
dotty-cdb4a1cb986f25eddf411dfc45aeb20dd994f7d5.tar.bz2
dotty-cdb4a1cb986f25eddf411dfc45aeb20dd994f7d5.zip
New type lambda scheme for hk types
Diffstat (limited to 'src/dotty/tools/dotc/typer/TypeAssigner.scala')
-rw-r--r--src/dotty/tools/dotc/typer/TypeAssigner.scala10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/typer/TypeAssigner.scala b/src/dotty/tools/dotc/typer/TypeAssigner.scala
index f439c4c99..b686e6eed 100644
--- a/src/dotty/tools/dotc/typer/TypeAssigner.scala
+++ b/src/dotty/tools/dotc/typer/TypeAssigner.scala
@@ -425,6 +425,16 @@ trait TypeAssigner {
tree.withType(ownType)
}
+ def assignType(tree: untpd.TypeLambdaTree, tparamDefs: List[TypeDef], body: Tree)(implicit ctx: Context) = {
+ val tparams = tparamDefs.map(_.symbol)
+ val argBindingFns = tparams.map(tparam =>
+ tparam.info.bounds
+ .withBindingKind(BindingKind.fromVariance(tparam.variance))
+ .internalizeFrom(tparams))
+ val bodyFn = body.tpe.internalizeFrom(tparams)
+ tree.withType(TypeApplicationsNewHK.TypeLambda(argBindingFns, bodyFn))
+ }
+
def assignType(tree: untpd.ByNameTypeTree, result: Tree)(implicit ctx: Context) =
tree.withType(ExprType(result.tpe))