@@ -7,14 +7,14 @@ import Types._, Contexts._, Constants._, Names._, Flags._
7
7
import Symbols ._ , StdNames ._ , Trees ._
8
8
import util .{Property , SourceFile , NoSource }
9
9
import language .higherKinds
10
- import annotation .transientParam
10
+ import annotation .constructorOnly
11
11
import annotation .internal .sharable
12
12
13
13
object untpd extends Trees .Instance [Untyped ] with UntypedTreeInfo {
14
14
15
15
// ----- Tree cases that exist in untyped form only ------------------
16
16
17
- abstract class OpTree (implicit @ transientParam src : SourceFile ) extends Tree {
17
+ abstract class OpTree (implicit @ constructorOnly src : SourceFile ) extends Tree {
18
18
def op : Ident
19
19
override def isTerm : Boolean = op.name.isTermName
20
20
override def isType : Boolean = op.name.isTypeName
@@ -23,7 +23,7 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
23
23
/** A typed subtree of an untyped tree needs to be wrapped in a TypedSplice
24
24
* @param owner The current owner at the time the tree was defined
25
25
*/
26
- abstract case class TypedSplice (splice : tpd.Tree )(val owner : Symbol )(implicit @ transientParam src : SourceFile ) extends ProxyTree {
26
+ abstract case class TypedSplice (splice : tpd.Tree )(val owner : Symbol )(implicit @ constructorOnly src : SourceFile ) extends ProxyTree {
27
27
def forwardTo : tpd.Tree = splice
28
28
}
29
29
@@ -33,31 +33,31 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
33
33
}
34
34
35
35
/** mods object name impl */
36
- case class ModuleDef (name : TermName , impl : Template )(implicit @ transientParam src : SourceFile )
36
+ case class ModuleDef (name : TermName , impl : Template )(implicit @ constructorOnly src : SourceFile )
37
37
extends MemberDef {
38
38
type ThisTree [- T >: Untyped ] <: Trees .NameTree [T ] with Trees .MemberDef [T ] with ModuleDef
39
39
def withName (name : Name )(implicit ctx : Context ): ModuleDef = cpy.ModuleDef (this )(name.toTermName, impl)
40
40
}
41
41
42
- case class ParsedTry (expr : Tree , handler : Tree , finalizer : Tree )(implicit @ transientParam src : SourceFile ) extends Tree with TermTree
42
+ case class ParsedTry (expr : Tree , handler : Tree , finalizer : Tree )(implicit @ constructorOnly src : SourceFile ) extends Tree with TermTree
43
43
44
- case class SymbolLit (str : String )(implicit @ transientParam src : SourceFile ) extends TermTree
44
+ case class SymbolLit (str : String )(implicit @ constructorOnly src : SourceFile ) extends TermTree
45
45
46
46
/** An interpolated string
47
47
* @param segments a list of two element tickets consisting of string literal and argument tree,
48
48
* possibly with a simple string literal as last element of the list
49
49
*/
50
- case class InterpolatedString (id : TermName , segments : List [Tree ])(implicit @ transientParam src : SourceFile )
50
+ case class InterpolatedString (id : TermName , segments : List [Tree ])(implicit @ constructorOnly src : SourceFile )
51
51
extends TermTree
52
52
53
53
/** A function type */
54
- case class Function (args : List [Tree ], body : Tree )(implicit @ transientParam src : SourceFile ) extends Tree {
54
+ case class Function (args : List [Tree ], body : Tree )(implicit @ constructorOnly src : SourceFile ) extends Tree {
55
55
override def isTerm : Boolean = body.isTerm
56
56
override def isType : Boolean = body.isType
57
57
}
58
58
59
59
/** A function type with `implicit` or `erased` modifiers */
60
- class FunctionWithMods (args : List [Tree ], body : Tree , val mods : Modifiers )(implicit @ transientParam src : SourceFile )
60
+ class FunctionWithMods (args : List [Tree ], body : Tree , val mods : Modifiers )(implicit @ constructorOnly src : SourceFile )
61
61
extends Function (args, body)
62
62
63
63
/** A function created from a wildcard expression
@@ -67,76 +67,76 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
67
67
* This is equivalent to Function, except that forms a special case for the overlapping
68
68
* positions tests.
69
69
*/
70
- class WildcardFunction (placeholderParams : List [ValDef ], body : Tree )(implicit @ transientParam src : SourceFile )
70
+ class WildcardFunction (placeholderParams : List [ValDef ], body : Tree )(implicit @ constructorOnly src : SourceFile )
71
71
extends Function (placeholderParams, body)
72
72
73
- case class InfixOp (left : Tree , op : Ident , right : Tree )(implicit @ transientParam src : SourceFile ) extends OpTree
74
- case class PostfixOp (od : Tree , op : Ident )(implicit @ transientParam src : SourceFile ) extends OpTree
75
- case class PrefixOp (op : Ident , od : Tree )(implicit @ transientParam src : SourceFile ) extends OpTree {
73
+ case class InfixOp (left : Tree , op : Ident , right : Tree )(implicit @ constructorOnly src : SourceFile ) extends OpTree
74
+ case class PostfixOp (od : Tree , op : Ident )(implicit @ constructorOnly src : SourceFile ) extends OpTree
75
+ case class PrefixOp (op : Ident , od : Tree )(implicit @ constructorOnly src : SourceFile ) extends OpTree {
76
76
override def isType : Boolean = op.isType
77
77
override def isTerm : Boolean = op.isTerm
78
78
}
79
- case class Parens (t : Tree )(implicit @ transientParam src : SourceFile ) extends ProxyTree {
79
+ case class Parens (t : Tree )(implicit @ constructorOnly src : SourceFile ) extends ProxyTree {
80
80
def forwardTo : Tree = t
81
81
}
82
- case class Tuple (trees : List [Tree ])(implicit @ transientParam src : SourceFile ) extends Tree {
82
+ case class Tuple (trees : List [Tree ])(implicit @ constructorOnly src : SourceFile ) extends Tree {
83
83
override def isTerm : Boolean = trees.isEmpty || trees.head.isTerm
84
84
override def isType : Boolean = ! isTerm
85
85
}
86
- case class Throw (expr : Tree )(implicit @ transientParam src : SourceFile ) extends TermTree
87
- case class Quote (expr : Tree )(implicit @ transientParam src : SourceFile ) extends TermTree
88
- case class DoWhile (body : Tree , cond : Tree )(implicit @ transientParam src : SourceFile ) extends TermTree
89
- case class ForYield (enums : List [Tree ], expr : Tree )(implicit @ transientParam src : SourceFile ) extends TermTree
90
- case class ForDo (enums : List [Tree ], body : Tree )(implicit @ transientParam src : SourceFile ) extends TermTree
91
- case class GenFrom (pat : Tree , expr : Tree )(implicit @ transientParam src : SourceFile ) extends Tree
92
- case class GenAlias (pat : Tree , expr : Tree )(implicit @ transientParam src : SourceFile ) extends Tree
93
- case class ContextBounds (bounds : TypeBoundsTree , cxBounds : List [Tree ])(implicit @ transientParam src : SourceFile ) extends TypTree
94
- case class PatDef (mods : Modifiers , pats : List [Tree ], tpt : Tree , rhs : Tree )(implicit @ transientParam src : SourceFile ) extends DefTree
95
- case class DependentTypeTree (tp : List [Symbol ] => Type )(implicit @ transientParam src : SourceFile ) extends Tree
86
+ case class Throw (expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
87
+ case class Quote (expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
88
+ case class DoWhile (body : Tree , cond : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
89
+ case class ForYield (enums : List [Tree ], expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
90
+ case class ForDo (enums : List [Tree ], body : Tree )(implicit @ constructorOnly src : SourceFile ) extends TermTree
91
+ case class GenFrom (pat : Tree , expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends Tree
92
+ case class GenAlias (pat : Tree , expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends Tree
93
+ case class ContextBounds (bounds : TypeBoundsTree , cxBounds : List [Tree ])(implicit @ constructorOnly src : SourceFile ) extends TypTree
94
+ case class PatDef (mods : Modifiers , pats : List [Tree ], tpt : Tree , rhs : Tree )(implicit @ constructorOnly src : SourceFile ) extends DefTree
95
+ case class DependentTypeTree (tp : List [Symbol ] => Type )(implicit @ constructorOnly src : SourceFile ) extends Tree
96
96
97
97
@ sharable object EmptyTypeIdent extends Ident (tpnme.EMPTY )(NoSource ) with WithoutTypeOrPos [Untyped ] {
98
98
override def isEmpty : Boolean = true
99
99
}
100
100
101
101
/** A block generated by the XML parser, only treated specially by
102
102
* `Positioned#checkPos` */
103
- class XMLBlock (stats : List [Tree ], expr : Tree )(implicit @ transientParam src : SourceFile ) extends Block (stats, expr)
103
+ class XMLBlock (stats : List [Tree ], expr : Tree )(implicit @ constructorOnly src : SourceFile ) extends Block (stats, expr)
104
104
105
105
// ----- Modifiers -----------------------------------------------------
106
106
/** Mod is intended to record syntactic information about modifiers, it's
107
107
* NOT a replacement of FlagSet.
108
108
*
109
109
* For any query about semantic information, check `flags` instead.
110
110
*/
111
- sealed abstract class Mod (val flags : FlagSet )(implicit @ transientParam src : SourceFile )
111
+ sealed abstract class Mod (val flags : FlagSet )(implicit @ constructorOnly src : SourceFile )
112
112
extends Positioned
113
113
114
114
object Mod {
115
- case class Private ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Private )
115
+ case class Private ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Private )
116
116
117
- case class Protected ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Protected )
117
+ case class Protected ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Protected )
118
118
119
- case class Var ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Mutable )
119
+ case class Var ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Mutable )
120
120
121
- case class Implicit ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .ImplicitCommon )
121
+ case class Implicit ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .ImplicitCommon )
122
122
123
- case class Erased ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Erased )
123
+ case class Erased ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Erased )
124
124
125
- case class Final ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Final )
125
+ case class Final ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Final )
126
126
127
- case class Sealed ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Sealed )
127
+ case class Sealed ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Sealed )
128
128
129
- case class Opaque ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Opaque )
129
+ case class Opaque ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Opaque )
130
130
131
- case class Override ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Override )
131
+ case class Override ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Override )
132
132
133
- case class Abstract ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Abstract )
133
+ case class Abstract ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Abstract )
134
134
135
- case class Lazy ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Lazy )
135
+ case class Lazy ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Lazy )
136
136
137
- case class Inline ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Inline )
137
+ case class Inline ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Inline )
138
138
139
- case class Enum ()(implicit @ transientParam src : SourceFile ) extends Mod (Flags .Enum )
139
+ case class Enum ()(implicit @ constructorOnly src : SourceFile ) extends Mod (Flags .Enum )
140
140
}
141
141
142
142
/** Modifiers and annotations for definitions
@@ -215,7 +215,7 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
215
215
/** A type tree that gets its type from some other tree's symbol. Enters the
216
216
* type tree in the References attachment of the `from` tree as a side effect.
217
217
*/
218
- abstract class DerivedTypeTree (implicit @ transientParam src : SourceFile ) extends TypeTree {
218
+ abstract class DerivedTypeTree (implicit @ constructorOnly src : SourceFile ) extends TypeTree {
219
219
220
220
private [this ] var myWatched : Tree = EmptyTree
221
221
0 commit comments