diff --git a/scaladoc-testcases/src/tests/package.scala b/scaladoc-testcases/src/tests/package.scala index 03800e1ba068..2860d1104d94 100644 --- a/scaladoc-testcases/src/tests/package.scala +++ b/scaladoc-testcases/src/tests/package.scala @@ -1,4 +1,3 @@ -/** This should be moved to its own project */ package object tests { - + val foo = "foo" } diff --git a/scaladoc-testcases/src/tests/tests.scala b/scaladoc-testcases/src/tests/tests.scala index 4bb4f7e54786..77f38de225d5 100644 --- a/scaladoc-testcases/src/tests/tests.scala +++ b/scaladoc-testcases/src/tests/tests.scala @@ -162,6 +162,8 @@ package inner { } } +val bar = "bar" + /** A class with a semi-non-trivial constructor. * * @param a Hello! diff --git a/scaladoc/src/dotty/tools/scaladoc/tasty/comments/MemberLookup.scala b/scaladoc/src/dotty/tools/scaladoc/tasty/comments/MemberLookup.scala index dff2d6a33589..2f338dc4a6d6 100644 --- a/scaladoc/src/dotty/tools/scaladoc/tasty/comments/MemberLookup.scala +++ b/scaladoc/src/dotty/tools/scaladoc/tasty/comments/MemberLookup.scala @@ -128,19 +128,15 @@ trait MemberLookup { // val syms0 = syms.toList // val matched0 = syms0.filter(matches) // if matched0.isEmpty then - // println(s"Failed to look up $q in $owner; all members below:") + // println(s"Failed to look up $q in $owner; all members: {{{") // syms0.foreach { s => println(s"\t$s") } + // println("}}}") // val matched = matched0.iterator - // def showMatched() = matched.foreach { s => - // println(s">>> $s") - // println(s">>> ${s.pos}") - // println(s">>> [${s.flags.show}]") - // println(s">>> {${if s.isTerm then "isterm" else ""};${if s.isType then "istype" else ""}}") - // println(s">>> moduleClass = ${if hackResolveModule(s) == s then hackResolveModule(s).show else "none"}") + // def showMatched() = matched0.foreach { s => + // println(s"\t $s") // } - // println(s"localLookup in class ${owner} for `$q`{forceTerm=$forceTerm}") - // println(s"\t${matched0.mkString(", ")}") + // println(s"localLookup in class ${owner} for `$q`{forceTerm=$forceTerm}:") // showMatched() val matched = syms.filter(matches) @@ -148,7 +144,10 @@ trait MemberLookup { } if owner.isPackageDef then - findMatch(hackMembersOf(owner)) + findMatch(hackMembersOf(owner).flatMap { + s => + (if s.name.endsWith("package$") then hackMembersOf(s) else Iterator.empty) ++ Iterator(s) + }) else owner.tree match { case tree: ClassDef => diff --git a/scaladoc/test/dotty/tools/scaladoc/tasty/comments/MemberLookupTests.scala b/scaladoc/test/dotty/tools/scaladoc/tasty/comments/MemberLookupTests.scala index afde7441f076..5a34a21d0dfe 100644 --- a/scaladoc/test/dotty/tools/scaladoc/tasty/comments/MemberLookupTests.scala +++ b/scaladoc/test/dotty/tools/scaladoc/tasty/comments/MemberLookupTests.scala @@ -26,9 +26,13 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) { "Predef.identity" -> cls("scala.Predef$").fun("identity"), "Array$.from" -> cls("scala.Array$").fun("from"), "???" -> cls("scala.Predef$").fun("???"), + "scala.List" -> cls("scala.package$").tpe("List"), + "tests.A" -> cls("tests.A"), "tests.A$" -> cls("tests.A$"), "tests.Methods.simple" -> cls("tests.Methods").fun("simple"), + "tests.foo" -> cls("tests.package$").fld("foo"), + "tests.bar" -> cls("tests.tests$package$").fld("bar"), "java.util.AbstractCollection" -> cls("java.util.AbstractCollection"), "java.lang.String" -> cls("java.lang.String"), @@ -86,6 +90,11 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) { cls("tests.A") -> "A.foo" -> cls("tests.A$").fun("foo"), cls("tests.inner.B") -> "A" -> cls("tests.inner.A$"), + + cls("tests.D") -> "foo" -> cls("tests.package$").fld("foo"), + cls("tests.D") -> "bar" -> cls("tests.tests$package$").fld("bar"), + cls("tests.inner.A$") -> "foo" -> cls("tests.package$").fld("foo"), + cls("tests.inner.A$") -> "bar" -> cls("tests.tests$package$").fld("bar"), ) cases.foreach { case ((Sym(owner), query), Sym(target)) =>