diff options
author | Jakob Odersky <jakob@odersky.com> | 2016-08-11 09:29:09 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2016-08-11 11:18:09 -0700 |
commit | 708dd680b3e28c6344c3f45c2aea09cf1d3b5908 (patch) | |
tree | f302ec1fa9bdeb254be907aae06961120c0be808 | |
parent | d59de7d571c503064d3d2ad0db3312b9e6793616 (diff) | |
download | scala-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.scala | 8 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/javac/JavaParsers.scala | 18 | ||||
-rw-r--r-- | test/scaladoc/resources/SI-4826.java | 9 |
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() {} } /** |