@@ -2,24 +2,27 @@ object tasty {
22
33// ------ Names --------------------------------
44
5+ trait Name
56 trait PossiblySignedName
67
7- enum Name extends PossiblySignedName {
8+ enum TermName extends Name with PossiblySignedName {
89 case Simple (str : String )
9- case Qualified (prefix : Name , selector : String ) // s"$prefix.$name"
10- case Unique (underlying : Name , separator : String , idx : Int ) // s"$underlying$separator$idx"
11- case DefaultGetter (methodName : Name , idx : String ) // s"$methodName${"$default$"}${idx+1}"
12- case Variant (underlying : Name , covariant : Boolean ) // s"${if (covariant) "+" else "-"}$underlying"
13- case SuperAccessor (underlying : Name ) // s"${"super$"}$underlying"
14- case ProtectedAccessor (underlying : Name ) // s"${"protectded$"}$underlying"
15- case ProtectedSetter (underlying : Name ) // s"${"protectded$set"}$underlying"
16- case ObjectClass (underlying : Name ) // s"$underlying${"$"}"
17-
18- case Expanded (prefix : Name , selector : String ) // s"$prefix${"$$"}$name" , used only for symbols coming from Scala 2
19- case ExpandedPrefix (prefix : Name , selector : String ) // s"$prefix${"$"}$name" , used only for symbols coming from Scala 2
10+ case Qualified (prefix : TermName , selector : String ) // s"$prefix.$name"
11+ case Unique (underlying : TermName , separator : String , idx : Int ) // s"$underlying$separator$idx"
12+ case DefaultGetter (methodName : TermName , idx : String ) // s"$methodName${"$default$"}${idx+1}"
13+ case Variant (underlying : TermName , covariant : Boolean ) // s"${if (covariant) "+" else "-"}$underlying"
14+ case SuperAccessor (underlying : TermName ) // s"${"super$"}$underlying"
15+ case ProtectedAccessor (underlying : TermName ) // s"${"protectded$"}$underlying"
16+ case ProtectedSetter (underlying : TermName ) // s"${"protectded$set"}$underlying"
17+ case ObjectClass (underlying : TermName ) // s"$underlying${"$"}"
18+
19+ case Expanded (prefix : TermName , selector : String ) // s"$prefix${"$$"}$name" , used only for symbols coming from Scala 2
20+ case ExpandedPrefix (prefix : TermName , selector : String ) // s"$prefix${"$"}$name" , used only for symbols coming from Scala 2
2021 }
2122
22- case class SignedName (name : Name , resultSig : Name , paramSigs : List [Name ]) extends PossiblySignedName
23+ case class SignedName (name : TermName , resultSig : TypeName , paramSigs : List [TypeName ]) extends PossiblySignedName
24+
25+ case class TypeName (name : TermName ) extends Name
2326
2427// ------ Positions ---------------------------
2528
@@ -45,21 +48,21 @@ object tasty {
4548 }
4649
4750 class ValDef (
48- val name : Name ,
51+ val name : TermName ,
4952 val tpt : Term ,
5053 rhsExp : ValDef => Term | Empty ,
5154 val mods : List [Modifier ])
5255 extends Definition {
5356 lazy val rhs = rhsExp(this )
5457 }
5558 object ValDef {
56- def apply (name : Name , tpt : Term , rhs : Term | Empty , mods : List [Modifier ] = Nil ) =
59+ def apply (name : TermName , tpt : Term , rhs : Term | Empty , mods : List [Modifier ] = Nil ) =
5760 new ValDef (name, tpt, _ => rhs, mods)
5861 def unapply (vdef : ValDef ) = Some ((vdef.name, vdef.tpt, vdef.rhs, vdef.mods))
5962 }
6063
6164 class DefDef (
62- val name : Name ,
65+ val name : TermName ,
6366 typeParamsExp : DefDef => List [TypeDef ],
6467 paramssExp : DefDef => List [List [ValDef ]],
6568 returnTptExp : DefDef => Term ,
@@ -72,32 +75,32 @@ object tasty {
7275 lazy val rhs = rhsExp(this )
7376 }
7477 object DefDef {
75- def apply (name : Name , typeParams : List [TypeDef ], paramss : List [List [ValDef ]], returnTpt : Term , rhs : Term | Empty , mods : List [Modifier ] = Nil ) =
78+ def apply (name : TermName , typeParams : List [TypeDef ], paramss : List [List [ValDef ]], returnTpt : Term , rhs : Term | Empty , mods : List [Modifier ] = Nil ) =
7679 new DefDef (name, _ => typeParams, _ => paramss, _ => returnTpt, _ => rhs, mods)
7780 def unapply (ddef : DefDef ) = Some ((ddef.name, ddef.typeParams, ddef.paramss, ddef.returnTpt, ddef.rhs, ddef.mods))
7881 }
7982
8083 class TypeDef (
81- val name : Name ,
84+ val name : TypeName ,
8285 rhsExp : TypeDef => Term ,
8386 val mods : List [Modifier ])
8487 extends Definition {
8588 val rhs = rhsExp(this ),
8689 }
8790 object TypeDef {
88- def apply (name : Name , rhs : Term , mods : List [Modifier ] = Nil ) = new TypeDef (name, _ => rhs, mods)
91+ def apply (name : TypeName , rhs : Term , mods : List [Modifier ] = Nil ) = new TypeDef (name, _ => rhs, mods)
8992 def unapply (tdef : TypeDef ) = Some ((tdef.name, tdef.rhs, tdef.mods))
9093 }
9194
9295 class ClassDef (
93- val name : Name ,
96+ val name : TypeName ,
9497 rhsExp : ClassDef => Template ,
9598 val mods : List [Modifier ])
9699 extends Definition {
97100 val rhs = rhsExp(this )
98101 }
99102 object ClassDef {
100- def apply (name : Name , rhs : Template , mods : List [Modifier ] = Nil ) = new ClassDef (name, _ => rhs, mods)
103+ def apply (name : TypeName , rhs : Template , mods : List [Modifier ] = Nil ) = new ClassDef (name, _ => rhs, mods)
101104 def unapply (tdef : ClassDef ) = Some ((tdef.name, tdef.rhs, tdef.mods))
102105 }
103106
@@ -116,19 +119,19 @@ object tasty {
116119 case Omit (id1 : Id )
117120 }
118121
119- case class Id (name : Name ) extends Positioned // untyped ident
122+ case class Id (name : String ) extends Positioned // untyped ident
120123
121124// ------ Terms ---------------------------------
122125
123126 /** Trees denoting terms */
124127 enum Term extends Statement {
125128 def tpe : Type = ???
126- case Ident (name : Name , override val tpe : Type )
129+ case Ident (name : TermName , override val tpe : Type )
127130 case Select (prefix : Term , name : PossiblySignedName )
128131 case Literal (value : Constant )
129132 case This (id : Id | Empty )
130133 case New (tpt : Term )
131- case NamedArg (name : Name , arg : Term )
134+ case NamedArg (name : TermName , arg : Term )
132135 case Apply (fn : Term , args : List [Term ])
133136 case TypeApply (fn : Term , args : List [Term ])
134137 case Super (thiz : Term , mixin : Id | Empty )
@@ -149,8 +152,8 @@ object tasty {
149152 /** Trees denoting types */
150153 enum TypeTerm extends Positioned {
151154 def tpe : Type = ???
152- case Ident (name : Name , override val tpe : Type )
153- case Select (prefix : Term , name : Name )
155+ case Ident (name : TypeName , override val tpe : Type )
156+ case Select (prefix : Term , name : TypeName )
154157 case Singleton (ref : Term )
155158 case Refined (underlying : TypeTerm , refinements : List [Definition ])
156159 case Applied (tycon : TypeTerm , args : List [TypeTerm ])
@@ -165,7 +168,7 @@ object tasty {
165168 enum Pattern extends Positioned {
166169 def tpe : Type = ???
167170 case Value (v : Term )
168- case Bind (name : Name , pat : Pattern )
171+ case Bind (name : TermName , pat : Pattern )
169172 case Unapply (unapply : Term , implicits : List [Term ], pats : List [Pattern ])
170173 case Alternative (pats : List [Pattern ])
171174 case TypeTest (tpt : Term )
@@ -181,11 +184,9 @@ object tasty {
181184 object Type {
182185 case class ConstantType (value : Constant ) extends Type
183186 case class SymRef (sym : Definition , qualifier : Type | Empty = Empty ) extends Type
184- case class TypeNameRef (name : Name , qualifier : Type | Empty = Empty ) extends Type // Empty means: select from _root_
185- case class TermNameRef (name : Name , qualifier : Type | Empty = Empty ) extends Type // Empty means: select from _root_
187+ case class NameRef (name : Name , qualifier : Type | Empty = Empty ) extends Type // Empty means: select from _root_
186188 case class SuperType (thistp : Type , underlying : Type ) extends Type
187- case class TermRefinement (underlying : Type , name : Name , tpe : Type ) extends Type
188- case class TypeRefinement (underlying : Type , name : Name , info : TypeBounds ) extends Type
189+ case class Refinement (underlying : Type , name : Name , tpe : Type ) extends Type
189190 case class AppliedType (tycon : Type , args : Type | TypeBounds ) extends Type
190191 case class AnnotatedType (underlying : Type , annotation : Term ) extends Type
191192 case class AndType (left : Type , right : Type ) extends Type
@@ -205,49 +206,51 @@ object tasty {
205206 }
206207
207208 trait LambdaType extends Type {
209+ type ParamName
208210 type ParamInfo
209- def paramNames : List [Name ]
211+ def paramNames : List [ParamName ]
210212 def paramInfos : List [ParamInfo ]
211213 def resultType : Type
212214 }
213215
214- class MethodType (val paramNames : List [Name ], paramTypesExp : MethodType => List [Type ],
216+ class MethodType (val paramNames : List [TermName ], paramTypesExp : MethodType => List [Type ],
215217 resultTypeExp : MethodType => Type , val mods : List [Modifier ]) extends LambdaType {
218+ type ParamName = TermName
216219 type ParamInfo = Type
217220 val paramTypes = paramTypesExp(this )
218221 val resultType = resultTypeExp(this )
219222 def paramInfos = paramTypes
220223 }
221224 object MethodType {
222- def apply (paramNames : List [Name ], paramTypes : List [Type ], resultType : Type , mods : List [Modifier ] = Nil ) =
225+ def apply (paramNames : List [TermName ], paramTypes : List [Type ], resultType : Type , mods : List [Modifier ] = Nil ) =
223226 new MethodType (paramNames, _ => paramTypes, _ => resultType, mods)
224227 def unapply (tp : MethodType ) = Some ((tp.paramNames, tp.paramTypes, tp.resultType, tp.mods))
225228 }
226229
227- class PolyType (val paramNames : List [Name ], paramBoundsExp : PolyType => List [TypeBounds ],
230+ class PolyType (val paramNames : List [TypeName ], paramBoundsExp : PolyType => List [TypeBounds ],
228231 resultTypeExp : PolyType => Type ) extends LambdaType {
229- type This = PolyType
232+ type ParamName = TypeName
230233 type ParamInfo = TypeBounds
231234 val paramBounds = paramBoundsExp(this )
232235 val resultType = resultTypeExp(this )
233236 def paramInfos = paramBounds
234237 }
235238 object PolyType {
236- def apply (paramNames : List [Name ], paramBounds : List [TypeBounds ], resultType : Type ) =
239+ def apply (paramNames : List [TypeName ], paramBounds : List [TypeBounds ], resultType : Type ) =
237240 new PolyType (paramNames, _ => paramBounds, _ => resultType)
238241 def unapply (tp : PolyType ) = Some ((tp.paramNames, tp.paramBounds, tp.resultType))
239242 }
240243
241- class TypeLambda (val paramNames : List [Name ], paramBoundsExp : TypeLambda => List [TypeBounds ],
244+ class TypeLambda (val paramNames : List [TypeName ], paramBoundsExp : TypeLambda => List [TypeBounds ],
242245 resultTypeExp : TypeLambda => Type ) extends LambdaType {
243- type This = TypeLambda
246+ type ParamName = TypeName
244247 type ParamInfo = TypeBounds
245248 val paramBounds = paramBoundsExp(this )
246249 val resultType = resultTypeExp(this )
247250 def paramInfos = paramBounds
248251 }
249252 object TypeLambda {
250- def apply (paramNames : List [Name ], paramBounds : List [TypeBounds ], resultType : Type ) =
253+ def apply (paramNames : List [TypeName ], paramBounds : List [TypeBounds ], resultType : Type ) =
251254 new TypeLambda (paramNames, _ => paramBounds, _ => resultType)
252255 def unapply (tp : TypeLambda ) = Some ((tp.paramNames, tp.paramBounds, tp.resultType))
253256 }
0 commit comments