From 36732d7a14ab246d9ab6b011a0eafe4115978f19 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Fri, 12 Aug 2016 12:08:11 -0700 Subject: Javadoc: make parsing of java comments optional --- src/scaladoc/scala/tools/nsc/doc/ScaladocGlobal.scala | 8 ++++++-- src/scaladoc/scala/tools/nsc/doc/Settings.scala | 7 ++++++- .../scala/tools/partest/ScaladocJavaModelTest.scala | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 src/scaladoc/scala/tools/partest/ScaladocJavaModelTest.scala (limited to 'src/scaladoc') diff --git a/src/scaladoc/scala/tools/nsc/doc/ScaladocGlobal.scala b/src/scaladoc/scala/tools/nsc/doc/ScaladocGlobal.scala index 625d074df5..10d8286528 100644 --- a/src/scaladoc/scala/tools/nsc/doc/ScaladocGlobal.scala +++ b/src/scaladoc/scala/tools/nsc/doc/ScaladocGlobal.scala @@ -13,7 +13,11 @@ trait ScaladocGlobalTrait extends Global { override val useOffsetPositions = false override def newUnitParser(unit: CompilationUnit) = new syntaxAnalyzer.ScaladocUnitParser(unit, Nil) - override def newJavaUnitParser(unit: CompilationUnit) = new syntaxAnalyzer.ScaladocJavaUnitParser(unit) + override def newJavaUnitParser(unit: CompilationUnit) = if (createJavadoc) { + new syntaxAnalyzer.ScaladocJavaUnitParser(unit) + } else { + super.newJavaUnitParser(unit) + } override lazy val syntaxAnalyzer = new ScaladocSyntaxAnalyzer[outer.type](outer) { val runsAfter = List[String]() @@ -41,7 +45,7 @@ class ScaladocGlobal(settings: doc.Settings, reporter: Reporter) extends Global( phasesSet += analyzer.typerFactory } override def forScaladoc = true - override def createJavadoc = true + override def createJavadoc = if (settings.docNoJavaComments.value) false else true override lazy val analyzer = new { val global: ScaladocGlobal.this.type = ScaladocGlobal.this diff --git a/src/scaladoc/scala/tools/nsc/doc/Settings.scala b/src/scaladoc/scala/tools/nsc/doc/Settings.scala index 59380dd782..063a949323 100644 --- a/src/scaladoc/scala/tools/nsc/doc/Settings.scala +++ b/src/scaladoc/scala/tools/nsc/doc/Settings.scala @@ -213,6 +213,11 @@ class Settings(error: String => Unit, val printMsg: String => Unit = println(_)) "Group similar functions together (based on the @group annotation)" ) + val docNoJavaComments = BooleanSetting ( + "-no-java-comments", + "Prevents parsing and inclusion of comments from java sources." + ) + // For improved help output. def scaladocSpecific = Set[Settings#Setting]( docformat, doctitle, docfooter, docversion, docUncompilable, docsourceurl, docgenerator, docRootContent, useStupidTypes, @@ -222,7 +227,7 @@ class Settings(error: String => Unit, val printMsg: String => Unit = println(_)) docImplicits, docImplicitsDebug, docImplicitsShowAll, docImplicitsHide, docImplicitsSoundShadowing, docDiagramsMaxNormalClasses, docDiagramsMaxImplicitClasses, docNoPrefixes, docNoLinkWarnings, docRawOutput, docSkipPackages, - docExpandAllTypes, docGroups + docExpandAllTypes, docGroups, docNoJavaComments ) val isScaladocSpecific: String => Boolean = scaladocSpecific map (_.name) diff --git a/src/scaladoc/scala/tools/partest/ScaladocJavaModelTest.scala b/src/scaladoc/scala/tools/partest/ScaladocJavaModelTest.scala new file mode 100644 index 0000000000..1008be5b87 --- /dev/null +++ b/src/scaladoc/scala/tools/partest/ScaladocJavaModelTest.scala @@ -0,0 +1,15 @@ +package scala.tools.partest + +import scala.tools.nsc.doc.Universe + +/** A class for testing scaladoc model generation on java sources. */ +abstract class ScaladocJavaModelTest extends ScaladocModelTest { + + // overridden to pass explicit files to newDocFactory.makeUniverse (rather than code strings) + // since the .java file extension is required + override def model: Option[Universe] = { + val path = resourcePath + "/" + resourceFile + newDocFactory.makeUniverse(Left(List(path))) + } + +} -- cgit v1.2.3