Open wookievx opened 4 years ago
Minimized to
import scala.quoted._
type Opt[A] = A | Null
object Opt {
def f[T](x: T): T = x
private def mapMacro[A: Type](v: Expr[Opt[A]])(using QuoteContext): Expr[Unit] =
'{
val result: Opt[A] = $v
if result != null then
${f('{result})}
}
}
This requires -Yexplicit-nulls
.
It looks like we are missing a hole for the result.type
((result : Opt[evidence$1$_$1])
).
**** pickling quote of
{
{
@scala.internal.quoted.CompileTime.quoteTypeTag() type evidence$1$_$2
>: [[[ 0 | Any | ]]] <: [[[ 1 | Any | ]]]
{{{ 2 | Opt[Any] | }}}.$asInstanceOf$[
(result : Opt[evidence$1$_$1]) & evidence$1$_$2
]
}
}
minimized code
Compilation output
expectation
no exception (I am not sure what the correct behavior is in this case)