All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.meta.quasiquotes.Api.scala Maven / Gradle / Ivy

There is a newer version: 4.1.6
Show newest version
package scala.meta
package quasiquotes

import scala.meta.internal.ast.quasiquote

private[meta] trait Api {
  // TODO: it would be ideal to have these as annotations on corresponding AST nodes
  // e.g. instead of `@branch trait Stat extends Tree`
  // we will have `@quasiquote('q) @branch trait Stat extends Tree`
  // that would probably allow us for every AST node to have an associated quasiquote interpolator in the doc
  // upd. this might also require non-local macro expansion because of hierarchical structure of the `scala.meta` package
  // (if we annotate scala.meta.package.Type.Arg, we need to somehow put the TypeQuote implicit class into scala.meta.package)
  // TODO: overloading Case and Pat.Arg within p"..." is probably not the best idea
  // however, cas"..." is so ugly that I'm willing to be conceptually impure here
  @quasiquote[Ctor, Stat]('q)          implicit class XtensionQuasiquoteTerm(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Term.Arg]('arg)          implicit class XtensionQuasiquoteTermArg(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Term.Param]('param)      implicit class XtensionQuasiquoteTermParam(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Type]('t)                implicit class XtensionQuasiquoteType(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Type.Arg]('targ)         implicit class XtensionQuasiquoteTypeArg(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Type.Param]('tparam)     implicit class XtensionQuasiquoteTypeParam(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Case, Pat]('p)           implicit class XtensionQuasiquoteCaseOrPattern(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Pat.Arg]('parg)          implicit class XtensionQuasiquotePatternArg(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Pat.Type]('pt)           implicit class XtensionQuasiquotePatternType(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Ctor.Call]('ctor)        implicit class XtensionQuasiquoteCtor(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Template]('template)     implicit class XtensionQuasiquoteTemplate(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Mod]('mod)               implicit class XtensionQuasiquoteMod(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Enumerator]('enumerator) implicit class XtensionQuasiquoteEnumerator(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Importer]('importer)     implicit class XtensionQuasiquoteImporter(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Importee]('importee)     implicit class XtensionQuasiquoteImportee(ctx: StringContext) extends QuasiquoteParsers
  @quasiquote[Source]('source)         implicit class XtensionQuasiquoteSource(ctx: StringContext) extends QuasiquoteParsers
}

private[meta] trait Aliases {
  type Lift[O, I] = scala.meta.quasiquotes.Lift[O, I]
  lazy val Lift = scala.meta.quasiquotes.Lift

  type Unlift[I, O] = scala.meta.quasiquotes.Unlift[I, O]
  lazy val Unlift = scala.meta.quasiquotes.Unlift
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy