Skip to content

Commit d75c77f

Browse files
authored
Merge pull request #26 from pikinier20/scaladoc/new-ui-fixes3
Repair tests. Few css fixes
2 parents 13e5024 + 937f507 commit d75c77f

File tree

11 files changed

+81
-70
lines changed

11 files changed

+81
-70
lines changed

.github/workflows/scaladoc.yaml

+7-8
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,13 @@ jobs:
4242
- name: Compile and test scala3doc-js
4343
run: ./project/scripts/sbt scaladoc-js-main/test
4444

45-
# - name: Compile and test
46-
# run: |
47-
# ./project/scripts/sbt scaladoc/test
48-
# ./project/scripts/cmdScaladocTests
49-
# Temporarily turn off testing to be able to publish test documentation without tests passing
50-
51-
# - name: Locally publish self
52-
# run: ./project/scripts/sbt scaladoc/publishLocal
45+
- name: Compile and test
46+
run: |
47+
./project/scripts/sbt scaladoc/test
48+
./project/scripts/cmdScaladocTests
49+
50+
- name: Locally publish self
51+
run: ./project/scripts/sbt scaladoc/publishLocal
5352

5453
- name: Generate self documentation
5554
run: ./project/scripts/sbt scaladoc/generateSelfDocumentation

scaladoc/resources/dotty_res/styles/theme/components/api-filters.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#content .documentableFilter {
22
display: flex;
33
flex-wrap: wrap;
4-
z-index: 2;
4+
z-index: 1;
55
row-gap: calc(2 * var(--base-spacing));
66
position: relative;
77
margin-bottom: calc(6 * var(--base-spacing));

scaladoc/resources/dotty_res/styles/theme/components/subtypes.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
.subtypes > div {
1616
display: none;
17+
margin-bottom: 6px;
1718
}
1819

1920
.subtypes > div:nth-child(2),
@@ -22,7 +23,6 @@
2223
.subtypes > div:nth-child(5),
2324
.subtypes > div:nth-child(6) {
2425
display: block;
25-
margin-bottom: 6px;
2626
}
2727

