lightbend / genjavadoc

A compiler plugin for generating doc’able Java source from Scala source

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

java.util.NoSuchElementException: None.get in BasicTransform.deprecationInfo

jrudolph opened this issue · comments

This works with 2.13.5 / 0.16 but fails with the same code with 2.13.6 / 0.17.

Unfortunately, it's not reporting which source file / line might be the problem.

See https://jenkins.akka.io:8498/job/pr-validator-akka-http/5768/console
akka/akka-http#3870

[error] ## Exception when compiling 379 sources to /home/jenkins/workspace/workspace/pr-validator-akka-http/akka-http-core/target/scala-2.13/classes
[error] java.util.NoSuchElementException: None.get
[error] scala.None$.get(Option.scala:627)
[error] scala.None$.get(Option.scala:626)
[error] com.typesafe.genjavadoc.BasicTransform.deprecationInfo(BasicTransform.scala:163)
[error] com.typesafe.genjavadoc.BasicTransform.deprecationInfo(BasicTransform.scala:160)
[error] com.typesafe.genjavadoc.BasicTransform.withClass(BasicTransform.scala:129)
[error] com.typesafe.genjavadoc.BasicTransform.newTransform(BasicTransform.scala:91)
[error] com.typesafe.genjavadoc.BasicTransform.newTransform$(BasicTransform.scala:49)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.newTransform(Plugin.scala:93)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.transform(Plugin.scala:103)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.transform(Plugin.scala:93)
[error] scala.reflect.api.Trees$Transformer.$anonfun$transformStats$1(Trees.scala:2622)
[error] scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2620)
[error] scala.reflect.internal.Trees$PackageDef.$anonfun$transform$1(Trees.scala:342)
[error] scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2633)
[error] scala.reflect.internal.Trees$PackageDef.transform(Trees.scala:342)
[error] scala.reflect.internal.Trees$InternalTransformer.transform(Trees.scala:1489)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.superTransform(Plugin.scala:102)
[error] com.typesafe.genjavadoc.BasicTransform.newTransform(BasicTransform.scala:115)
[error] com.typesafe.genjavadoc.BasicTransform.newTransform$(BasicTransform.scala:49)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.newTransform(Plugin.scala:93)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.transform(Plugin.scala:103)
[error] scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:183)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.superTransformUnit(Plugin.scala:101)
[error] com.typesafe.genjavadoc.BasicTransform.newTransformUnit(BasicTransform.scala:20)
[error] com.typesafe.genjavadoc.BasicTransform.newTransformUnit$(BasicTransform.scala:19)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.newTransformUnit(Plugin.scala:93)
[error] com.typesafe.genjavadoc.GenJavadocPlugin$MyComponent$GenJavadocTransformer.transformUnit(Plugin.scala:104)
[error] scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:32)
[error] scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:454)
[error] scala.tools.nsc.Global$GlobalPhase.run(Global.scala:401)
[error] scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1519)
[error] scala.tools.nsc.Global$Run.compileUnits(Global.scala:1503)
[error] scala.tools.nsc.Global$Run.compileSources(Global.scala:1495)
[error] scala.tools.nsc.Global$Run.compileFiles(Global.scala:1609)
[...]

Works for 2.13.5 with 0.17, so it's probably a behavior change in 2.13.6.

Here's the failing method:

private def deprecationInfo(symbol: Symbol): Option[DeprecationInfo] =
if (symbol.isDeprecated) {
val deprec = symbol.annotations.find(_.toString contains "deprecated(").get
Some(DeprecationInfo(deprec.stringArg(0).getOrElse(""), deprec.stringArg(1).getOrElse("")))
} else None