@@ -81,7 +81,7 @@ object TastyImpl extends scala.tasty.Tasty {
8181 }
8282
8383 def PackageClauseDeco (x : PackageClause ): AbstractPackageClause = new AbstractPackageClause {
84- override def definition : Definition = ???
84+ def definition ( implicit ctx : Context ) : Definition = FromSymbol .packageDef(x.symbol)
8585 }
8686
8787 // ----- Statements -----------------------------------------------
@@ -214,17 +214,19 @@ object TastyImpl extends scala.tasty.Tasty {
214214
215215 type PackageDef = PackageDefinition
216216
217+ def PackageDefDeco (t : PackageDef ): AbstractPackageDef = new AbstractPackageDef {
218+ def members (implicit ctx : Context ): List [Statement ] = {
219+ if (t.symbol.is(core.Flags .JavaDefined )) Nil // FIXME should also support java packages
220+ else t.symbol.info.decls.iterator.map(FromSymbol .definition).toList
221+ }
222+ }
223+
217224 def packageDefClassTag : ClassTag [PackageDef ] = implicitly[ClassTag [PackageDef ]]
218225
219226 object PackageDef extends PackageDefExtractor {
220- def unapply (x : PackageDef )(implicit ctx : Context ): Option [(String , List [ Statement ] )] = x match {
227+ def unapply (x : PackageDef )(implicit ctx : Context ): Option [(String , PackageDef )] = x match {
221228 case x : PackageDefinition =>
222- // FIXME Do not do this eagerly as it forces everithing in the package to be loaded.
223- // An alternative would be to add it as an extension method instead.
224- val definitions =
225- if (x.symbol.is(core.Flags .JavaDefined )) Nil // FIXME should also support java packages
226- else x.symbol.info.decls.iterator.map(FromSymbol .definition).toList
227- Some (x.symbol.name.toString, definitions)
229+ Some ((x.symbol.name.toString, FromSymbol .packageDef(x.symbol.owner)))
228230 case _ => None
229231 }
230232 }
@@ -596,7 +598,9 @@ object TastyImpl extends scala.tasty.Tasty {
596598
597599 type TypeBoundsTree = tpd.TypeBoundsTree
598600
599- def TypeBoundsTreeDeco (x : TypeBoundsTree ): AbstractTypeBoundsTree = ???
601+ def TypeBoundsTreeDeco (x : TypeBoundsTree ): AbstractTypeBoundsTree = new AbstractTypeBoundsTree {
602+ def tpe (implicit ctx : Context ): TypeBounds = x.tpe.bounds
603+ }
600604
601605 def typeBoundsTreeClassTag : ClassTag [TypeBoundsTree ] = implicitly[ClassTag [TypeBoundsTree ]]
602606
0 commit comments