Skip to content

Commit 33d15a8

Browse files
authored
Merge pull request #12296 from lampepfl/scaladoc/implicit-param-lists
Scaladoc: Add support for implicit params list
2 parents bdca541 + 9aafbb9 commit 33d15a8

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

scaladoc-testcases/src/tests/methodsAndConstructors.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,9 @@ class Methods:
5454
def ++:(a: Int)(b: Double): Int
5555
= ???
5656

57+
def withImplicitParam(implicit a: Int): Int
58+
= ???
59+
60+
def withImplicitParam2(v: String)(implicit ab: Double, a: Int, b: String): String
61+
= ???
62+

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ trait ClassLikeSupport:
3434
.filter(s => s.exists && !s.isHiddenByVisibility)
3535
.map( _.tree.asInstanceOf[DefDef])
3636
constr.fold(Nil)(
37-
_.termParamss.map(pList => ParametersList(pList.params.map(mkParameter(_, parameterModifier)), if isUsingModifier(pList.params) then "using " else ""))
37+
_.termParamss.map(pList => ParametersList(pList.params.map(p => mkParameter(p, parameterModifier)), paramListModifier(pList.params)))
3838
)
3939

4040
if classDef.symbol.flags.is(Flags.Module) then Kind.Object
@@ -344,7 +344,7 @@ trait ClassLikeSupport:
344344
val basicKind: Kind.Def = Kind.Def(
345345
genericTypes.map(mkTypeArgument(_, memberInfo.genericTypes)),
346346
paramLists.zipWithIndex.map { (pList, index) =>
347-
ParametersList(pList.params.map(mkParameter(_, paramPrefix, memberInfo = memberInfo.paramLists(index))), if isUsingModifier(pList.params) then "using " else "")
347+
ParametersList(pList.params.map(mkParameter(_, paramPrefix, memberInfo = memberInfo.paramLists(index))), paramListModifier(pList.params))
348348
}
349349
)
350350

@@ -474,5 +474,9 @@ trait ClassLikeSupport:
474474

475475
recursivelyCalculateMemberInfo(MemberInfo(Map.empty, List.empty, baseTypeRepr))
476476

477-
private def isUsingModifier(parameters: Seq[ValDef]): Boolean =
478-
parameters.size > 0 && parameters(0).symbol.flags.is(Flags.Given)
477+
private def paramListModifier(parameters: Seq[ValDef]): String =
478+
if parameters.size > 0 then
479+
if parameters(0).symbol.flags.is(Flags.Given) then "using "
480+
else if parameters(0).symbol.flags.is(Flags.Implicit) then "implicit "
481+
else ""
482+
else ""

0 commit comments

Comments
 (0)