Skip to content

Instantly share code, notes, and snippets.

@jrudolph
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jrudolph/79c67faf97069bccf4e0 to your computer and use it in GitHub Desktop.
Save jrudolph/79c67faf97069bccf4e0 to your computer and use it in GitHub Desktop.
Using typeOf in macro fails
/.idea*
target/
libraryDependencies ++= Seq(
"org.parboiled" %% "parboiled" % "2.0.0"
//,"org.scala-lang" % "scala-reflect" % "2.11.1" // fixes it
)
scalaVersion := "2.11.1"
import org.parboiled2._
sealed trait Command
case class Connect(host: String, port: Int) extends Command
case object Disconnect extends Command
class CommandParser(val input: ParserInput) extends Parser {
def CommandLine = rule { WhiteSpace ~ Command ~ WhiteSpace ~ EOI }
def Command = rule { DisconnectCommand | ConnectCommand }
def ConnectCommand = rule { "connect" ~ (HostPort | Host) ~> Connect }
def Host: Rule2[String, Int] = rule { capture(oneOrMore(CharPredicate.AlphaNum)) ~ push(9300) }
def HostPort: Rule2[String, Int] = rule {
capture(oneOrMore(CharPredicate.AlphaNum)) ~ WhiteSpace ~ capture(oneOrMore(CharPredicate.Digit)) ~> ((port: String) ⇒ port.toInt)
}
def DisconnectCommand = rule { "disconnect" ~ push(Disconnect) }
def WhiteSpace = rule { zeroOrMore(' ') }
implicit def wspStr(s: String): Rule0 = rule {
str(s) ~ WhiteSpace
}
}
scala.ScalaReflectionException: object scala.reflect.macros.blackbox.Context in compiler mirror not found.
at scala.reflect.internal.Mirrors$RootsBase.staticClass(Mirrors.scala:123)
at scala.reflect.internal.Mirrors$RootsBase.staticClass(Mirrors.scala:22)
at org.parboiled2.support.OpTreeContext$Action$$typecreator28$1.apply(OpTreeContext.scala:560)
at scala.reflect.api.TypeTags$WeakTypeTagImpl.tpe$lzycompute(TypeTags.scala:231)
at scala.reflect.api.TypeTags$WeakTypeTagImpl.tpe(TypeTags.scala:231)
at scala.reflect.api.TypeTags$class.typeOf(TypeTags.scala:335)
at scala.reflect.api.Universe.typeOf(Universe.scala:61)
at org.parboiled2.support.OpTreeContext$Action.rewrite$2(OpTreeContext.scala:560)
at org.parboiled2.support.OpTreeContext$Action.actionBody$2(OpTreeContext.scala:563)
at org.parboiled2.support.OpTreeContext$Action.renderInner(OpTreeContext.scala:566)
at org.parboiled2.support.OpTreeContext$OpTree.render(OpTreeContext.scala:42)
at org.parboiled2.support.OpTreeContext$Sequence$$anonfun$renderInner$1.apply(OpTreeContext.scala:117)
at org.parboiled2.support.OpTreeContext$Sequence$$anonfun$renderInner$1.apply(OpTreeContext.scala:117)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
at scala.collection.immutable.List.foreach(List.scala:383)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
at scala.collection.immutable.List.map(List.scala:286)
at org.parboiled2.support.OpTreeContext$Sequence.renderInner(OpTreeContext.scala:117)
at org.parboiled2.support.OpTreeContext$OpTree.render(OpTreeContext.scala:42)
at org.parboiled2.support.OpTreeContext$OpTree.renderRule(OpTreeContext.scala:33)
at org.parboiled2.ParserMacros$$treecreator1$1.apply(Parser.scala:482)
at scala.reflect.api.Exprs$ExprImpl.tree$lzycompute(Exprs.scala:145)
at scala.reflect.api.Exprs$ExprImpl.tree(Exprs.scala:145)
at scala.tools.nsc.typechecker.Macros$class.macroExpandWithRuntime(Macros.scala:779)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment