File tree Expand file tree Collapse file tree 4 files changed +20
-11
lines changed
compiler/src/dotty/tools/dotc/tastyreflect Expand file tree Collapse file tree 4 files changed +20
-11
lines changed Original file line number Diff line number Diff line change @@ -207,17 +207,19 @@ object TastyImpl extends scala.tasty.Tasty {
207207
208208 type PackageDef = PackageDefinition
209209
210+ def PackageDefDeco (t : PackageDef ): AbstractPackageDef = new AbstractPackageDef {
211+ def members (implicit ctx : Context ): List [Statement ] = {
212+ if (t.symbol.is(core.Flags .JavaDefined )) Nil // FIXME should also support java packages
213+ else t.symbol.info.decls.iterator.map(FromSymbol .definition).toList
214+ }
215+ }
216+
210217 def packageDefClassTag : ClassTag [PackageDef ] = implicitly[ClassTag [PackageDef ]]
211218
212219 object PackageDef extends PackageDefExtractor {
213- def unapply (x : PackageDef )(implicit ctx : Context ): Option [(String , List [ Statement ] )] = x match {
220+ def unapply (x : PackageDef )(implicit ctx : Context ): Option [(String , PackageDef )] = x match {
214221 case x : PackageDefinition =>
215- // FIXME Do not do this eagerly as it forces everithing in the package to be loaded.
216- // An alternative would be to add it as an extension method instead.
217- val definitions =
218- if (x.symbol.is(core.Flags .JavaDefined )) Nil // FIXME should also support java packages
219- else x.symbol.info.decls.iterator.map(FromSymbol .definition).toList
220- Some (x.symbol.name.toString, definitions)
222+ Some ((x.symbol.name.toString, FromSymbol .packageDef(x.symbol.owner)))
221223 case _ => None
222224 }
223225 }
Original file line number Diff line number Diff line change @@ -165,11 +165,16 @@ abstract class Tasty { tasty =>
165165
166166 type PackageDef <: Definition
167167
168+ trait AbstractPackageDef {
169+ def members (implicit ctx : Context ): List [Statement ]
170+ }
171+ implicit def PackageDefDeco (t : PackageDef ): AbstractPackageDef
172+
168173 implicit def packageDefClassTag : ClassTag [PackageDef ]
169174
170175 val PackageDef : PackageDefExtractor
171176 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 )]
173178 }
174179
175180 // ----- 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
7575 case parent @ TypeTree () => this += parent
7676 })
7777 this += " , " += self += " , " ++= body += " )"
78- case PackageDef (name, members ) =>
79- this += " PackageDef(\" " += name += " \" , " ++= members += " )"
78+ case PackageDef (name, owner ) =>
79+ this += " PackageDef(\" " += name += " \" , " += owner += " )"
8080 case Import (expr, selectors) =>
8181 this += " Import(" += expr += " , " ++= selectors += " )"
8282 case PackageClause (pid, stats) =>
Original file line number Diff line number Diff line change @@ -43,7 +43,9 @@ object definitions {
4343 self : Option [ValDef ], body : List [Statement ]) extends Definition {
4444 def mods : List [Modifier ] = ???
4545 }
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+ }
4749
4850// ------ Terms ---------------------------------
4951
You can’t perform that action at this time.
0 commit comments