File tree Expand file tree Collapse file tree 4 files changed +20
-11
lines changed
compiler/src/dotty/tools/dotc/tasty Expand file tree Collapse file tree 4 files changed +20
-11
lines changed Original file line number Diff line number Diff line change @@ -205,17 +205,19 @@ object TastyImpl extends scala.tasty.Tasty {
205
205
206
206
type PackageDef = PackageDefinition
207
207
208
+ def PackageDefDeco (t : PackageDef ): AbstractPackageDef = new AbstractPackageDef {
209
+ def members (implicit ctx : Context ): List [Statement ] = {
210
+ if (t.symbol.is(core.Flags .JavaDefined )) Nil // FIXME should also support java packages
211
+ else t.symbol.info.decls.iterator.map(FromSymbol .definition).toList
212
+ }
213
+ }
214
+
208
215
def packageDefClassTag : ClassTag [PackageDef ] = implicitly[ClassTag [PackageDef ]]
209
216
210
217
object PackageDef extends PackageDefExtractor {
211
- def unapply (x : PackageDef )(implicit ctx : Context ): Option [(String , List [ Statement ] )] = x match {
218
+ def unapply (x : PackageDef )(implicit ctx : Context ): Option [(String , PackageDef )] = x match {
212
219
case x : PackageDefinition =>
213
- // FIXME Do not do this eagerly as it forces everithing in the package to be loaded.
214
- // An alternative would be to add it as an extension method instead.
215
- val definitions =
216
- if (x.symbol.is(core.Flags .JavaDefined )) Nil // FIXME should also support java packages
217
- else x.symbol.info.decls.iterator.map(FromSymbol .definition).toList
218
- Some (x.symbol.name.toString, definitions)
220
+ Some ((x.symbol.name.toString, FromSymbol .packageDef(x.symbol.owner)))
219
221
case _ => None
220
222
}
221
223
}
Original file line number Diff line number Diff line change @@ -165,11 +165,16 @@ abstract class Tasty { tasty =>
165
165
166
166
type PackageDef <: Definition
167
167
168
+ trait AbstractPackageDef {
169
+ def members (implicit ctx : Context ): List [Statement ]
170
+ }
171
+ implicit def PackageDefDeco (t : PackageDef ): AbstractPackageDef
172
+
168
173
implicit def packageDefClassTag : ClassTag [PackageDef ]
169
174
170
175
val PackageDef : PackageDefExtractor
171
176
abstract class PackageDefExtractor {
172
- def unapply (x : PackageDef )(implicit ctx : Context ): Option [(String , List [ Statement ] )]
177
+ def unapply (x : PackageDef )(implicit ctx : Context ): Option [(String , PackageDef )]
173
178
}
174
179
175
180
// ----- Parents --------------------------------------------------
Original file line number Diff line number Diff line change @@ -75,8 +75,8 @@ class ShowExtractors[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
75
75
case parent @ TypeTree () => this += parent
76
76
})
77
77
this += " , " += self += " , " ++= body += " )"
78
- case PackageDef (name, members ) =>
79
- this += " PackageDef(\" " += name += " \" , " ++= members += " )"
78
+ case PackageDef (name, owner ) =>
79
+ this += " PackageDef(\" " += name += " \" , " += owner += " )"
80
80
case Import (expr, selectors) =>
81
81
this += " Import(" += expr += " , " ++= selectors += " )"
82
82
case PackageClause (pid, stats) =>
Original file line number Diff line number Diff line change @@ -43,7 +43,9 @@ object definitions {
43
43
self : Option [ValDef ], body : List [Statement ]) extends Definition {
44
44
def mods : List [Modifier ] = ???
45
45
}
46
- case class PackageDef (name : String , members : List [Statement ]) extends Definition
46
+ case class PackageDef (name : String , override val owner : PackageDef ) extends Definition {
47
+ def members : List [Statement ] = ???
48
+ }
47
49
48
50
// ------ Terms ---------------------------------
49
51
You can’t perform that action at this time.
0 commit comments