summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKato Kazuyoshi <kato.kazuyoshi@gmail.com>2011-04-12 14:48:39 +0000
committerKato Kazuyoshi <kato.kazuyoshi@gmail.com>2011-04-12 14:48:39 +0000
commitca05143ea7c07e0e84e8fd66259df27392213861 (patch)
tree13b730f1c23afcf1145451ec8cec0ab6b7942a2c
parentb6ab8af4f23be72a84e5daea153b8363116408b0 (diff)
downloadscala-ca05143ea7c07e0e84e8fd66259df27392213861.tar.gz
scala-ca05143ea7c07e0e84e8fd66259df27392213861.tar.bz2
scala-ca05143ea7c07e0e84e8fd66259df27392213861.zip
[scaladoc] Closes #4452 again. Review by malayeri.
-rwxr-xr-xsrc/compiler/scala/tools/nsc/ast/DocComments.scala23
-rw-r--r--test/scaladoc/resources/Trac4452.scala27
-rw-r--r--test/scaladoc/scala/html/HtmlFactoryTest.scala2
3 files changed, 36 insertions, 16 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/DocComments.scala b/src/compiler/scala/tools/nsc/ast/DocComments.scala
index 1a807cc2c3..9df0069ada 100755
--- a/src/compiler/scala/tools/nsc/ast/DocComments.scala
+++ b/src/compiler/scala/tools/nsc/ast/DocComments.scala
@@ -304,11 +304,7 @@ trait DocComments { self: SymbolTable =>
val end = startTag(raw, (defines ::: usecases).sort(_._1 < _._1))
(if (end == raw.length - 2) raw else raw.substring(0, end) + "*/",
- defines map {
- case (start, end) => raw.substring(start, end)
- } map {
- _.replaceAll("(?m)^\\s+\\*", "")
- },
+ defines map { case (start, end) => raw.substring(start, end) },
usecases map { case (start, end) => decomposeUseCase(start, end) })
}
@@ -332,13 +328,18 @@ trait DocComments { self: SymbolTable =>
pos withStart start1 withPoint start1 withEnd end1
}
- def defineVariables(sym: Symbol) {
- for (str <- defines) {
- val start = skipWhitespace(str, "@define".length)
- var idx = skipVariable(str, start)
- val vble = variableName(str.substring(start, idx))
+ def defineVariables(sym: Symbol) = {
+ val Trim = "(?s)^[\\s&&[^\n\r]]*(.*?)\\s*$".r
- defs(sym) += vble -> (str drop idx).trim.replaceAll("""\s+\*+$""", "")
+ defs(sym) ++= defines.map {
+ str => {
+ val start = skipWhitespace(str, "@define".length)
+ val (key, value) = str.splitAt(skipVariable(str, start))
+ key.drop(start) -> value
+ }
+ } map {
+ case (key, Trim(value)) =>
+ variableName(key) -> value.replaceAll("\\s+\\*+$", "")
}
}
}
diff --git a/test/scaladoc/resources/Trac4452.scala b/test/scaladoc/resources/Trac4452.scala
index b49a174517..b844437dba 100644
--- a/test/scaladoc/resources/Trac4452.scala
+++ b/test/scaladoc/resources/Trac4452.scala
@@ -1,11 +1,30 @@
/**
* @define MacroWithNewLine
- * blah blah blah
+ * This macro should not include "*".
+ *
+ * @define MacroWithoutNewLine This macro
+ * should
+ * include "*".
*/
class Test
/**
* TestA class
- *
- * $MacroWithNewLine */
-class Trac4452 extends Test
+ */
+class Trac4452 extends Test {
+ /** $MacroWithNewLine */
+ def a = 1
+
+ /** $MacroWithoutNewLine */
+ def b = 2
+
+ /**
+ * $MacroWithNewLine
+ */
+ def c = 3
+
+ /**
+ * $MacroWithoutNewLine
+ */
+ def d = 4
+}
diff --git a/test/scaladoc/scala/html/HtmlFactoryTest.scala b/test/scaladoc/scala/html/HtmlFactoryTest.scala
index 4e5c0bcdee..15f5249c90 100644
--- a/test/scaladoc/scala/html/HtmlFactoryTest.scala
+++ b/test/scaladoc/scala/html/HtmlFactoryTest.scala
@@ -270,7 +270,7 @@ object Test extends Properties("HtmlFactory") {
property("Trac #4452") = {
createTemplate("Trac4452.scala") match {
case node: scala.xml.Node =>
- ! node.toString.contains("* blah blah blah")
+ ! node.toString.contains(">*")
case _ => false
}
}