diff options
author | Martin Odersky <odersky@gmail.com> | 2016-06-29 19:02:34 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-07-11 13:34:58 +0200 |
commit | cdb4a1cb986f25eddf411dfc45aeb20dd994f7d5 (patch) | |
tree | ba9c96c271418ec09c4b39adad8ebdbf7b81f4fa /src/dotty/tools/dotc/typer/TypeAssigner.scala | |
parent | 5d0318681f8c368f04796da5dd11ee1c9fcbdbd0 (diff) | |
download | dotty-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.scala | 10 |
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)) |