Skip to content

Commit bf0b5b6

Browse files
Merge pull request #10167 from dotty-staging/rename-rootposition
Rename rootPosition to Position.ofMacroExpansion
2 parents 2e220d5 + 7a9175b commit bf0b5b6

File tree

19 files changed

+36
-37
lines changed

19 files changed

+36
-37
lines changed

compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala

+6-6
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext:
5454

5555
def rootContext: Context = ctx
5656

57-
def rootPosition: dotc.util.SourcePosition =
58-
MacroExpansion.position.getOrElse(dotc.util.SourcePosition(rootContext.source, dotc.util.Spans.NoSpan))
59-
6057
type Context = dotc.core.Contexts.Context
6158

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

21862183
object Implicits extends ImplicitsModule:
21872184
def search(tpe: TypeRepr): ImplicitSearchResult =
2188-
ctx.typer.inferImplicitArg(tpe, rootPosition.span)
2185+
ctx.typer.inferImplicitArg(tpe, Position.ofMacroExpansion.span)
21892186
end Implicits
21902187

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

25452542
type Position = dotc.util.SourcePosition
25462543

2547-
object Position extends PositionModule
2544+
object Position extends PositionModule:
2545+
def ofMacroExpansion: dotc.util.SourcePosition =
2546+
MacroExpansion.position.getOrElse(dotc.util.SourcePosition(rootContext.source, dotc.util.Spans.NoSpan))
2547+
end Position
25482548

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

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

26212621
def unpickleTerm(pickledQuote: PickledQuote): Term =
26222622
PickledQuotes.unpickleTerm(pickledQuote)

library/src-bootstrapped/scala/quoted/report.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ object report:
44

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

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

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

2828
/** Report a warning at the on the position of `expr` */
2929
def warning(msg: => String, expr: Expr[_])(using qctx: QuoteContext): Unit =

library/src/scala/tasty/Reflection.scala

+4-5
Original file line numberDiff line numberDiff line change
@@ -3165,17 +3165,16 @@ trait Reflection { reflection =>
31653165
// POSITIONS //
31663166
///////////////
31673167

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

31733169
/** Position in a source file */
31743170
type Position <: AnyRef
31753171

31763172
val Position: PositionModule
31773173

3178-
trait PositionModule { this: Position.type => }
3174+
trait PositionModule { this: Position.type =>
3175+
/** Position of the expansion site of the macro */
3176+
def ofMacroExpansion: Position
3177+
}
31793178

31803179
given PositionMethods as PositionMethods = PositionMethodsImpl
31813180
protected val PositionMethodsImpl: PositionMethods

tests/neg-macros/delegate-match-1/Macro_1.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ private def fImpl(using qctx: QuoteContext): Expr[Unit] = {
99
case x: ImplicitSearchSuccess =>
1010
'{}
1111
case x: DivergingImplicit => '{}
12-
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
12+
Reporting.error("DivergingImplicit\n" + x.explanation, Position.ofMacroExpansion)
1313
'{}
1414
case x: NoMatchingImplicits =>
15-
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
15+
Reporting.error("NoMatchingImplicits\n" + x.explanation, Position.ofMacroExpansion)
1616
'{}
1717
case x: AmbiguousImplicits =>
18-
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
18+
Reporting.error("AmbiguousImplicits\n" + x.explanation, Position.ofMacroExpansion)
1919
'{}
2020
}
2121
}

tests/neg-macros/delegate-match-2/Macro_1.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ private def fImpl (using qctx: QuoteContext) : Expr[Unit] = {
99
case x: ImplicitSearchSuccess =>
1010
'{}
1111
case x: DivergingImplicit => '{}
12-
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
12+
Reporting.error("DivergingImplicit\n" + x.explanation, Position.ofMacroExpansion)
1313
'{}
1414
case x: NoMatchingImplicits =>
15-
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
15+
Reporting.error("NoMatchingImplicits\n" + x.explanation, Position.ofMacroExpansion)
1616
'{}
1717
case x: AmbiguousImplicits =>
18-
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
18+
Reporting.error("AmbiguousImplicits\n" + x.explanation, Position.ofMacroExpansion)
1919
'{}
2020
}
2121
}

