Skip to content

Instantly share code, notes, and snippets.

@chris-martin
Created November 16, 2016 21:02
Show Gist options
  • Save chris-martin/35b06c826a874a6a42a418ee2614751a to your computer and use it in GitHub Desktop.
Save chris-martin/35b06c826a874a6a42a418ee2614751a to your computer and use it in GitHub Desktop.
> scala ~/.ivy2/cache/com.lihaoyi/scalatags_2.11/jars/scalatags_2.11-0.6.0.jar -Xprint:typer -e "scalatags.Text.all"
java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at scala.reflect.internal.util.ScalaClassLoader$$anonfun$tryClass$1.apply(ScalaClassLoader.scala:43)
at scala.reflect.internal.util.ScalaClassLoader$$anonfun$tryClass$1.apply(ScalaClassLoader.scala:43)
at scala.util.control.Exception$Catch$$anonfun$opt$1.apply(Exception.scala:119)
at scala.util.control.Exception$Catch$$anonfun$opt$1.apply(Exception.scala:119)
at scala.util.control.Exception$Catch.apply(Exception.scala:103)
at scala.util.control.Exception$Catch.opt(Exception.scala:119)
at scala.reflect.internal.util.ScalaClassLoader$class.tryClass(ScalaClassLoader.scala:42)
at scala.reflect.internal.util.ScalaClassLoader$class.tryToInitializeClass(ScalaClassLoader.scala:39)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.tryToInitializeClass(ScalaClassLoader.scala:101)
at scala.reflect.internal.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:63)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101)
at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:22)
at scala.tools.nsc.JarRunner$.run(MainGenericRunner.scala:13)
at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.JarRunner$.runJar(MainGenericRunner.scala:25)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:69)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
> scala -Xprint:typer -e "()"
Exception in thread "main" java.net.UnknownHostException: renzo: renzo: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at scala.tools.nsc.io.Socket$.localhost(Socket.scala:28)
at scala.tools.nsc.CompileSocket.getsock$1(CompileSocket.scala:175)
at scala.tools.nsc.CompileSocket.getOrCreateSocket(CompileSocket.scala:190)
at scala.tools.nsc.ScriptRunner.compileWithDaemon(ScriptRunner.scala:70)
at scala.tools.nsc.ScriptRunner.scala$tools$nsc$ScriptRunner$$compile$1(ScriptRunner.scala:113)
at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply$mcZ$sp(ScriptRunner.scala:161)
at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply(ScriptRunner.scala:129)
at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply(ScriptRunner.scala:129)
at scala.tools.nsc.util.package$.trackingThreads(package.scala:43)
at scala.tools.nsc.util.package$.waitingForThreads(package.scala:27)
at scala.tools.nsc.ScriptRunner.withCompiledScript(ScriptRunner.scala:128)
at scala.tools.nsc.ScriptRunner.runCommand(ScriptRunner.scala:222)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:85)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
Caused by: java.net.UnknownHostException: renzo: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
... 16 more
@Blaisorblade
Copy link

So what I'd recommend: take your example code using mistery implicits, pass it to -e or put it in a file or paste it at the REPL, and use -Xprint:typer to see the inserted implicits. Actually, scalac ... -Xprint:typer Foo.scala would avoid inserting the REPL junk, so you'd only have the other junk from the typechecker. But I still think that can be rather useful.

The other approach, when it works, it to use an IDE highlighting implicits and use "open implicit", but those are annoying in different ways and you have to use Eclipse/ScalaIDE over IntelliJ for reliable results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment