scoverage / scalac-scoverage-plugin

Scoverage Scala Code Coverage Core Libs
https://github.com/scoverage
Apache License 2.0
425 stars 126 forks source link

uncaught exception during compilation: scala.tools.nsc.interactive.RangePositions$ValidateException #91

Closed fommil closed 9 years ago

fommil commented 9 years ago

https://travis-ci.org/fommil/freeslick/builds/48164343

[error]      while compiling: /home/travis/build/fommil/freeslick/src/main/scala/scala/slick/driver/SQLServerDriver.scala
[error]         during phase: typer
[error]      library version: version 2.10.4
[error]     compiler version: version 2.10.4
[error]   reconstructed args: -P:scoverage:dataDir:/home/travis/build/fommil/freeslick/target/scala-2.10/scoverage-data -deprecation -Yrangepos -feature -Xfatal-warnings -language:postfixOps -language:implicitConversions -Xplugin:/home/travis/.ivy2/cache/org.scoverage/scalac-scoverage-plugin_2.10/jars/scalac-scoverage-plugin_2.10-1.0.1.jar -bootclasspath /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/netx.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/plugin.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rhino.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/classes:/home/travis/.sbt/boot/scala-2.10.4/lib/scala-library.jar -classpath /home/travis/build/fommil/freeslick/target/scala-2.10/classes:/home/travis/.ivy2/cache/com.typesafe.slick/slick_2.10/jars/slick_2.10-2.0.3.jar:/home/travis/.ivy2/cache/org.scoverage/scalac-scoverage-runtime_2.10/jars/scalac-scoverage-runtime_2.10-1.0.1.jar:/home/travis/.ivy2/cache/org.scoverage/scalac-scoverage-plugin_2.10/jars/scalac-scoverage-plugin_2.10-1.0.1.jar:/home/travis/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.6.4.jar
[error] 
[error]   last tree to typer: Literal(Constant(()))
[error]               symbol: null
[error]    symbol definition: null
[error]                  tpe: Unit
[error]        symbol owners: 
[error]       context owners: constructor SQLServerDriver -> object SQLServerDriver -> package driver
[error] 
[error] == Enclosing template or block ==
[error] 
[error] Apply( // def <init>(): Object in class Object, tree.tpe=Object
[error]   SQLServerDriver.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object
[error]   Nil
[error] )
[error] 
[error] == Expanded type of tree ==
[error] 
[error] TypeRef(TypeSymbol(final abstract class Unit extends AnyVal))
[error] 
[error] uncaught exception during compilation: scala.tools.nsc.interactive.RangePositions$ValidateException
scala.tools.nsc.interactive.RangePositions$ValidateException: Synthetic tree [1526] contains nonsynthetic tree [1525]
    at scala.tools.nsc.interactive.RangePositions$class.positionError$1(RangePositions.scala:201)
    at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:218)
       ...
sksamuel commented 9 years ago

Scala 2.10?

On 24 January 2015 at 14:39, Sam Halliday notifications@github.com wrote:

https://travis-ci.org/fommil/freeslick/builds/48164343

