aboutsummaryrefslogtreecommitdiff
path: root/doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-01-18 17:45:42 +0100
committerFelix Mulder <felix.mulder@gmail.com>2017-01-31 14:32:39 +0100
commite4ecaa0d977661954a7c686e3fe8eca2d71dba82 (patch)
tree970fcd7d112b8fb21ce39656225d2c0aa8d27b7f /doc-tool/src/dotty/tools/dottydoc/core/PackageObjectsPhase.scala
parent6c07096250f18add02fbd8573211e4004872b9c9 (diff)
downloaddotty-e4ecaa0d977661954a7c686e3fe8eca2d71dba82.tar.gz
dotty-e4ecaa0d977661954a7c686e3fe8eca2d71dba82.tar.bz2
dotty-e4ecaa0d977661954a7c686e3fe8eca2d71dba82.zip
Harmonize package objects and packages in Doc AST
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
+ }
+}