fthomas / fthomas/refined

Scalac crashes if a Validate.Plain requires an implicit TypeTag

Open
#231 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Scala
Stars
1.7k
Forks
152
Avg merge
1h 20m
Merged PRs (30d)
6

Description

``` scala
import eu.timepit.refined.auto._
import eu.timepit.refined.api.Validate
import shapeless.tag.@@

final case class CrashOnTypeTag[A]()

object CrashOnTypeTag {
implicit def crashValidate[A: reflect.runtime.universe.TypeTag]: Validate.Plain[String, CrashOnTypeTag[A]] = {
Validate.fromPredicate({ tree =>
true
}, { tree =>
"check failed"
}, CrashOnTypeTag[A]())
}

def main(args: Array[String]): Unit = {
val crash: String @@ CrashOnTypeTag[Int => String] = "function"
}

}
```

```
CrashOnTypeTag.scala:19: exception during macro expansion:
java.lang.ClassNotFoundException: CrashOnTypeTag$
at scala.reflect.internal.util.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:62)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at __wrapper$3$b49909639286418ab9615ff443755b07.__wrapper$3$b49909639286418ab9615ff443755b07$.wrapper(:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal$$anonfun$compile$1.apply(ToolBoxFactory.scala:275)
at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl.eval(ToolBoxFactory.scala:444)
at scala.reflect.macros.contexts.Evals$class.eval(Evals.scala:20)
at scala.reflect.macros.contexts.Context.eval(Context.scala:6)
at eu.timepit.refined.macros.MacroUtils$$anonfun$eval$1.apply(MacroUtils.scala:20)
at scala.Option.getOrElse(Option.scala:121)
at eu.timepit.refined.macros.MacroUtils$class.tryN(MacroUtils.scala:24)
at eu.timepit.refined.macros.RefineMacro.tryN(RefineMacro.scala:9)
at eu.timepit.refined.macros.MacroUtils$class.eval(MacroUtils.scala:20)
at eu.timepit.refined.macros.RefineMacro.eval(RefineMacro.scala:9)
at eu.timepit.refined.macros.RefineMacro.impl(RefineMacro.scala:23)
val crash: String @@ CrashOnTypeTag[Int => String] = "function"
^

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.