Skip to content

Rename rootPosition to Position.ofMacroExpansion #10167

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,6 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext:

def rootContext: Context = ctx

def rootPosition: dotc.util.SourcePosition =
MacroExpansion.position.getOrElse(dotc.util.SourcePosition(rootContext.source, dotc.util.Spans.NoSpan))

type Context = dotc.core.Contexts.Context

type Tree = tpd.Tree
Expand Down Expand Up @@ -2185,7 +2182,7 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext:

object Implicits extends ImplicitsModule:
def search(tpe: TypeRepr): ImplicitSearchResult =
ctx.typer.inferImplicitArg(tpe, rootPosition.span)
ctx.typer.inferImplicitArg(tpe, Position.ofMacroExpansion.span)
end Implicits

type ImplicitSearchResult = Tree
Expand Down Expand Up @@ -2544,7 +2541,10 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext:

type Position = dotc.util.SourcePosition

object Position extends PositionModule
object Position extends PositionModule:
def ofMacroExpansion: dotc.util.SourcePosition =
MacroExpansion.position.getOrElse(dotc.util.SourcePosition(rootContext.source, dotc.util.Spans.NoSpan))
end Position

object PositionMethodsImpl extends PositionMethods:
extension (self: Position):
Expand Down Expand Up @@ -2616,7 +2616,7 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext:
if tree.isEmpty then None else Some(tree)

private def withDefaultPos[T <: Tree](fn: Context ?=> T): T =
fn(using ctx.withSource(rootPosition.source)).withSpan(rootPosition.span)
fn(using ctx.withSource(Position.ofMacroExpansion.source)).withSpan(Position.ofMacroExpansion.span)

def unpickleTerm(pickledQuote: PickledQuote): Term =
PickledQuotes.unpickleTerm(pickledQuote)
Expand Down
4 changes: 2 additions & 2 deletions library/src-bootstrapped/scala/quoted/report.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ object report:

/** Report an error at the position of the macro expansion */
def error(msg: => String)(using qctx: QuoteContext): Unit =
qctx.reflect.Reporting.error(msg, qctx.reflect.rootPosition)
qctx.reflect.Reporting.error(msg, qctx.reflect.Position.ofMacroExpansion)

/** Report an error at the on the position of `expr` */
def error(msg: => String, expr: Expr[Any])(using qctx: QuoteContext): Unit =
Expand All @@ -23,7 +23,7 @@ object report:

/** Report a warning */
def warning(msg: => String)(using qctx: QuoteContext): Unit =
qctx.reflect.Reporting.warning(msg, qctx.reflect.rootPosition)
qctx.reflect.Reporting.warning(msg, qctx.reflect.Position.ofMacroExpansion)

