aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/TypeAssigner.scala
diff options
context:
space:
mode:
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))