17 lines
464 B
Scala
17 lines
464 B
Scala
package minisql.parsing
|
|
|
|
import scala.quoted.*
|
|
import minisql.ParamEncoder
|
|
import minisql.ast
|
|
import minisql.*
|
|
import minisql.util.*
|
|
|
|
private[parsing] def liftParsing(
|
|
astParser: => Parser[ast.Ast]
|
|
)(using Quotes): Parser[ast.Lift] = {
|
|
case '{ lift[t](${ x })(using $e: ParamEncoder[t]) } =>
|
|
import quotes.reflect.*
|
|
val name = x.show
|
|
val liftId = liftIdOfExpr(x)
|
|
'{ ast.ScalarValueLift(${ Expr(name) }, ${ Expr(liftId) }, Some($x -> $e)) }
|
|
}
|