@@ -19,7 +19,13 @@ object tasty {
19
19
20
20
case class SignedName (name : Name , resultSig : Name , paramSigs : List [Name ]) extends PossiblySignedName
21
21
22
- trait TopLevelStatement
22
+ case class Position (firstOffset : Int , lastOffset : Int )
23
+
24
+ trait Positioned {
25
+ def pos : Position = ???
26
+ }
27
+
28
+ trait TopLevelStatement extends Positioned
23
29
24
30
trait Statement extends TopLevelStatement
25
31
@@ -59,7 +65,7 @@ object tasty {
59
65
object DefDef {
60
66
def apply (name : Name , typeParams : List [TypeDef ], paramss : List [List [ValDef ]], returnTpt : Term , rhs : Term | Empty , mods : List [Modifier ] = Nil ) =
61
67
new DefDef (name, _ => typeParams, _ => paramss, _ => returnTpt, _ => rhs, mods)
62
- def unapply (ddef : DefDef ) = Some ((ddef.name, ddef.typeParams, ddef.paramss, ddef.returnTpt, ddef.rhs))
68
+ def unapply (ddef : DefDef ) = Some ((ddef.name, ddef.typeParams, ddef.paramss, ddef.returnTpt, ddef.rhs, ddef.mods ))
63
69
}
64
70
65
71
class TypeDef (
@@ -71,7 +77,7 @@ object tasty {
71
77
}
72
78
object TypeDef {
73
79
def apply (name : Name , rhs : Term , mods : List [Modifier ] = Nil ) = new TypeDef (name, _ => rhs, mods)
74
- def unapply (tdef : TypeDef ) = Some ((tdef.name, tdef.rhs))
80
+ def unapply (tdef : TypeDef ) = Some ((tdef.name, tdef.rhs, tdef.mods ))
75
81
}
76
82
77
83
class ClassDef (
@@ -83,7 +89,7 @@ object tasty {
83
89
}
84
90
object ClassDef {
85
91
def apply (name : Name , rhs : Template , mods : List [Modifier ] = Nil ) = new ClassDef (name, _ => rhs, mods)
86
- def unapply (tdef : ClassDef ) = Some ((tdef.name, tdef.rhs))
92
+ def unapply (tdef : ClassDef ) = Some ((tdef.name, tdef.rhs, tdef.mods ))
87
93
}
88
94
89
95
case class Template (
@@ -93,17 +99,17 @@ object tasty {
93
99
self : ValDef | Empty ,
94
100
body : List [Statement ])
95
101
96
- case class Import (expr : Term , selector : List [ImportSelector ])
102
+ case class Import (expr : Term , selector : List [ImportSelector ]) extends Statement
97
103
98
104
enum ImportSelector {
99
105
case Simple (id : Id )
100
106
case Rename (id1 : Id , id2 : Id )
101
107
case Omit (id1 : Id )
102
108
}
103
109
104
- case class Id (name : Name ) // untyped ident
110
+ case class Id (name : Name ) extends Positioned // untyped ident
105
111
106
- enum Term {
112
+ enum Term extends Statement {
107
113
def tpe : Type = ???
108
114
case Ident (name : Name , override val tpe : Type )
109
115
case Select (prefix : Term , name : PossiblySignedName )
@@ -128,7 +134,7 @@ object tasty {
128
134
case Tpt (underlying : TypeTerm | Empty )
129
135
}
130
136
131
- enum TypeTerm {
137
+ enum TypeTerm extends Positioned {
132
138
def tpe : Type = ???
133
139
case Ident (name : Name , override val tpe : Type )
134
140
case Select (prefix : Term , name : Name )
@@ -142,7 +148,7 @@ object tasty {
142
148
case ByName (tpt : TypeTerm )
143
149
}
144
150
145
- enum Pattern {
151
+ enum Pattern extends Positioned {
146
152
def tpe : Type = ???
147
153
case Value (v : Term )
148
154
case Bind (name : Name , pat : Pattern )
@@ -152,7 +158,7 @@ object tasty {
152
158
case Wildcard ()
153
159
}
154
160
155
- case class CaseDef (pat : Pattern , guard : Term | Empty , rhs : Term )
161
+ case class CaseDef (pat : Pattern , guard : Term | Empty , rhs : Term ) extends Positioned
156
162
157
163
sealed trait Type
158
164
@@ -230,7 +236,7 @@ object tasty {
230
236
case class TypeBounds (loBound : Type , hiBound : Type )
231
237
}
232
238
233
- enum Modifier {
239
+ enum Modifier extends Positioned {
234
240
case Private , Protected , Abstract , Final , Sealed , Case , Implicit , Erased , Lazy , Override , Inline ,
235
241
Macro , // inline method containing toplevel splices
236
242
Static , // mapped to static Java member
0 commit comments