tests/neg-macros/delegate-match-3/Macro_1.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ private def fImpl(using qctx: QuoteContext) : Expr[Unit] = {
99
case x: ImplicitSearchSuccess =>
1010
'{}
1111
case x: DivergingImplicit => '{}
12-
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
12+
Reporting.error("DivergingImplicit\n" + x.explanation, Position.ofMacroExpansion)
1313
'{}
1414
case x: NoMatchingImplicits =>
15-
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
15+
Reporting.error("NoMatchingImplicits\n" + x.explanation, Position.ofMacroExpansion)
1616
'{}
1717
case x: AmbiguousImplicits =>
18-
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
18+
Reporting.error("AmbiguousImplicits\n" + x.explanation, Position.ofMacroExpansion)
1919
'{}
2020
}
2121
}

tests/neg-macros/macros-in-same-project-6/Foo.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ object Foo {
66

77
def aMacroImplementation(using qctx: QuoteContext) : Expr[Unit] = {
88
import qctx.reflect._
9-
Reporting.error("some error", rootPosition)
9+
Reporting.error("some error", Position.ofMacroExpansion)
1010
throw new NoClassDefFoundError("Bar$")
1111
}
1212
}

tests/pos-macros/i6803b/Macro_1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ object AsObject {
1010
inline given x as LineNo = ${impl}
1111
private def impl(using qctx: QuoteContext) : Expr[LineNo] = {
1212
import qctx.reflect._
13-
'{unsafe(${Expr(rootPosition.startLine)})}
13+
'{unsafe(${Expr(Position.ofMacroExpansion.startLine)})}
1414
}
1515
}
1616
}

tests/pos-macros/scala2-macro-compat-1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ object LineNumberMacro3 {
2121
import scala.quoted._
2222
def thisLineNumberExpr(using qctx: QuoteContext): Expr[Int] = {
2323
import qctx.reflect._
24-
Expr(rootPosition.startLine + 1)
24+
Expr(Position.ofMacroExpansion.startLine + 1)
2525
}
2626
}

tests/run-macros/i5629/Macro_1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ object Macros {
1414

1515
def thisLineNumberImpl(using qctx: QuoteContext) : Expr[Int] = {
1616
import qctx.reflect._
17-
Expr(rootPosition.startLine)
17+
Expr(Position.ofMacroExpansion.startLine)
1818
}
1919
}

tests/run-macros/i6803/Macro_1.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ object AsObject {
1010
inline given LineNo = ${impl}
1111
private def impl(using qctx: QuoteContext): Expr[LineNo] = {
1212
import qctx.reflect._
13-
'{unsafe(${Expr(rootPosition.startLine)})}
13+
'{unsafe(${Expr(Position.ofMacroExpansion.startLine)})}
1414
}
1515
}
1616
}
@@ -22,7 +22,7 @@ package AsPackage {
2222
inline given LineNo = ${impl}
2323
private def impl(using qctx: QuoteContext): Expr[LineNo] = {
2424
import qctx.reflect._
25-
'{unsafe(${Expr(rootPosition.startLine)})}
25+
'{unsafe(${Expr(Position.ofMacroExpansion.startLine)})}
2626
}
2727
}
2828
}

tests/run-macros/tasty-linenumber-2/quoted_1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ object LineNumber {
1010

1111
def lineImpl(using QuoteContext) : Expr[LineNumber] = {
1212
import qctx.reflect._
13-
'{new LineNumber(${Expr(rootPosition.startLine)})}
13+
'{new LineNumber(${Expr(Position.ofMacroExpansion.startLine)})}
1414
}
1515

1616
}

tests/run-macros/tasty-linenumber/quoted_1.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ object LineNumber {
1111

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

1717
}

tests/run-macros/tasty-positioned/quoted_1.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ object Positioned {
1010
implicit inline def apply[T](x: => T): Positioned[T] = ${impl('x)}
1111

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

1616
val path = Expr(pos.sourceFile.jpath.toString)
1717
val start = Expr(pos.start)

0 commit comments

Comments
 (0)