aboutsummaryrefslogtreecommitdiff
path: root/doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala
diff options
context:
space:
mode:
Diffstat (limited to 'doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala')
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala35
1 files changed, 35 insertions, 0 deletions
diff --git a/doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala b/doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala
new file mode 100644
index 000000000..adcadb0ba
--- /dev/null
+++ b/doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala
@@ -0,0 +1,35 @@
+package dotty.tools
+package dottydoc
+package core
+
+import dotty.tools.dotc.core.Symbols.Symbol
+import dotc.core.Contexts.Context
+import dotc.ast.tpd
+
+import model._
+import model.internal._
+import util.syntax._
+import transform.DocMiniPhase
+
+class PackageObjectsPhase extends DocMiniPhase {
+
+ override def transformPackage(implicit ctx: Context) = { case pkg: PackageImpl =>
+ pkg
+ .members
+ .collect { case o: Object if o.symbol.isPackageObject => o }
+ .headOption
+ .map { obj =>
+ pkg.copy(
+ members = obj.members ++ pkg.members,
+ superTypes = obj.superTypes,
+ comment = obj.comment
+ )
+ }
+ .getOrElse(pkg)
+ }
+
+ override def transformObject(implicit ctx: Context) = { case obj: Object =>
+ if (obj.symbol.isPackageObject) NonEntity
+ else obj
+ }
+}