programatic scaladoc access via sbt

134 views
Skip to first unread message

Joe Betz

unread,
Jan 14, 2014, 5:05:57 PM1/14/14
to scala...@googlegroups.com
I'm trying to integrate a sbt plugin that makes use of scala's programmatic scaladoc access.  I've been able to use the scaladoc programmatic access in gradle just fine, but in SBT I'm hitting a error in the nsc compiler.  I've reduced it down to a few simple steps.

How to replicate:

Take a simple play sbt project using 0.13.0

$ cd <some temp dir>
$ mkdir project
$ echo "sbt.version=0.13.0" > project/build.properties
$ sbt
$ console
import tools.nsc.doc.{DocFactory, Settings}
import tools.nsc.reporters.ConsoleReporter
val settings = new Settings(error => print(error))
settings.usejavacp.value = true
val reporter = new ConsoleReporter(settings)
val docFactory = new DocFactory(reporter, settings)
val filelist = List()
val universe = docFactory.makeUniverse(Left(filelist))

scala.reflect.internal.MissingRequirementError: object scala.annotation.Annotation in compiler mirror not found.
     at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16)
     at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:17)
     at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:48)
     at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:40)
     at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:61)
     at scala.reflect.internal.Mirrors$RootsBase.getClassByName(Mirrors.scala:99)
     at scala.reflect.internal.Mirrors$RootsBase.getRequiredClass(Mirrors.scala:102)
     at scala.reflect.internal.Mirrors$RootsBase.requiredClass(Mirrors.scala:105)
     at scala.reflect.internal.Definitions$DefinitionsClass.AnnotationClass$lzycompute(Definitions.scala:952)
     at scala.reflect.internal.Definitions$DefinitionsClass.AnnotationClass(Definitions.scala:952)
     at scala.reflect.internal.Definitions$DefinitionsClass.AnnotationDefaultAttr$lzycompute(Definitions.scala:1024)
     at scala.reflect.internal.Definitions$DefinitionsClass.AnnotationDefaultAttr(Definitions.scala:1023)
     at scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreClasses$lzycompute(Definitions.scala:1153)
     at scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreClasses(Definitions.scala:1152)
     at scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode$lzycompute(Definitions.scala:1196)
     at scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode(Definitions.scala:1196)
     at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1261)
     at scala.tools.nsc.Global$Run.<init>(Global.scala:1290)
     at scala.tools.nsc.doc.DocFactory.makeUniverse(DocFactory.scala:54)


adding dependencies does not help, e.g.: build.sbt

name := "hello"

version := "1.0"

scalaVersion := "2.10.3"

libraryDependencies += "org.scala-lang" % "scala-reflect" % "2.10.3"

libraryDependencies += "org.scala-lang" % "scala-library" % "2.10.3"

libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.10.3"

Nor does adding the scala reflect/library/compiler dependencies project/plugins.sbt.

> show all-dependencies
[info] List(org.scala-lang:scala-compiler:2.10.3:scala-tool->default,optional(default), org.scala-lang:scala-library:2.10.3:scala-tool->default,optional(default), org.scala-lang:scala-library:2.10.3, org.scala-lang:scala-reflect:2.10.3, org.scala-lang:scala-library:2.10.3, org.scala-lang:scala-compiler:2.10.3) 

Any ideas what I may have overlooked?

Thanks!
-Joe

Jason Zaugg

unread,
Jan 15, 2014, 1:54:15 AM1/15/14
to Joe Betz, scala...@googlegroups.com
Take a look at embeddedDefaults, described http://www.scala-sbt.org/release/docs/Howto/scala.html

-Jason 
--
You received this message because you are subscribed to the Google Groups "scala-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Joe Betz

unread,
Jan 15, 2014, 5:56:07 PM1/15/14
to scala...@googlegroups.com, Joe Betz
Thanks for the pointer Jason.  That helps.

-Joe
To unsubscribe from this group and stop receiving emails from it, send an email to scala-user+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages