diff --git a/plugin/src/main/scala/com/typesafe/genjavadoc/AST.scala b/plugin/src/main/scala/com/typesafe/genjavadoc/AST.scala index 6f08bcd..9df321f 100644 --- a/plugin/src/main/scala/com/typesafe/genjavadoc/AST.scala +++ b/plugin/src/main/scala/com/typesafe/genjavadoc/AST.scala @@ -90,8 +90,12 @@ trait AST { this: TransformCake ⇒ case Nil ⇒ acc } val args = rec(d.vparamss.head) mkString ("(", ", ", ")") + + val throwsAnnotations = d.symbol.throwsAnnotations.map(_.fullName) + val throws = if (throwsAnnotations.isEmpty) "" else "throws " + throwsAnnotations.mkString(", ") + val impl = if (d.mods.isDeferred || interface) ";" else "{ throw new RuntimeException(); }" - val pattern = (n: String) ⇒ s"$acc $tp $n $args $impl" + val pattern = (n: String) ⇒ s"$acc $tp $n $args $throws $impl" def hasParam(n: String) = comment.find(_.contains(s"@param $n")).isDefined val commentWithParams = if (fabricateParams && comment.size > 1 && comment.head.startsWith("/**")) { diff --git a/tests/expected_output/akka/rk/buh/is/it/A.java b/tests/expected_output/akka/rk/buh/is/it/A.java index 924acea..18657d9 100644 --- a/tests/expected_output/akka/rk/buh/is/it/A.java +++ b/tests/expected_output/akka/rk/buh/is/it/A.java @@ -196,6 +196,11 @@ public class C implements akka.rk.buh.is.it.X { * @return (undocumented) */ public int hello (scala.collection.Seq s) { throw new RuntimeException(); } + /** + * throws + * @return (undocumented) + */ + public int testthrows () throws java.lang.IllegalArgumentException, java.lang.NullPointerException { throw new RuntimeException(); } /** * Accessor for nested Scala object * @return (undocumented) diff --git a/tests/src/test/scala/scala/javadoc/test.scala b/tests/src/test/scala/scala/javadoc/test.scala index 104ad43..60f1ee7 100644 --- a/tests/src/test/scala/scala/javadoc/test.scala +++ b/tests/src/test/scala/scala/javadoc/test.scala @@ -120,6 +120,13 @@ class A { @varargs def hello(s: String*) = 0 + /** + * throws + */ + @throws[IllegalArgumentException] + @throws(classOf[NullPointerException]) + def testthrows = 0 + /** * class A.B */