2828
.subtypes.collapsed > div {

scaladoc/resources/dotty_res/styles/theme/components/supertypes.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
.supertypes > div {
1616
display: none;
17+
margin-bottom: 6px;
1718
}
1819

1920
.supertypes > div:nth-child(2),
@@ -22,7 +23,6 @@
2223
.supertypes > div:nth-child(5),
2324
.supertypes > div:nth-child(6) {
2425
display: block;
25-
margin-bottom: 6px;
2626
}
2727

2828
.supertypes.collapsed > div {

scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala

+14-2
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,13 @@ trait ClassLikeSupport:
376376
val overriddenSyms = methodSymbol.allOverriddenSymbols.map(_.owner)
377377
Origin.Overrides(overriddenSyms.map(s => Overridden(s.name, s.dri)).toSeq)
378378

379-
mkMember(methodSymbol, methodKind, method.returnTpt.tpe.asSignature)(origin = origin, deprecated = methodSymbol.isDeprecated())
379+
val modifiers = methodKind match
380+
case _: Kind.Given => methodSymbol
381+
.getExtraModifiers()
382+
.filterNot(m => m == Modifier.Lazy || m == Modifier.Final)
383+
case _ => methodSymbol.getExtraModifiers()
384+
385+
mkMember(methodSymbol, methodKind, method.returnTpt.tpe.asSignature)(modifiers = modifiers, origin = origin, deprecated = methodSymbol.isDeprecated())
380386

381387
def mkParameter(
382388
argument: ValDef,
@@ -456,7 +462,13 @@ trait ClassLikeSupport:
456462
else if valDef.symbol.flags.is(Flags.Enum) then Kind.EnumCase(Kind.Val)
457463
else defaultKind
458464

459-
mkMember(valDef.symbol, kind, memberInfo.res.asSignature)(deprecated = valDef.symbol.isDeprecated())
465+
val modifiers = kind match
466+
case _: Kind.Given => valDef.symbol
467+
.getExtraModifiers()
468+
.filterNot(m => m == Modifier.Lazy || m == Modifier.Final)
469+
case _ => valDef.symbol.getExtraModifiers()
470+
471+
mkMember(valDef.symbol, kind, memberInfo.res.asSignature)(modifiers = modifiers, deprecated = valDef.symbol.isDeprecated())
460472

461473
def mkMember(symbol: Symbol, kind: Kind, signature: DSignature)(
462474
modifiers: Seq[Modifier] = symbol.getExtraModifiers(),

scaladoc/src/dotty/tools/scaladoc/translators/ScalaSignatureProvider.scala

+24-24
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class ScalaSignatureProvider:
3737
case trt: Kind.Trait =>
3838
traitSignature(documentable, trt)
3939
case Kind.Val | Kind.Var | Kind.Implicit(Kind.Val, _) =>
40-
fieldSignature(documentable, kind.name)
40+
fieldSignature(documentable, kind)
4141
case tpe: Kind.Type =>
4242
typeSignature(tpe, documentable)
4343
case Kind.Package =>
@@ -52,10 +52,10 @@ class ScalaSignatureProvider:
5252
case Kind.Unknown =>
5353
???
5454

55-
private def classLikeSignature(member: Member, kind: Classlike): MemberSignature =
55+
private def classLikeSignature(member: Member, kind: Kind & Classlike)(showKind: Kind = kind): MemberSignature =
5656
MemberSignature(
5757
builder.modifiersAndVisibility(member),
58-
builder.kind(member),
58+
builder.kind(showKind),
5959
builder.name(member.name, member.dri),
6060
builder
6161
.generics(kind.typeParams)
@@ -65,7 +65,7 @@ class ScalaSignatureProvider:
6565

6666

6767
private def enumEntrySignature(member: Member, cls: Kind.Class): MemberSignature =
68-
classLikeSignature(member, cls)
68+
classLikeSignature(member, cls)()
6969

7070
private def enumPropertySignature(entry: Member): MemberSignature =
7171
val modifiedType = entry.signature.map {
@@ -75,35 +75,35 @@ class ScalaSignatureProvider:
7575

7676
MemberSignature(
7777
builder.modifiersAndVisibility(entry),
78-
builder.kind(entry),
78+
builder.kind(entry.kind),
7979
builder.name(entry.name, entry.dri),
8080
builder.keyword(" extends ").signature(modifiedType)
8181
)
8282

8383
private def givenClassSignature(member: Member, cls: Kind.Class): MemberSignature =
84-
val initialSignature = classLikeSignature(member, cls)
84+
val initialSignature = classLikeSignature(member, cls)(member.kind)
8585

8686
member.kind match
8787
case Kind.Given(_, Some(instance), _) => initialSignature
8888
.copy(suffix = initialSignature.suffix ++ builder.plain(": ").signature(instance))
8989
case _ => initialSignature
9090

9191
private def classSignature(clazz: Member, cls: Kind.Class): MemberSignature =
92-
classLikeSignature(clazz, cls)
92+
classLikeSignature(clazz, cls)()
9393

9494
private def objectSignature(clazz: Member): MemberSignature =
95-
classLikeSignature(clazz, Kind.Object)
95+
classLikeSignature(clazz, Kind.Object)()
9696

9797
private def traitSignature(clazz: Member, cls: Kind.Trait): MemberSignature =
98-
classLikeSignature(clazz, cls)
98+
classLikeSignature(clazz, cls)()
9999

100100
private def enumSignature(clazz: Member, cls: Kind.Enum): MemberSignature =
101-
classLikeSignature(clazz, cls)
101+
classLikeSignature(clazz, cls)()
102102

103-
private def methodLikeSignature(method: Member, kind: Kind.Def, instance: Option[Signature] = None): MemberSignature =
103+
private def methodLikeSignature(method: Member, kind: Kind.Def, instance: Option[Signature] = None)(showKind: Kind = kind): MemberSignature =
104104
MemberSignature(
105105
builder.modifiersAndVisibility(method),
106-
builder.kind(method),
106+
builder.kind(showKind),
107107
builder.name(method.name, method.dri),
108108
builder
109109
.generics(kind.typeParams)
@@ -115,41 +115,41 @@ class ScalaSignatureProvider:
115115

116116
private def methodSignature(method: Member, cls: Kind.Def): MemberSignature =
117117
method.kind match {
118-
case _: Kind.Constructor => methodLikeSignature(method, cls, None)
119-
case _ => methodLikeSignature(method, cls, Some(method.signature))
118+
case _: Kind.Constructor => methodLikeSignature(method, cls, None)()
119+
case _ => methodLikeSignature(method, cls, Some(method.signature))()
120120
}
121121

122122
private def extensionSignature(extension: Member, fun: Kind.Def): MemberSignature =
123-
methodLikeSignature(extension, fun, Some(extension.signature))
123+
methodLikeSignature(extension, fun, Some(extension.signature))()
124124

125125
private def givenMethodSignature(method: Member, body: Kind.Def): MemberSignature = method.kind match
126126
case Kind.Given(_, iOpt @ Some(instance), _) =>
127-
methodLikeSignature(method, body, iOpt)
127+
methodLikeSignature(method, body, iOpt)(method.kind)
128128
case _ =>
129-
methodLikeSignature(method, body)
129+
methodLikeSignature(method, body)(method.kind)
130130

131-
private def fieldLikeSignature(member: Member, instance: Option[Signature] = None): MemberSignature =
131+
private def fieldLikeSignature(member: Member, kind: Kind, instance: Option[Signature] = None): MemberSignature =
132132
MemberSignature(
133133
builder.modifiersAndVisibility(member),
134-
builder.kind(member),
134+
builder.kind(kind),
135135
builder.name(member.name, member.dri),
136136
instance.fold(builder)(i => builder.plain(": ").signature(i))
137137
)
138138

139139

140-
private def fieldSignature(member: Member, kind: String): MemberSignature =
141-
fieldLikeSignature(member, Some(member.signature))
140+
private def fieldSignature(member: Member, kind: Kind): MemberSignature =
141+
fieldLikeSignature(member, kind, Some(member.signature))
142142

143143
private def givenValSignature(field: Member): MemberSignature = field.kind match
144144
case Kind.Given(_, iOpt @ Some(instance), _) =>
145-
fieldLikeSignature(field, iOpt)
145+
fieldLikeSignature(field, field.kind, iOpt)
146146
case _ =>
147-
fieldLikeSignature(field, None)
147+
fieldLikeSignature(field, field.kind, None)
148148

149149
private def typeSignature(tpe: Kind.Type, typeDef: Member): MemberSignature =
150150
MemberSignature(
151151
builder.modifiersAndVisibility(typeDef),
152-
builder.kind(typeDef),
152+
builder.kind(tpe),
153153
builder.name(typeDef.name, typeDef.dri),
154154
builder.generics(tpe.typeParams).pipe { bdr =>
155155
if (!tpe.opaque) {

scaladoc/src/dotty/tools/scaladoc/translators/ScalaSignatureUtils.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ case class SignatureBuilder(content: Signature = Nil) extends ScalaSignatureUtil
7171
val filtered = all.filter(_.trim.nonEmpty)
7272
if filtered.nonEmpty then keyword(filtered.toSignatureString()) else this
7373

74-
def kind(t: Member) =
75-
keyword(t.kind.name + " ")
74+
def kind(k: Kind) =
75+
keyword(k.name + " ")
7676

7777
def generics(on: Seq[TypeParameter]) = list(on.toList, List(Plain("[")), List(Plain("]"))){ (bdr, e) =>
7878
bdr.annotationsInline(e).keyword(e.variance).tpe(e.name, Some(e.dri)).signature(e.signature)

scaladoc/test/dotty/tools/scaladoc/BaseHtmlTest.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import dotty.tools.scaladoc.test.BuildInfo
1212
import util.IO
1313

1414
class BaseHtmlTest:
15-
val unresolvedLinkSelector = ".documentableBrief span[data-unresolved-link], .cover span[data-unresolved-link]"
15+
val unresolvedLinkSelector = ".doc span[data-unresolved-link]"
1616

1717
def projectName = "Test Project Name"
1818
def projectVersion = "1.0.1-M1"

scaladoc/test/dotty/tools/scaladoc/site/NavigationTest.scala

+22-22
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,42 @@ class NavigationTest extends BaseHtmlTest:
77

88
case class NavMenuTestEntry( name: String, link: String, nested: Seq[NavMenuTestEntry])
99

10-
def testNavMenu(page: String, topLevel: NavMenuTestEntry)(using ProjectContext): Unit =
10+
def testNavMenu(page: String, topLevel: Seq[NavMenuTestEntry])(using ProjectContext): Unit =
1111
withHtmlFile(page){ content =>
1212

1313
def test(query: String, el: Seq[NavMenuTestEntry]) =
1414
content.assertTextsIn(query, el.map(_.name):_*)
1515
content.assertAttr(query,"href", el.map(_.link):_*)
1616

17-
test("#sideMenu2>div>span>a", topLevel :: Nil)
18-
test("#sideMenu2>div>div>span>a", topLevel.nested)
19-
test("#sideMenu2>div>div>div>span>a", topLevel.nested.flatMap(_.nested))
20-
test("#sideMenu2>div>div>div>div>span>a", topLevel.nested.flatMap(_.nested.flatMap(_.nested)))
17+
test(".side-menu>div>span>a", topLevel)
18+
test(".side-menu>div>div>span>a", topLevel.flatMap(_.nested))
2119
}
2220

2321

2422
@Test
2523
def testBasicNavigation() = withGeneratedSite(testDocPath.resolve("basic")) {
26-
val topLevelNav = NavMenuTestEntry(projectName, "index.html", Seq(
24+
val docsNav = Seq(
2725
NavMenuTestEntry("A directory", "dir/index.html", Seq(
2826
NavMenuTestEntry("Nested in a directory", "dir/nested.html", Nil)
2927
)),
30-
NavMenuTestEntry("Adoc", "Adoc.html", Seq()),
31-
NavMenuTestEntry("API", "../index.html", Seq(
32-
NavMenuTestEntry("tests.site", "../tests/site.html", Seq(
33-
NavMenuTestEntry("BrokenLink", "../tests/site/BrokenLink.html", Nil),
34-
NavMenuTestEntry("BrokenLinkWiki", "../tests/site/BrokenLinkWiki.html", Nil),
35-
NavMenuTestEntry("OtherPackageLink", "../tests/site/OtherPackageLink.html", Nil),
36-
NavMenuTestEntry("OtherPackageLinkWiki", "../tests/site/OtherPackageLinkWiki.html", Nil),
37-
NavMenuTestEntry("SamePackageLink", "../tests/site/SamePackageLink.html", Nil),
38-
NavMenuTestEntry("SamePackageLinkWiki", "../tests/site/SamePackageLinkWiki.html", Nil),
39-
NavMenuTestEntry("SomeClass", "../tests/site/SomeClass.html", Nil)
40-
)),
41-
NavMenuTestEntry("tests.site.some.other", "../tests/site/some/other.html", Seq(
42-
NavMenuTestEntry("SomeOtherPackage", "../tests/site/some/other/SomeOtherPackage.html", Nil),
43-
))
28+
NavMenuTestEntry("Adoc", "Adoc.html", Seq())
29+
)
30+
31+
val apiNav = Seq(
32+
NavMenuTestEntry("tests.site", "site.html", Seq(
33+
NavMenuTestEntry("BrokenLink", "site/BrokenLink.html", Nil),
34+
NavMenuTestEntry("BrokenLinkWiki", "site/BrokenLinkWiki.html", Nil),
35+
NavMenuTestEntry("OtherPackageLink", "site/OtherPackageLink.html", Nil),
36+
NavMenuTestEntry("OtherPackageLinkWiki", "site/OtherPackageLinkWiki.html", Nil),
37+
NavMenuTestEntry("SamePackageLink", "site/SamePackageLink.html", Nil),
38+
NavMenuTestEntry("SamePackageLinkWiki", "site/SamePackageLinkWiki.html", Nil),
39+
NavMenuTestEntry("SomeClass", "site/SomeClass.html", Nil)
4440
)),
45-
))
41+
NavMenuTestEntry("tests.site.some.other", "site/some/other.html", Seq(
42+
NavMenuTestEntry("SomeOtherPackage", "site/some/other/SomeOtherPackage.html", Nil),
43+
))
44+
)
4645

47-
testNavMenu("docs/Adoc.html", topLevelNav)
46+
testNavMenu("docs/Adoc.html", docsNav)
47+
testNavMenu("tests/site.html", apiNav)
4848
}

scaladoc/test/dotty/tools/scaladoc/site/SiteGeneratationTest.scala

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class SiteGeneratationTest extends BaseHtmlTest:
2323
parents: Seq[String] = Nil,
2424
checks: DocumentContext => Unit = _ => ())(using ProjectContext) =
2525
withHtmlFile(path){ content =>
26-
content.assertTextsIn(".projectName", projectName)
26+
content.assertTextsIn(".project-name", projectName)
2727
content.assertTextsIn(".projectVersion", projectVersion)
2828
content.assertTextsIn("h1", header)
2929
content.assertTextsIn("title", title)
@@ -41,8 +41,8 @@ class SiteGeneratationTest extends BaseHtmlTest:
4141
checkFile("docs/index.html")(title = projectName, header = s"$projectName in header")
4242

4343
def testApiPages(
44-
mainTitle: String = "API",
45-
parents: Seq[String] = Seq(projectName),
44+
mainTitle: String = projectName,
45+
parents: Seq[String] = Seq.empty,
4646
hasToplevelIndexIndex: Boolean = false)(using ProjectContext) =
4747
checkFile((if hasToplevelIndexIndex then "api/" else "" )+ "index.html")(
4848
title = mainTitle,
@@ -72,7 +72,7 @@ class SiteGeneratationTest extends BaseHtmlTest:
7272

7373
withHtmlFile("tests/site/SomeClass.html"){ content =>
7474
content.assertAttr(".breadcrumbs a","href",
75-
"../../docs/index.html", "../../index.html", "../site.html", "SomeClass.html"
75+
"../../index.html", "../site.html", "SomeClass.html"
7676
)
7777
}
7878
}

scaladoc/test/dotty/tools/scaladoc/site/TemplateFileTests.scala

+4-4
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,10 @@ class TemplateFileTests:
136136

137137
val expected =
138138
"""<div id="root"><section id="test-page">
139-
|<h1><a href="#test-page" class="anchor"></a>Test page</h1>
139+
|<h1 class="h500"><a href="#test-page" class="anchor"></a>Test page</h1>
140140
|<p>Hello world!!</p>
141141
|</section><section id="test-page-end">
142-
|<h2><a href="#test-page-end" class="anchor"></a>Test page end</h2>
142+
|<h2 class="h300"><a href="#test-page-end" class="anchor"></a>Test page end</h2>
143143
|</section>
144144
|</div>""".stripMargin
145145

@@ -210,7 +210,7 @@ class TemplateFileTests:
210210
) { t =>
211211
assertEquals(
212212
"""<section id="hello-there">
213-
|<h1><a href="#hello-there" class="anchor"></a>Hello there!</h1>
213+
|<h1 class="h500"><a href="#hello-there" class="anchor"></a>Hello there!</h1>
214214
|</section>""".stripMargin,
215215
t.resolveInner(RenderingContext(Map("msg" -> "there"))).code.trim())
216216
}
@@ -223,7 +223,7 @@ class TemplateFileTests:
223223
) { t =>
224224
assertEquals(
225225
"""<section id="hello-there">
226-
|<h1><a href="#hello-there" class="anchor"></a>Hello there!</h1>
226+
|<h1 class="h500"><a href="#hello-there" class="anchor"></a>Hello there!</h1>
227227
|</section>""".stripMargin,
228228
t.resolveInner(RenderingContext(Map("msg" -> "there"))).code.trim())
229229
}

0 commit comments

Comments
 (0)