summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-11-25 23:25:41 -0800
committerPaul Phillips <paulp@improving.org>2012-11-25 23:25:41 -0800
commit5573281a24bc57dc75d3e9efa85ff720eeb39d10 (patch)
tree1790566c526d8696064b446dbf43545321750bc6
parenta854529c93b42141da07aba055d83192b99d4899 (diff)
downloadscala-5573281a24bc57dc75d3e9efa85ff720eeb39d10.tar.gz
scala-5573281a24bc57dc75d3e9efa85ff720eeb39d10.tar.bz2
scala-5573281a24bc57dc75d3e9efa85ff720eeb39d10.zip
Account for existence of scala's ClassfileAnnotation.
Apparently this thing is not real well tested, as the scaladoc code was written as if it does not exist.
-rw-r--r--src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala b/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala
index 9fb5806c3d..acdc3e6797 100644
--- a/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala
+++ b/src/compiler/scala/tools/nsc/doc/model/ModelFactory.scala
@@ -842,24 +842,28 @@ class ModelFactory(val global: Global, val settings: doc.Settings) {
lazy val annotationClass =
makeTemplate(annot.symbol)
val arguments = { // lazy
- def noParams = annot.args map { _ => None }
+ def annotArgs = annot.args match {
+ case Nil => annot.assocs collect { case (_, LiteralAnnotArg(const)) => Literal(const) }
+ case xs => xs
+ }
+ def noParams = annotArgs map (_ => None)
+
val params: List[Option[ValueParam]] = annotationClass match {
case aClass: DocTemplateEntity with Class =>
(aClass.primaryConstructor map { _.valueParams.head }) match {
case Some(vps) => vps map { Some(_) }
- case None => noParams
+ case _ => noParams
}
case _ => noParams
}
- assert(params.length == annot.args.length)
- (params zip annot.args) flatMap { case (param, arg) =>
- makeTree(arg) match {
- case Some(tree) =>
- Some(new ValueArgument {
- def parameter = param
- def value = tree
- })
- case None => None
+ assert(params.length == annotArgs.length, (params, annotArgs))
+
+ params zip annotArgs flatMap { case (param, arg) =>
+ makeTree(arg) map { tree =>
+ new ValueArgument {
+ def parameter = param
+ def value = tree
+ }
}
}
}