summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2016-08-11 09:29:09 -0700
committerJakob Odersky <jakob@odersky.com>2016-08-11 11:18:09 -0700
commit708dd680b3e28c6344c3f45c2aea09cf1d3b5908 (patch)
treef302ec1fa9bdeb254be907aae06961120c0be808
parentd59de7d571c503064d3d2ad0db3312b9e6793616 (diff)
downloadscala-708dd680b3e28c6344c3f45c2aea09cf1d3b5908.tar.gz
scala-708dd680b3e28c6344c3f45c2aea09cf1d3b5908.tar.bz2
scala-708dd680b3e28c6344c3f45c2aea09cf1d3b5908.zip
move DocDef unwrapping to scala.tools.nsc.ast.TreeInfo
-rw-r--r--src/compiler/scala/tools/nsc/ast/TreeInfo.scala8
-rw-r--r--src/compiler/scala/tools/nsc/javac/JavaParsers.scala18
-rw-r--r--test/scaladoc/resources/SI-4826.java9
3 files changed, 20 insertions, 15 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeInfo.scala b/src/compiler/scala/tools/nsc/ast/TreeInfo.scala
index 689e6405d0..b78c5acc4f 100644
--- a/src/compiler/scala/tools/nsc/ast/TreeInfo.scala
+++ b/src/compiler/scala/tools/nsc/ast/TreeInfo.scala
@@ -97,4 +97,12 @@ abstract class TreeInfo extends scala.reflect.internal.TreeInfo {
case DocDef(_, definition) => isPureDef(definition)
case _ => super.isPureDef(tree)
}
+
+ override def firstConstructor(stats: List[Tree]): Tree = {
+ def unwrap(stat: Tree): Tree = stat match {
+ case DocDef(_, defn) => unwrap(defn)
+ case tree => tree
+ }
+ super.firstConstructor(stats map unwrap)
+ }
}
diff --git a/src/compiler/scala/tools/nsc/javac/JavaParsers.scala b/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
index e6291934db..e4bc055da4 100644
--- a/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
+++ b/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
@@ -116,9 +116,9 @@ trait JavaParsers extends ast.parser.ParsersCommon with JavaScanners {
def makePackaging(pkg: RefTree, stats: List[Tree]): PackageDef =
atPos(pkg.pos) { PackageDef(pkg, stats) }
- def makeTemplate(parents: List[Tree], stats: List[Tree]) = {
- Template(parents, noSelfType, withConstructor(stats))
- }
+ def makeTemplate(parents: List[Tree], stats: List[Tree]) =
+ Template(parents, noSelfType, if (treeInfo.firstConstructor(stats) == EmptyTree)
+ makeConstructor(Nil) :: stats else stats)
def makeSyntheticParam(count: Int, tpt: Tree): ValDef =
makeParam(nme.syntheticParamName(count), tpt)
@@ -132,18 +132,6 @@ trait JavaParsers extends ast.parser.ParsersCommon with JavaScanners {
DefDef(Modifiers(Flags.JAVA), nme.CONSTRUCTOR, List(), List(vparams), TypeTree(), blankExpr)
}
- def withConstructor(stats: List[Tree]): List[Tree] = {
- val pureStats = stats map {
- case DocDef(_, defn) => defn
- case defn => defn
- }
- if(treeInfo.firstConstructor(pureStats) == EmptyTree) {
- makeConstructor(Nil) :: stats
- } else {
- stats
- }
- }
-
/** A hook for joining the comment associated with a definition.
* Overridden by scaladoc.
*/
diff --git a/test/scaladoc/resources/SI-4826.java b/test/scaladoc/resources/SI-4826.java
index f6ccf886b7..18a1cb86f2 100644
--- a/test/scaladoc/resources/SI-4826.java
+++ b/test/scaladoc/resources/SI-4826.java
@@ -254,6 +254,15 @@ public final class FI {
public boolean defined(Object o);
}
+ /** comment about */
+ /** a comment about */
+ /** a comment */
+ void foo() {}
+
+ /** someone forgot to uncomment */
+ //void thisMethod() {}
+ /** and also this */
+ //void otherMethod() {}
}
/**