sirthias / parboiled2

A macro-based PEG parser generator for Scala 2.10+
Other
717 stars 86 forks source link

Calculator DSL Fails to Compile #80

Closed kevinmeredith closed 10 years ago

kevinmeredith commented 10 years ago

I get the following error after copy/paste-ing the Calculator example on the docs home-page.

Here's my build.sbt:

name := "parboiled2_example"

version := "1.0"

scalaVersion := "2.11.1"

libraryDependencies += "org.parboiled" %% "parboiled" % "2.0.0"

libraryDependencies += "org.scalatest" % "scalatest_2.10" % "2.0" % "test"

And then the compile result:

> compile
[info] Updating {file:/C:/Users/Kevin/Workspace/sandbox/team/scala/parboil
ed2_example/}parboiled2_example...
[info] Resolving org.scala-lang#scala-library;2.11.1 ...
  [info] Resolving org.parboiled#parboiled_2.11;2.0.0 ...
  [info] Resolving com.chuusai#shapeless_2.11;2.0.0 ...
  [info] Resolving org.scalatest#scalatest_2.10;2.0 ...
  [info] Resolving org.scala-lang#scala-reflect;2.10.0 ...
  [info] Resolving org.scala-lang#scala-compiler;2.11.1 ...
  [info] Resolving org.scala-lang#scala-reflect;2.11.1 ...
  [info] Resolving org.scala-lang.modules#scala-xml_2.11;1.0.2 ...
  [info] Resolving org.scala-lang.modules#scala-parser-combinators_2.11;1.0.1 ..
.
  [info] Resolving jline#jline;2.11 ...
[info] Done updating.
[info] Compiling 1 Scala source to C:\Users\Kevin\Workspace\sandbox\team\s
cala\parboiled2_example\target\scala-2.11\classes...
[error] C:\Users\Kevin\Workspace\sandbox\team\scala\parboiled2_example\src
\main\scala\dsl\Calculator.scala:24: exception during macro expansion:
[error] scala.ScalaReflectionException: object scala.reflect.macros.blackbox.Con
text in compiler mirror not found.
[error]         at scala.reflect.internal.Mirrors$RootsBase.staticClass(Mirrors.
scala:123)
[error]         at scala.reflect.internal.Mirrors$RootsBase.staticClass(Mirrors.
scala:22)
[error]         at org.parboiled2.support.OpTreeContext$Action$$typecreator28$1.
apply(OpTreeContext.scala:560)
[error]         at scala.reflect.api.TypeTags$WeakTypeTagImpl.tpe$lzycompute(Typ
eTags.scala:231)
[error]         at scala.reflect.api.TypeTags$WeakTypeTagImpl.tpe(TypeTags.scala
:231)
[error]         at scala.reflect.api.TypeTags$class.typeOf(TypeTags.scala:335)
[error]         at scala.reflect.api.Universe.typeOf(Universe.scala:61)
[error]         at org.parboiled2.support.OpTreeContext$Action.rewrite$2(OpTreeC
ontext.scala:560)
[error]         at org.parboiled2.support.OpTreeContext$Action.actionBody$2(OpTr
eeContext.scala:563)
[error]         at org.parboiled2.support.OpTreeContext$Action.renderInner(OpTre
eContext.scala:566)
[error]         at org.parboiled2.support.OpTreeContext$OpTree.render(OpTreeCont
ext.scala:42)
[error]         at org.parboiled2.support.OpTreeContext$Sequence$$anonfun$render
Inner$1.apply(OpTreeContext.scala:117)
[error]         at org.parboiled2.support.OpTreeContext$Sequence$$anonfun$render
Inner$1.apply(OpTreeContext.scala:117)
[error]         at scala.collection.TraversableLike$$anonfun$map$1.apply(Travers
ableLike.scala:245)
[error]         at scala.collection.TraversableLike$$anonfun$map$1.apply(Travers
ableLike.scala:245)
[error]         at scala.collection.immutable.List.foreach(List.scala:383)
[error]         at scala.collection.TraversableLike$class.map(TraversableLike.sc
ala:245)
[error]         at scala.collection.immutable.List.map(List.scala:286)
[error]         at org.parboiled2.support.OpTreeContext$Sequence.renderInner(OpT
reeContext.scala:117)
[error]         at org.parboiled2.support.OpTreeContext$OpTree.render(OpTreeCont
ext.scala:42)
[error]         at org.parboiled2.support.OpTreeContext$OpTree.renderRule(OpTree
Context.scala:33)
[error]         at org.parboiled2.ParserMacros$$treecreator1$1.apply(Parser.scal
a:482)
[error]         at scala.reflect.api.Exprs$ExprImpl.tree$lzycompute(Exprs.scala:
145)
[error]         at scala.reflect.api.Exprs$ExprImpl.tree(Exprs.scala:145)
[error]         at scala.tools.nsc.typechecker.Macros$class.macroExpandWithRunti
me(Macros.scala:779)
[error]   def Number = rule { capture(Digits) ~> (_.toInt) }
[error]                     ^
[error] one error found
[error] (compile:compile) Compilation failed
[error] Total time: 5 s, completed Jun 17, 2014 11:23:39 AM
kevinmeredith commented 10 years ago

Once I switched to scala version 2.10.4, it now works.

build.sbt

name := "parboiled2_example"

version := "1.0"

scalaVersion := "2.10.4"

libraryDependencies += "org.parboiled" %% "parboiled" % "2.0.0"

libraryDependencies += "org.scalatest" % "scalatest_2.10" % "2.0" % "test"
alexander-myltsev commented 10 years ago

I think the issue is not connected to parboiled2. It is weird you are using scala-version 2.11 and scalatest of 2.10 together

scalaVersion := "2.11.0"

libraryDependencies += "org.scalatest" % "scalatest_2.10" % "2.0.0"

Consider using %% operator in dependency resolving "org.scalatest" %% "scalatest" % "2.0.0".

Also, you can merge library dependencies to Seq:

libraryDependencies ++= Seq(
  "org.parboiled" %% "parboiled" % "2.0.0"
  "org.scalatest" %% "scalatest" % "2.0" % "test"
)