Skip to content

Commit

Permalink
Merge pull request scala#12296 from lampepfl/scaladoc/implicit-param-…
Browse files Browse the repository at this point in the history
…lists

Scaladoc: Add support for implicit params list
  • Loading branch information
pikinier20 authored Apr 30, 2021
2 parents bdca541 + 9aafbb9 commit 33d15a8
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
6 changes: 6 additions & 0 deletions scaladoc-testcases/src/tests/methodsAndConstructors.scala
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,9 @@ class Methods:
def ++:(a: Int)(b: Double): Int
= ???

def withImplicitParam(implicit a: Int): Int
= ???

def withImplicitParam2(v: String)(implicit ab: Double, a: Int, b: String): String
= ???

12 changes: 8 additions & 4 deletions scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ trait ClassLikeSupport:
.filter(s => s.exists && !s.isHiddenByVisibility)
.map( _.tree.asInstanceOf[DefDef])
constr.fold(Nil)(
_.termParamss.map(pList => ParametersList(pList.params.map(mkParameter(_, parameterModifier)), if isUsingModifier(pList.params) then "using " else ""))
_.termParamss.map(pList => ParametersList(pList.params.map(p => mkParameter(p, parameterModifier)), paramListModifier(pList.params)))
)

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

Expand Down Expand Up @@ -474,5 +474,9 @@ trait ClassLikeSupport:

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

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

0 comments on commit 33d15a8

Please sign in to comment.