Skip to content

Commit

Permalink
SI-4324 Scaladoc case class argument currying
Browse files Browse the repository at this point in the history
case class C(i: Int)(b: Boolean) would appear uncurried in scaladoc:
case class C(i: Int, b: Boolean)
  • Loading branch information
VladUreche committed Jul 16, 2012
1 parent 242c2fc commit 8779ade
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,10 @@ class ModelFactory(val global: Global, val settings: doc.Settings) {
new DocTemplateImpl(bSym, inTpl) with Class {
def valueParams =
// we don't want params on a class (non case class) signature
if (isCaseClass) List(sym.constrParamAccessors map (makeValueParam(_, this)))
if (isCaseClass) primaryConstructor match {
case Some(const) => const.sym.paramss map (_ map (makeValueParam(_, this)))
case None => List()
}
else List.empty
val constructors =
members collect { case d: Constructor => d }
Expand Down
1 change: 1 addition & 0 deletions test/scaladoc/run/SI-4324.check
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Done.
24 changes: 24 additions & 0 deletions test/scaladoc/run/SI-4324.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import scala.tools.nsc.doc.model._
import scala.tools.partest.ScaladocModelTest

object Test extends ScaladocModelTest {

override def code = """
case class Test4324(arg11: String, arg12: Int)(arg21: String, arg22: Int)(arg31: Int, arg32: String)
"""

// no need for special settings
def scaladocSettings = ""

def testModel(rootPackage: Package) = {
// get the quick access implicit defs in scope (_package(s), _class(es), _trait(s), object(s) _method(s), _value(s))
import access._

// just need to check the member exists, access methods will throw an error if there's a problem
rootPackage._class("Test4324").asInstanceOf[Class].valueParams match {
case List(List(arg11, arg12), List(arg21, arg22), List(arg31, arg32)) => //yeeey, do nothing
case other =>
assert(false, "Incorrect valueParams generated: " + other + " instead of (arg11, arg12)(arg21, arg22)(arg31, arg32)")
}
}
}

0 comments on commit 8779ade

Please sign in to comment.