summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonna Malayeri <lindydonna@gmail.com>2010-07-20 16:14:32 +0000
committerDonna Malayeri <lindydonna@gmail.com>2010-07-20 16:14:32 +0000
commit7634d7593409ecbc27037267805b61eba9633ff1 (patch)
treec7e90a0df406aecb77cf6551d352f8998425ab87
parent60d56501a02ba40d754f02ea78299be865c9a57e (diff)
downloadscala-7634d7593409ecbc27037267805b61eba9633ff1.tar.gz
scala-7634d7593409ecbc27037267805b61eba9633ff1.tar.bz2
scala-7634d7593409ecbc27037267805b61eba9633ff1.zip
[scaladoc] Make a DocDef node for javadoc comme...
[scaladoc] Make a DocDef node for javadoc comments in Java source files.
-rw-r--r--src/compiler/scala/tools/nsc/javac/JavaParsers.scala19
-rw-r--r--src/compiler/scala/tools/nsc/javac/JavaScanners.scala6
2 files changed, 18 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/javac/JavaParsers.scala b/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
index 0388df7005..db1448c784 100644
--- a/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
+++ b/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
@@ -518,6 +518,7 @@ trait JavaParsers extends JavaScanners {
// constructor declaration
val vparams = formalParams()
optThrows()
+ in.flushDoc
List {
atPos(pos) {
DefDef(mods, nme.CONSTRUCTOR, tparams, List(vparams), TypeTree(), methodBody())
@@ -533,7 +534,7 @@ trait JavaParsers extends JavaScanners {
val vparams = formalParams()
if (!isVoid) rtpt = optArrayBrackets(rtpt)
optThrows()
- val body =
+ lazy val body = // must be lazy so that the next comment is not consumed before joinComment is called
if (!inInterface && in.token == LBRACE) {
methodBody()
} else {
@@ -552,14 +553,14 @@ trait JavaParsers extends JavaScanners {
}
}
if (inInterface) mods1 |= Flags.DEFERRED
- List {
+ joinComment(List {
atPos(pos) {
DefDef(mods1, name, tparams, List(vparams), rtpt, body)
}
- }
+ })
} else {
if (inInterface) mods1 |= Flags.FINAL | Flags.STATIC
- val result = fieldDecls(pos, mods1, rtpt, name)
+ val result = joinComment(fieldDecls(pos, mods1, rtpt, name))
accept(SEMI)
result
}
@@ -907,5 +908,15 @@ trait JavaParsers extends JavaScanners {
makePackaging(pkg, buf.toList)
}
}
+
+ /** Combine comment associated with a definition with the definition itself
+ */
+ def joinComment(trees: => List[Tree]): List[Tree] = {
+ val doc = in.flushDoc
+
+ if ((doc ne null) && doc.raw.length > 0) {
+ trees map { t => DocDef(doc, t) }
+ } else trees
+ }
}
}
diff --git a/src/compiler/scala/tools/nsc/javac/JavaScanners.scala b/src/compiler/scala/tools/nsc/javac/JavaScanners.scala
index 6a698a0708..21394595a6 100644
--- a/src/compiler/scala/tools/nsc/javac/JavaScanners.scala
+++ b/src/compiler/scala/tools/nsc/javac/JavaScanners.scala
@@ -73,7 +73,7 @@ trait JavaScanners {
def floatVal: Double = floatVal(false)
//def token2string(token : Int) : String = configuration.token2string(token)
/** return recent scala doc, if any */
- def flushDoc: String
+ def flushDoc: DocComment
def currentPos: Position
}
@@ -282,8 +282,8 @@ trait JavaScanners {
*/
var docBuffer: StringBuilder = null
- def flushDoc = {
- val ret = if (docBuffer != null) docBuffer.toString else null
+ def flushDoc: DocComment = {
+ val ret = if (docBuffer != null) DocComment(docBuffer.toString, NoPosition) else null
docBuffer = null
ret
}