[error] while compiling: /home/travis/build/fommil/freeslick/src/main/scala/scala/slick/driver/SQLServerDriver.scala [error] during phase: typer [error] library version: version 2.10.4 [error] compiler version: version 2.10.4 [error] reconstructed args: -P:scoverage:dataDir:/home/travis/build/fommil/freeslick/target/scala-2.10/scoverage-data -deprecation -Yrangepos -feature -Xfatal-warnings -language:postfixOps -language:implicitConversions -Xplugin:/home/travis/.ivy2/cache/org.scoverage/scalac-scoverage-plugin_2.10/jars/scalac-scoverage-plugin_2.10-1.0.1.jar -bootclasspath /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/netx.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/plugin.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rhino.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/classes:/home/travis/.sbt/boot/scala-2.10.4/lib/scala-library.jar -clas spath /h ome/travis/build/fommil/freeslick/target/scala-2.10/classes:/home/travis/.ivy2/cache/com.typesafe.slick/slick_2.10/jars/slick_2.10-2.0.3.jar:/home/travis/.ivy2/cache/org.scoverage/scalac-scoverage-runtime_2.10/jars/scalac-scoverage-runtime_2.10-1.0.1.jar:/home/travis/.ivy2/cache/org.scoverage/scalac-scoverage-plugin_2.10/jars/scalac-scoverage-plugin_2.10-1.0.1.jar:/home/travis/.ivy2/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.6.4.jar [error] [error] last tree to typer: Literal(Constant(())) [error] symbol: null [error] symbol definition: null [error] tpe: Unit [error] symbol owners: [error] context owners: constructor SQLServerDriver -> object SQLServerDriver -> package driver [error] [error] == Enclosing template or block == [error] [error] Apply( // def (): Object in class Object, tree.tpe=Object [error] SQLServerDriver.super."" // def (): Object in class Object, tree.tpe=()Object [error] Nil [error] ) [error] [error] == Expanded type of tree == [error] [error] TypeRef(TypeSymbol(final abstract class Unit extends AnyVal)) [error] [error] uncaught exception during compilation: scala.tools.nsc.interactive.RangePositions$ValidateException scala.tools.nsc.interactive.RangePositions$ValidateException: Synthetic tree [1526] contains nonsynthetic tree [1525] at scala.tools.nsc.interactive.RangePositions$class.positionError$1(RangePositions.scala:201) at scala.tools.nsc.interactive.RangePositions$class.validate$1(RangePositions.scala:218) ...

— Reply to this email directly or view it on GitHub https://github.com/scoverage/scalac-scoverage-plugin/issues/91.

fommil commented 9 years ago

yeah, project is https://github.com/fommil/freeslick

sksamuel commented 9 years ago

Turn off highlighting, instruments on sbt-scoverage page.

On 24 January 2015 at 15:10, Sam Halliday notifications@github.com wrote:

yeah, project is https://github.com/fommil/freeslick

— Reply to this email directly or view it on GitHub https://github.com/scoverage/scalac-scoverage-plugin/issues/91#issuecomment-71321383 .

fommil commented 9 years ago

I can't even work out which line is causing the problem

sksamuel commented 9 years ago

It's a bug in the compiler that was fixed in 2.11.2. It might make it into 2.10.5. But because rangepos was an experimental feature used only by me basically it was never a priority.

https://github.com/scoverage/sbt-scoverage#highlighting

On 24 January 2015 at 15:22, Sam Halliday notifications@github.com wrote:

I can't even work out which line is causing the problem

— Reply to this email directly or view it on GitHub https://github.com/scoverage/scalac-scoverage-plugin/issues/91#issuecomment-71321967 .

fommil commented 9 years ago

cool, thanks!

sksamuel commented 9 years ago

Let me know if it doesn't work, back to Man City game now :)

On 24 January 2015 at 15:34, Sam Halliday notifications@github.com wrote:

cool, thanks!

— Reply to this email directly or view it on GitHub https://github.com/scoverage/scalac-scoverage-plugin/issues/91#issuecomment-71322580 .

gupta-himanshu commented 8 years ago

@sksamuel Updating to Scala 2.10.5 actually solved the problem. Thanks!

nonontb commented 8 years ago

I face the same problem (i think) in my project after adding CsvParser from Parboiled2. I use scala 2.10.6

[info] ======= Position error
[info] Synthetic tree [52429] contains nonsynthetic tree [52428]
[info] == Enclosing tree [52429] of type ValDef at [1538]ModelCsv.scala
[info]
[info] [L  50        ] #52429  [1538]          ValDef     // term p
[info]
[info] == Enclosed tree [52428] of type Ident at [1523:1529]ModelCsv.scala
[info]
[info] [L  50        ] #52428  [1523:1529]     Ident      // parser.
[info]
[info]
[info] While validating #52786
[info] [L   1        ] #52786  [0:2608]        PackageDef // csv
[info]
[info] Children:
[info]   [L   1 P#52786] #7403   [8:30]          Select     // csv
[info]   [L   3 P#52786] #7410   [32:75]         Import     // net.lizeo.bi.model.csv.CSVConstant._
[info]   [L   5 P#52786] #7413   [77:118]        Import     // scala.language.implicitConversions
[info]   [L   8 P#52786] #42426  [121:217]       ClassDef   // ModelCsv {
[info]   [L  15 P#52786] #42570  [220:836]       ModuleDef  // ModelCsv {
[info]   [L  35 P#52786] #7519   [944:977]       Import     // scala.collection.immutable
[info]   [L  36 P#52786] #7522   [978:1001]      Import     // org.parboiled2._
[info]   [L  38 P#52786] #52703  [1003:1714]     ModuleDef  // CsvParser extends {
[info]   [L  62 P#52786] #52785  [1807:2608]     ClassDef   // CsvParser(val input: ParserInput, headerPresent: Boolean, fieldDelimiter: Char) extends Parser with StringBuilding {
[info] =======
[error]
[error]      while compiling: /Users/arnaudlarroque/Projects/tyrebasebi-app/libs/bijob_model/src/main/scala-2.10/net/lizeo/bi/model/csv/ModelCsv.scala
[error]         during phase: typer
[error]      library version: version 2.10.6
[error]     compiler version: version 2.10.6
[error]   reconstructed args: -classpath ... /Users/arnaudlarroque/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.10.6.jar -language:implicitConversions -Ywarn-nullary-override -Ywarn-adapted-args
[error]
[error]   last tree to typer: TypeTree(class Rule)
[error]               symbol: class Rule in package parboiled2 (flags: sealed)
[error]    symbol definition: sealed class Rule[-I <: shapeless.HList, +O <: shapeless.HList] extends RuleX
[error]                  tpe: org.parboiled2.Rule[shapeless.HNil,shapeless.HNil]
[error]        symbol owners: class Rule -> package parboiled2
[error]       context owners: method OWS -> class CsvParser -> package csv
[error]
[error] == Enclosing template or block ==
[error]
[error] DefDef( // def OWS: org.parboiled2.Rule[shapeless.HNil,shapeless.HNil] in class CsvParser
[error]   <method> <triedcooking>
[error]   "OWS"
[error]   []
[error]   Nil
[error]   <tpt> // tree.tpe=org.parboiled2.Rule[shapeless.HNil,shapeless.HNil]
[error]   Apply(
[error]     "rule"
[error]     Apply(
[error]       "zeroOrMore"
[error]       ' '
[error]     )
[error]   )
[error] )
[error]
[error] == Expanded type of tree ==
[error]
[error] TypeRef(
[error]   TypeSymbol(
[error]     sealed class Rule[-I <: shapeless.HList, +O <: shapeless.HList] extends RuleX
[error]
[error]   )
[error]   args = List(
[error]     TypeRef(TypeSymbol(sealed abstract trait HNil extends HList))
[error]     TypeRef(TypeSymbol(sealed abstract trait HNil extends HList))
[error]   )
[error] )
[error]
[error] uncaught exception during compilation: scala.tools.nsc.interactive.RangePositions$ValidateException

Disabling highlighting solved the problem

ryan-williams commented 7 years ago

I'm seeing a similar issue with Scala 2.10.6: https://travis-ci.org/hammerlab/guacamole/jobs/180971174

coverageHighlighting := false in my build.sbt also seems to fix it.

Trying to wrap the offending code in:

// $COVERAGE-OFF$
…
// $COVERAGE-ON$

did not seem to work.

ryan-williams commented 7 years ago

@gslowikowski followed up offline; one note from him:

I found the problem. It's not related to Scoverage, but to "-Yrangepos" option. Just add "-Yrangepos" to scalacOptions (scalacOptions += "-Yrangepos") and run "sbt ++2.10.6 compile" (without turning on Scoverage). You will have the same exception.

Since Scoverage is not the root of the problem, you have to turn off Scoverage highlighting option, at least for Scala 2.10.

I've filed SI-10095 about this.

I am also seeing the issue now in a different project, cf. this build. It seems related to my use of Spire in both of the issues in question.