diff options
-rwxr-xr-x | src/compiler/scala/tools/nsc/ast/DocComments.scala | 23 | ||||
-rw-r--r-- | test/scaladoc/resources/Trac4452.scala | 27 | ||||
-rw-r--r-- | test/scaladoc/scala/html/HtmlFactoryTest.scala | 2 |
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 } } |