/** Report a warning at the on the position of `expr` */
def warning(msg: => String, expr: Expr[_])(using qctx: QuoteContext): Unit =
Expand Down
9 changes: 4 additions & 5 deletions library/src/scala/tasty/Reflection.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3165,17 +3165,16 @@ trait Reflection { reflection =>
// POSITIONS //
///////////////

// TODO: Should this be in the QuoteContext?
// TODO: rename to enclosingPosition (as in scala.reflect)
/** Root position of this tasty context. For macros it corresponds to the expansion site. */
def rootPosition: Position

/** Position in a source file */
type Position <: AnyRef

val Position: PositionModule

trait PositionModule { this: Position.type => }
trait PositionModule { this: Position.type =>
/** Position of the expansion site of the macro */
def ofMacroExpansion: Position
}

given PositionMethods as PositionMethods = PositionMethodsImpl
protected val PositionMethodsImpl: PositionMethods
Expand Down
6 changes: 3 additions & 3 deletions tests/neg-macros/delegate-match-1/Macro_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ private def fImpl(using qctx: QuoteContext): Expr[Unit] = {
case x: ImplicitSearchSuccess =>
'{}
case x: DivergingImplicit => '{}
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
Reporting.error("DivergingImplicit\n" + x.explanation, Position.ofMacroExpansion)
'{}
case x: NoMatchingImplicits =>
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
Reporting.error("NoMatchingImplicits\n" + x.explanation, Position.ofMacroExpansion)
'{}
case x: AmbiguousImplicits =>
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
Reporting.error("AmbiguousImplicits\n" + x.explanation, Position.ofMacroExpansion)
'{}
}
}
Expand Down
6 changes: 3 additions & 3 deletions tests/neg-macros/delegate-match-2/Macro_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ private def fImpl (using qctx: QuoteContext) : Expr[Unit] = {
case x: ImplicitSearchSuccess =>
'{}
case x: DivergingImplicit => '{}
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
Reporting.error("DivergingImplicit\n" + x.explanation, Position.ofMacroExpansion)
'{}
case x: NoMatchingImplicits =>
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
Reporting.error("NoMatchingImplicits\n" + x.explanation, Position.ofMacroExpansion)
'{}
case x: AmbiguousImplicits =>
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
Reporting.error("AmbiguousImplicits\n" + x.explanation, Position.ofMacroExpansion)
'{}
}
}
Expand Down
6 changes: 3 additions & 3 deletions tests/neg-macros/delegate-match-3/Macro_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ private def fImpl(using qctx: QuoteContext) : Expr[Unit] = {
case x: ImplicitSearchSuccess =>
'{}
case x: DivergingImplicit => '{}
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
Reporting.error("DivergingImplicit\n" + x.explanation, Position.ofMacroExpansion)
'{}
case x: NoMatchingImplicits =>
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
Reporting.error("NoMatchingImplicits\n" + x.explanation, Position.ofMacroExpansion)
'{}
case x: AmbiguousImplicits =>
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
Reporting.error("AmbiguousImplicits\n" + x.explanation, Position.ofMacroExpansion)
'{}
}
}
Expand Down
2 changes: 1 addition & 1 deletion tests/neg-macros/macros-in-same-project-6/Foo.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ object Foo {

def aMacroImplementation(using qctx: QuoteContext) : Expr[Unit] = {
import qctx.reflect._
Reporting.error("some error", rootPosition)
Reporting.error("some error", Position.ofMacroExpansion)
throw new NoClassDefFoundError("Bar$")
}
}
2 changes: 1 addition & 1 deletion tests/pos-macros/i6803b/Macro_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ object AsObject {
inline given x as LineNo = ${impl}
private def impl(using qctx: QuoteContext) : Expr[LineNo] = {
import qctx.reflect._
'{unsafe(${Expr(rootPosition.startLine)})}
'{unsafe(${Expr(Position.ofMacroExpansion.startLine)})}
}
}
}
2 changes: 1 addition & 1 deletion tests/pos-macros/scala2-macro-compat-1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ object LineNumberMacro3 {
import scala.quoted._
def thisLineNumberExpr(using qctx: QuoteContext): Expr[Int] = {
import qctx.reflect._
Expr(rootPosition.startLine + 1)
Expr(Position.ofMacroExpansion.startLine + 1)
}
}
2 changes: 1 addition & 1 deletion tests/run-macros/i5629/Macro_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ object Macros {

def thisLineNumberImpl(using qctx: QuoteContext) : Expr[Int] = {
import qctx.reflect._
Expr(rootPosition.startLine)
Expr(Position.ofMacroExpansion.startLine)
}
}
4 changes: 2 additions & 2 deletions tests/run-macros/i6803/Macro_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ object AsObject {
inline given LineNo = ${impl}
private def impl(using qctx: QuoteContext): Expr[LineNo] = {
import qctx.reflect._
'{unsafe(${Expr(rootPosition.startLine)})}
'{unsafe(${Expr(Position.ofMacroExpansion.startLine)})}
}
}
}
Expand All @@ -22,7 +22,7 @@ package AsPackage {
inline given LineNo = ${impl}
private def impl(using qctx: QuoteContext): Expr[LineNo] = {
import qctx.reflect._
'{unsafe(${Expr(rootPosition.startLine)})}
'{unsafe(${Expr(Position.ofMacroExpansion.startLine)})}
}
}
}
2 changes: 1 addition & 1 deletion tests/run-macros/tasty-linenumber-2/quoted_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ object LineNumber {

def lineImpl(using QuoteContext) : Expr[LineNumber] = {
import qctx.reflect._
'{new LineNumber(${Expr(rootPosition.startLine)})}
'{new LineNumber(${Expr(Position.ofMacroExpansion.startLine)})}
}

}
2 changes: 1 addition & 1 deletion tests/run-macros/tasty-linenumber/quoted_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ object LineNumber {

def lineImpl(x: Type[Unit])(using QuoteContext) : Expr[LineNumber] = {
import qctx.reflect._
'{new LineNumber(${Expr(rootPosition.startLine)})}
'{new LineNumber(${Expr(Position.ofMacroExpansion.startLine)})}
}

}
4 changes: 2 additions & 2 deletions tests/run-macros/tasty-positioned/quoted_1.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ object Positioned {
implicit inline def apply[T](x: => T): Positioned[T] = ${impl('x)}

def impl[T](x: Expr[T])(implicit ev: Type[T], qctx: QuoteContext): Expr[Positioned[T]] = {
import qctx.reflect.{Position => _, _}
val pos = rootPosition
import qctx.reflect.{Position => Pos, _}
val pos = Pos.ofMacroExpansion

val path = Expr(pos.sourceFile.jpath.toString)
val start = Expr(pos.start)
Expand Down