@@ -19,7 +19,13 @@ object tasty {
1919
2020 case class SignedName (name : Name , resultSig : Name , paramSigs : List [Name ]) extends PossiblySignedName
2121
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
2329
2430 trait Statement extends TopLevelStatement
2531
@@ -59,7 +65,7 @@ object tasty {
5965 object DefDef {
6066 def apply (name : Name , typeParams : List [TypeDef ], paramss : List [List [ValDef ]], returnTpt : Term , rhs : Term | Empty , mods : List [Modifier ] = Nil ) =
6167 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 ))
6369 }
6470
6571 class TypeDef (
@@ -71,7 +77,7 @@ object tasty {
7177 }
7278 object TypeDef {
7379 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 ))
7581 }
7682
7783 class ClassDef (
@@ -83,7 +89,7 @@ object tasty {
8389 }
8490 object ClassDef {
8591 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 ))
8793 }
8894
8995 case class Template (
@@ -93,17 +99,17 @@ object tasty {
9399 self : ValDef | Empty ,
94100 body : List [Statement ])
95101
96- case class Import (expr : Term , selector : List [ImportSelector ])
102+ case class Import (expr : Term , selector : List [ImportSelector ]) extends Statement
97103
98104 enum ImportSelector {
99105 case Simple (id : Id )
100106 case Rename (id1 : Id , id2 : Id )
101107 case Omit (id1 : Id )
102108 }
103109
104- case class Id (name : Name ) // untyped ident
110+ case class Id (name : Name ) extends Positioned // untyped ident
105111
106- enum Term {
112+ enum Term extends Statement {
107113 def tpe : Type = ???
108114 case Ident (name : Name , override val tpe : Type )
109115 case Select (prefix : Term , name : PossiblySignedName )
@@ -128,7 +134,7 @@ object tasty {
128134 case Tpt (underlying : TypeTerm | Empty )
129135 }
130136
131- enum TypeTerm {
137+ enum TypeTerm extends Positioned {
132138 def tpe : Type = ???
133139 case Ident (name : Name , override val tpe : Type )
134140 case Select (prefix : Term , name : Name )
@@ -142,7 +148,7 @@ object tasty {
142148 case ByName (tpt : TypeTerm )
143149 }
144150
145- enum Pattern {
151+ enum Pattern extends Positioned {
146152 def tpe : Type = ???
147153 case Value (v : Term )
148154 case Bind (name : Name , pat : Pattern )
@@ -152,7 +158,7 @@ object tasty {
152158 case Wildcard ()
153159 }
154160
155- case class CaseDef (pat : Pattern , guard : Term | Empty , rhs : Term )
161+ case class CaseDef (pat : Pattern , guard : Term | Empty , rhs : Term ) extends Positioned
156162
157163 sealed trait Type
158164
@@ -230,7 +236,7 @@ object tasty {
230236 case class TypeBounds (loBound : Type , hiBound : Type )
231237 }
232238
233- enum Modifier {
239+ enum Modifier extends Positioned {
234240 case Private , Protected , Abstract , Final , Sealed , Case , Implicit , Erased , Lazy , Override , Inline ,
235241 Macro , // inline method containing toplevel splices
236242 Static , // mapped to static Java member
0 commit comments