ExprMatchModule

scala.quoted.runtime.QuoteMatching.ExprMatchModule

Attributes

Source
QuoteMatching.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
ExprMatch.type

Members list

Value members

Abstract methods

def unapply[TypeBindings, Tup <: Tuple](scrutinee: Expr[Any])(using pattern: Expr[Any]): Option[Tup]

Pattern matches an the scrutineeExpr against the patternExpr and returns a tuple with the matched holes if successful.

Pattern matches an the scrutineeExpr against the patternExpr and returns a tuple with the matched holes if successful.

Examples:

  • ExprMatch.unapply('{ f(0, myInt) })('{ f(0, myInt) }, _) will return Some(()) (where () is a tuple of arity 0)
  • ExprMatch.unapply('{ f(0, myInt) })('{ f(patternHole[Int], patternHole[Int]) }, _) will return Some(Tuple2('{0}, '{ myInt }))
  • ExprMatch.unapply('{ f(0, "abc") })('{ f(0, patternHole[Int]) }, _) will return None due to the mismatch of types in the hole

Holes:

  • scala.quoted.runtime.Patterns.patternHole[T]: hole that matches an expression x of type Expr[U] if U <:< T and returns x as part of the match.

Value parameters

pattern

Expr[Any] containing the pattern tree

scrutinee

Expr[Any] on which we are pattern matching

Attributes

Returns

None if it did not match, Some(tup) if it matched where tup contains `Expr[Ti]``

Source
QuoteMatching.scala