@@ -669,6 +669,11 @@ object Trees {
669669 type ThisTree [- T >: Untyped ] = LambdaTypeTree [T ]
670670 }
671671
672+ case class TermLambdaTypeTree [- T >: Untyped ] private [ast] (params : List [ValDef [T ]], body : Tree [T ])(implicit @ constructorOnly src : SourceFile )
673+ extends TypTree [T ] {
674+ type ThisTree [- T >: Untyped ] = TermLambdaTypeTree [T ]
675+ }
676+
672677 /** [bound] selector match { cases } */
673678 case class MatchTypeTree [- T >: Untyped ] private [ast] (bound : Tree [T ], selector : Tree [T ], cases : List [CaseDef [T ]])(implicit @ constructorOnly src : SourceFile )
674679 extends TypTree [T ] {
@@ -964,6 +969,7 @@ object Trees {
964969 type RefinedTypeTree = Trees .RefinedTypeTree [T ]
965970 type AppliedTypeTree = Trees .AppliedTypeTree [T ]
966971 type LambdaTypeTree = Trees .LambdaTypeTree [T ]
972+ type TermLambdaTypeTree = Trees .TermLambdaTypeTree [T ]
967973 type MatchTypeTree = Trees .MatchTypeTree [T ]
968974 type ByNameTypeTree = Trees .ByNameTypeTree [T ]
969975 type TypeBoundsTree = Trees .TypeBoundsTree [T ]
@@ -1135,6 +1141,10 @@ object Trees {
11351141 case tree : LambdaTypeTree if (tparams eq tree.tparams) && (body eq tree.body) => tree
11361142 case _ => finalize(tree, untpd.LambdaTypeTree (tparams, body)(sourceFile(tree)))
11371143 }
1144+ def TermLambdaTypeTree (tree : Tree )(params : List [ValDef ], body : Tree )(implicit ctx : Context ): TermLambdaTypeTree = tree match {
1145+ case tree : TermLambdaTypeTree if (params eq tree.params) && (body eq tree.body) => tree
1146+ case _ => finalize(tree, untpd.TermLambdaTypeTree (params, body)(sourceFile(tree)))
1147+ }
11381148 def MatchTypeTree (tree : Tree )(bound : Tree , selector : Tree , cases : List [CaseDef ])(implicit ctx : Context ): MatchTypeTree = tree match {
11391149 case tree : MatchTypeTree if (bound eq tree.bound) && (selector eq tree.selector) && (cases eq tree.cases) => tree
11401150 case _ => finalize(tree, untpd.MatchTypeTree (bound, selector, cases)(sourceFile(tree)))
@@ -1293,6 +1303,10 @@ object Trees {
12931303 inContext(localCtx) {
12941304 cpy.LambdaTypeTree (tree)(transformSub(tparams), transform(body))
12951305 }
1306+ case TermLambdaTypeTree (params, body) =>
1307+ inContext(localCtx) {
1308+ cpy.TermLambdaTypeTree (tree)(transformSub(params), transform(body))
1309+ }
12961310 case MatchTypeTree (bound, selector, cases) =>
12971311 cpy.MatchTypeTree (tree)(transform(bound), transform(selector), transformSub(cases))
12981312 case ByNameTypeTree (result) =>
@@ -1422,6 +1436,10 @@ object Trees {
14221436 inContext(localCtx) {
14231437 this (this (x, tparams), body)
14241438 }
1439+ case TermLambdaTypeTree (params, body) =>
1440+ inContext(localCtx) {
1441+ this (this (x, params), body)
1442+ }
14251443 case MatchTypeTree (bound, selector, cases) =>
14261444 this (this (this (x, bound), selector), cases)
14271445 case ByNameTypeTree (result) =>
0 commit comments