summaryrefslogtreecommitdiff
path: root/src/scaladoc
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2016-10-19 17:18:45 -0700
committerAdriaan Moors <adriaan@lightbend.com>2016-10-19 17:18:45 -0700
commit4239a63bded371b7f0e60d8bb19cbc5cced06244 (patch)
tree9e9d774a62ccf2748d0dc024667381fc2492b681 /src/scaladoc
parentfe2d7ff6821bcd0bf413b03c1c211b488a230fbe (diff)
downloadscala-4239a63bded371b7f0e60d8bb19cbc5cced06244.tar.gz
scala-4239a63bded371b7f0e60d8bb19cbc5cced06244.tar.bz2
scala-4239a63bded371b7f0e60d8bb19cbc5cced06244.zip
Factor out some more into ScaladocScanner
Diffstat (limited to 'src/scaladoc')
-rw-r--r--src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala54
1 files changed, 25 insertions, 29 deletions
diff --git a/src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala b/src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala
index 1de1823b69..4e99434051 100644
--- a/src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala
+++ b/src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala
@@ -101,10 +101,26 @@ trait ScaladocAnalyzer extends Analyzer {
abstract class ScaladocSyntaxAnalyzer[G <: Global](val global: G) extends SyntaxAnalyzer {
import global._
- class ScaladocUnitScanner(unit0: CompilationUnit, patches0: List[BracePatch]) extends UnitScanner(unit0, patches0) {
+ trait ScaladocScanner extends DocScanner {
// When `docBuffer == null`, we're not in a doc comment.
private var docBuffer: StringBuilder = null
+ override protected def beginDocComment(prefix: String): Unit =
+ if (docBuffer == null) docBuffer = new StringBuilder(prefix)
+
+ protected def ch: Char
+ override protected def processCommentChar(): Unit =
+ if (docBuffer != null) docBuffer append ch
+
+ protected def docPosition: Position
+ override protected def finishDocComment(): Unit =
+ if (docBuffer != null) {
+ registerDocComment(docBuffer.toString, docPosition)
+ docBuffer = null
+ }
+ }
+
+ class ScaladocUnitScanner(unit0: CompilationUnit, patches0: List[BracePatch]) extends UnitScanner(unit0, patches0) with ScaladocScanner {
private object unmooredParser extends { // minimalist comment parser
val global: Global = ScaladocSyntaxAnalyzer.this.global
}
@@ -146,18 +162,7 @@ abstract class ScaladocSyntaxAnalyzer[G <: Global](val global: G) extends Syntax
reporter.warning(doc.pos, "discarding unmoored doc comment")
}
- override protected def beginDocComment(prefix: String): Unit =
- if (docBuffer == null) docBuffer = new StringBuilder(prefix)
-
- override protected def processCommentChar(): Unit =
- if (docBuffer != null) docBuffer append ch
-
- override protected def finishDocComment(): Unit =
- if (docBuffer != null) {
- registerDocComment(docBuffer.toString, Position.range(unit.source, offset, offset, charOffset - 2))
- docBuffer = null
- }
-
+ protected def docPosition: Position = Position.range(unit.source, offset, offset, charOffset - 2)
}
class ScaladocUnitParser(unit: CompilationUnit, patches: List[BracePatch]) extends UnitParser(unit, patches) {
override def newScanner() = new ScaladocUnitScanner(unit, patches)
@@ -190,26 +195,17 @@ abstract class ScaladocSyntaxAnalyzer[G <: Global](val global: G) extends Syntax
}
}
- class ScaladocJavaUnitScanner(unit: CompilationUnit) extends JavaUnitScanner(unit) {
- // When `docBuffer == null`, we're not in a doc comment.
- private var docBuffer: StringBuilder = null
+ class ScaladocJavaUnitScanner(unit: CompilationUnit) extends JavaUnitScanner(unit) with ScaladocScanner {
private var docStart: Int = 0
- override protected def beginDocComment(prefix: String): Unit =
- if (docBuffer == null) {
- // Comment is entered the first time, i.e. immediately after "/*" and when current character is "*"
- docBuffer = new StringBuilder(prefix)
- docStart = currentPos.start
- }
+ override protected def beginDocComment(prefix: String): Unit = {
+ super.beginDocComment(prefix)
+ docStart = currentPos.start
+ }
- override protected def processCommentChar(): Unit =
- if (docBuffer != null) docBuffer append in.ch
+ protected def ch = in.ch
- override protected def finishDocComment(): Unit =
- if (docBuffer != null) {
- registerDocComment(docBuffer.toString, Position.range(unit.source, docStart, docStart, in.cpos))
- docBuffer = null
- }
+ override protected def docPosition = Position.range(unit.source, docStart, docStart, in.cpos)
}
class ScaladocJavaUnitParser(unit: CompilationUnit) extends {