Skip to content

Commit 6f52db5

Browse files
committed
Make package definition tree to represent package symbols
1 parent c460b52 commit 6f52db5

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

compiler/src/dotty/tools/dotc/tasty/FromSymbol.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import dotty.tools.dotc.core.Contexts.Context
55
import dotty.tools.dotc.core.Symbols._
66
import dotty.tools.dotc.core.Flags._
77

8-
98
object FromSymbol {
109

1110
def definition(sym: Symbol)(implicit ctx: Context): tpd.Tree = {
@@ -18,8 +17,7 @@ object FromSymbol {
1817
else valDef(sym.asTerm)
1918
}
2019

21-
def packageDef(sym: Symbol)(implicit ctx: Context): tpd.PackageDef =
22-
tpd.PackageDef(tpd.Ident(sym.typeRef), Nil)
20+
def packageDef(sym: Symbol)(implicit ctx: Context): PackageDefinition = PackageDefinitionImpl(sym)
2321

2422
def classDef(cls: ClassSymbol)(implicit ctx: Context): tpd.Tree = {
2523
val constr = tpd.DefDef(cls.unforcedDecls.find(_.isPrimaryConstructor).asTerm)

compiler/src/dotty/tools/dotc/tasty/TastyImpl.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,13 @@ object TastyImpl extends scala.tasty.Tasty {
192192
}
193193
}
194194

195-
type PackageDef = tpd.Tree
195+
type PackageDef = PackageDefinition
196196

197197
def packageDefClassTag: ClassTag[PackageDef] = implicitly[ClassTag[PackageDef]]
198198

199199
object PackageDef extends PackageDefExtractor {
200200
def unapply(x: PackageDef)(implicit ctx: Context): Option[(String, List[Statement])] = x match {
201-
case x: tpd.PackageDef =>
201+
case x: PackageDefinition =>
202202
// FIXME Do not do this eagerly as it forces everithing in the package to be loaded.
203203
// An alternative would be to add it as an extension method instead.
204204
val definitions =
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package dotty.tools.dotc
2+
3+
import dotty.tools.dotc.ast.Trees.{Tree, Untyped}
4+
import dotty.tools.dotc.core.Symbols.Symbol
5+
import dotty.tools.dotc.core.Types.Type
6+
7+
package object tasty {
8+
9+
type PackageDefinition = PackageDefinitionImpl[Type]
10+
11+
/** Represents the symbol of a definition in tree form */
12+
case class PackageDefinitionImpl[-T >: Untyped] private[tasty] (symbol: Symbol) extends Tree[T] {
13+
type ThisTree[-T >: Untyped] = PackageDefinitionImpl[T]
14+
}
15+
16+
}

0 commit comments

Comments
 (0)