@@ -42,23 +42,23 @@ object desugar {
42
42
43
43
// ----- DerivedTypeTrees -----------------------------------
44
44
45
- class SetterParamTree extends DerivedTypeTree {
45
+ class SetterParamTree ( implicit ids : TreeIds ) extends DerivedTypeTree {
46
46
def derivedTree (sym : Symbol )(implicit ctx : Context ): tpd.TypeTree = tpd.TypeTree (sym.info.resultType)
47
47
}
48
48
49
- class TypeRefTree extends DerivedTypeTree {
49
+ class TypeRefTree ( implicit ids : TreeIds ) extends DerivedTypeTree {
50
50
def derivedTree (sym : Symbol )(implicit ctx : Context ): tpd.TypeTree = tpd.TypeTree (sym.typeRef)
51
51
}
52
52
53
- class TermRefTree extends DerivedTypeTree {
53
+ class TermRefTree ( implicit ids : TreeIds ) extends DerivedTypeTree {
54
54
def derivedTree (sym : Symbol )(implicit ctx : Context ): tpd.Tree = tpd.ref(sym)
55
55
}
56
56
57
57
/** A type tree that computes its type from an existing parameter.
58
58
* @param suffix String difference between existing parameter (call it `P`) and parameter owning the
59
59
* DerivedTypeTree (call it `O`). We have: `O.name == P.name + suffix`.
60
60
*/
61
- class DerivedFromParamTree (suffix : String ) extends DerivedTypeTree {
61
+ class DerivedFromParamTree (suffix : String )( implicit ids : TreeIds ) extends DerivedTypeTree {
62
62
63
63
/** Make sure that for all enclosing module classes their companion classes
64
64
* are completed. Reason: We need the constructor of such companion classes to
@@ -109,7 +109,7 @@ object desugar {
109
109
}
110
110
111
111
/** A type definition copied from `tdef` with a rhs typetree derived from it */
112
- def derivedTypeParam (tdef : TypeDef , suffix : String = " " ): TypeDef =
112
+ def derivedTypeParam (tdef : TypeDef , suffix : String = " " )( implicit ctx : Context ) : TypeDef =
113
113
cpy.TypeDef (tdef)(
114
114
name = tdef.name ++ suffix,
115
115
rhs = new DerivedFromParamTree (suffix).withPos(tdef.rhs.pos).watching(tdef)
@@ -120,9 +120,9 @@ object desugar {
120
120
TypeDef (sym.name, new DerivedFromParamTree (" " ).watching(sym)).withFlags(TypeParam )
121
121
122
122
/** A value definition copied from `vdef` with a tpt typetree derived from it */
123
- def derivedTermParam (vdef : ValDef ): ValDef =
123
+ def derivedTermParam (vdef : ValDef )( implicit ctx : Context ) : ValDef =
124
124
cpy.ValDef (vdef)(
125
- tpt = new DerivedFromParamTree (" " ) withPos vdef.tpt.pos watching vdef)
125
+ tpt = new DerivedFromParamTree (" " ). withPos( vdef.tpt.pos). watching( vdef) )
126
126
127
127
// ----- Desugar methods -------------------------------------------------
128
128
@@ -931,9 +931,10 @@ object desugar {
931
931
* def $anonfun(params) = body
932
932
* Closure($anonfun)
933
933
*/
934
- def makeClosure (params : List [ValDef ], body : Tree , tpt : Tree = TypeTree () , isImplicit : Boolean )(implicit ctx : Context ): Block =
934
+ def makeClosure (params : List [ValDef ], body : Tree , tpt : Tree = null , isImplicit : Boolean )(implicit ctx : Context ): Block =
935
935
Block (
936
- DefDef (nme.ANON_FUN , Nil , params :: Nil , tpt, body).withMods(synthetic | Artifact ),
936
+ DefDef (nme.ANON_FUN , Nil , params :: Nil , if (tpt == null ) TypeTree () else tpt, body)
937
+ .withMods(synthetic | Artifact ),
937
938
Closure (Nil , Ident (nme.ANON_FUN ), if (isImplicit) ImplicitEmptyTree else EmptyTree ))
938
939
939
940
/** If `nparams` == 1, expand partial function
@@ -1023,7 +1024,7 @@ object desugar {
1023
1024
mayNeedSetter
1024
1025
}
1025
1026
1026
- private def derivedDefDef (original : Tree , named : NameTree , tpt : Tree , rhs : Tree , mods : Modifiers ) =
1027
+ private def derivedDefDef (original : Tree , named : NameTree , tpt : Tree , rhs : Tree , mods : Modifiers )( implicit ids : TreeIds ) =
1027
1028
DefDef (named.name.asTermName, Nil , Nil , tpt, rhs)
1028
1029
.withMods(mods)
1029
1030
.withPos(original.pos.withPoint(named.pos.start))
@@ -1387,5 +1388,6 @@ object desugar {
1387
1388
buf.toList
1388
1389
}
1389
1390
1390
- private class IrrefutableGenFrom (pat : Tree , expr : Tree ) extends GenFrom (pat, expr)
1391
+ private class IrrefutableGenFrom (pat : Tree , expr : Tree )(implicit ids : TreeIds )
1392
+ extends GenFrom (pat, expr)
1391
1393
}
0 commit comments