aboutsummaryrefslogtreecommitdiff
path: root/test/test
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-03-09 17:24:08 +0100
committerFelix Mulder <felix.mulder@gmail.com>2016-04-07 08:40:27 +0200
commit3aab803d513cec98dab8a58e92924d96662a7d7d (patch)
tree57d46e9349e4aa65fbecbedf8a24ce906d7e04c0 /test/test
parentee5413751183d4ab217cf63fc9c1ac7b33ff4710 (diff)
downloaddotty-3aab803d513cec98dab8a58e92924d96662a7d7d.tar.gz
dotty-3aab803d513cec98dab8a58e92924d96662a7d7d.tar.bz2
dotty-3aab803d513cec98dab8a58e92924d96662a7d7d.zip
Add package object support
Diffstat (limited to 'test/test')
-rw-r--r--test/test/DottyDocTests.scala95
1 files changed, 93 insertions, 2 deletions
diff --git a/test/test/DottyDocTests.scala b/test/test/DottyDocTests.scala
index af3336cb7..2a60e7e7d 100644
--- a/test/test/DottyDocTests.scala
+++ b/test/test/DottyDocTests.scala
@@ -4,7 +4,6 @@ import dotty.tools.dotc.Compiler
import dotty.tools.dotc.core.Phases.Phase
import dotty.tools.dotc.typer.FrontEnd
import dotty.tools.dotc.core.Contexts.Context
-import dotty.tools.dotc.ast.tpd
import dotty.tools.dotc.ast.Trees._
/** All tests need to extend this trait and define `source` and `assertion`
@@ -62,7 +61,10 @@ object DottyDocTests extends DottyTest {
MultipleTraitsWithoutPackage,
MultipleMixedEntitiesWithPackage,
NestedClass,
- NestedClassThenOuter
+ NestedClassThenOuter,
+ Objects,
+ ObjectsNestedClass,
+ PackageObject
)
def main(args: Array[String]): Unit = {
@@ -231,3 +233,92 @@ case object NestedClassThenOuter extends DottyDocTest {
}
}
}
+
+case object Objects extends DottyDocTest {
+ override val source =
+ """
+ |package p
+ |
+ |/** Object1 docstring */
+ |object Object1
+ |
+ |/** Object2 docstring */
+ |object Object2
+ """.stripMargin
+
+ override def assertion = {
+ case p @ PackageDef(_, Seq(o1: MemberDef[Untyped], o2: MemberDef[Untyped])) =>
+ assert(o1.name.toString == "Object1")
+ checkDocString(o1.rawComment, "/** Object1 docstring */")
+ assert(o2.name.toString == "Object2")
+ checkDocString(o2.rawComment, "/** Object2 docstring */")
+ }
+}
+
+case object ObjectsNestedClass extends DottyDocTest {
+ override val source =
+ """
+ |package p
+ |
+ |/** Object1 docstring */
+ |object Object1
+ |
+ |/** Object2 docstring */
+ |object Object2 {
+ | class A1
+ | /** Inner docstring */
+ | class Inner
+ |}
+ """.stripMargin
+
+ import dotty.tools.dotc.ast.untpd._
+ override def assertion = {
+ case p @ PackageDef(_, Seq(o1: ModuleDef, o2: ModuleDef)) =>
+ assert(o1.name.toString == "Object1")
+ checkDocString(o1.rawComment, "/** Object1 docstring */")
+ assert(o2.name.toString == "Object2")
+ checkDocString(o2.rawComment, "/** Object2 docstring */")
+
+ o2.impl.body match {
+ case _ :: (inner @ TypeDef(_,_)) :: _ => checkDocString(inner.rawComment, "/** Inner docstring */")
+ case _ => assert(false, "Couldn't find inner class")
+ }
+ }
+}
+
+case object PackageObject extends DottyDocTest {
+ override val source =
+ """
+ |/** Package object docstring */
+ |package object foo {
+ | /** Boo docstring */
+ | case class Boo()
+ |
+ | /** Trait docstring */
+ | trait Trait
+ |
+ | /** InnerObject docstring */
+ | object InnerObject {
+ | /** InnerClass docstring */
+ | class InnerClass
+ | }
+ |}
+ """.stripMargin
+
+ import dotty.tools.dotc.ast.untpd._
+ override def assertion = {
+ case PackageDef(_, Seq(p: ModuleDef)) => {
+ checkDocString(p.rawComment, "/** Package object docstring */")
+
+ p.impl.body match {
+ case (b: TypeDef) :: (t: TypeDef) :: (o: ModuleDef) :: Nil => {
+ checkDocString(b.rawComment, "/** Boo docstring */")
+ checkDocString(t.rawComment, "/** Trait docstring */")
+ checkDocString(o.rawComment, "/** InnerObject docstring */")
+ checkDocString(o.impl.body.head.asInstanceOf[TypeDef].rawComment, "/** InnerClass docstring */")
+ }
+ case _ => assert(false, "Incorrect structure inside package object")
+ }
+ }
+ }
+}