Skip to content

Commit f1ec93a

Browse files
committed
Remove old Staging implementation
1 parent f7947f7 commit f1ec93a

File tree

4 files changed

+30
-118
lines changed

4 files changed

+30
-118
lines changed

compiler/src/dotty/tools/dotc/Compiler.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ class Compiler {
3838
protected def frontendPhases: List[List[Phase]] =
3939
List(new FrontEnd) :: // Compiler frontend: scanner, parser, namer, typer
4040
List(new YCheckPositions) :: // YCheck positions
41-
List(new Staging2) :: // Check PCP, heal quoted types and expand macros
42-
// List(new Staging) :: // Check PCP, heal quoted types and expand macros
41+
List(new Staging) :: // Check PCP, heal quoted types and expand macros
4342
List(new sbt.ExtractDependencies) :: // Sends information on classes' dependencies to sbt via callbacks
4443
List(new semanticdb.ExtractSemanticDB) :: // Extract info into .semanticdb files
4544
List(new PostTyper) :: // Additional checks and cleanups after type checking

compiler/src/dotty/tools/dotc/transform/PCPCheckAndHeal2.scala

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -242,31 +242,31 @@ class PCPCheckAndHeal2(@constructorOnly ictx: Context) extends TreeMapWithStages
242242
object PCPCheckAndHeal2 {
243243
import tpd._
244244

245-
// class QuoteTypeTags(span: Span)(using Context) {
246-
247-
// private val tags = collection.mutable.LinkedHashMap.empty[Symbol, TypeDef]
248-
249-
// def getTagRef(spliced: TermRef): TypeRef = {
250-
// val typeDef = tags.getOrElseUpdate(spliced.symbol, mkTagSymbolAndAssignType(spliced))
251-
// typeDef.symbol.typeRef
252-
// }
253-
254-
// def getTypeTags: List[TypeDef] = tags.valuesIterator.toList
255-
256-
// private def mkTagSymbolAndAssignType(spliced: TermRef): TypeDef = {
257-
// val splicedTree = tpd.ref(spliced).withSpan(span)
258-
// val rhs = splicedTree.select(tpnme.splice).withSpan(span)
259-
// val alias = ctx.typeAssigner.assignType(untpd.TypeBoundsTree(rhs, rhs), rhs, rhs, EmptyTree)
260-
// val local = ctx.newSymbol(
261-
// owner = ctx.owner,
262-
// name = UniqueName.fresh((splicedTree.symbol.name.toString + "$_").toTermName).toTypeName,
263-
// flags = Synthetic,
264-
// info = TypeAlias(splicedTree.tpe.select(tpnme.splice)),
265-
// coord = span).asType
266-
// local.addAnnotation(Annotation(defn.InternalQuoted_QuoteTypeTagAnnot))
267-
// ctx.typeAssigner.assignType(untpd.TypeDef(local.name, alias), local)
268-
// }
269-
270-
// }
245+
class QuoteTypeTags(span: Span)(using Context) {
246+
247+
private val tags = collection.mutable.LinkedHashMap.empty[Symbol, TypeDef]
248+
249+
def getTagRef(spliced: TermRef): TypeRef = {
250+
val typeDef = tags.getOrElseUpdate(spliced.symbol, mkTagSymbolAndAssignType(spliced))
251+
typeDef.symbol.typeRef
252+
}
253+
254+
def getTypeTags: List[TypeDef] = tags.valuesIterator.toList
255+
256+
private def mkTagSymbolAndAssignType(spliced: TermRef): TypeDef = {
257+
val splicedTree = tpd.ref(spliced).withSpan(span)
258+
val rhs = splicedTree.select(tpnme.splice).withSpan(span)
259+
val alias = ctx.typeAssigner.assignType(untpd.TypeBoundsTree(rhs, rhs), rhs, rhs, EmptyTree)
260+
val local = ctx.newSymbol(
261+
owner = ctx.owner,
262+
name = UniqueName.fresh((splicedTree.symbol.name.toString + "$_").toTermName).toTypeName,
263+
flags = Synthetic,
264+
info = TypeAlias(splicedTree.tpe.select(tpnme.splice)),
265+
coord = span).asType
266+
local.addAnnotation(Annotation(defn.InternalQuoted_QuoteTypeTagAnnot))
267+
ctx.typeAssigner.assignType(untpd.TypeDef(local.name, alias), local)
268+
}
269+
270+
}
271271

272272
}

compiler/src/dotty/tools/dotc/transform/Staging.scala

Lines changed: 0 additions & 87 deletions
This file was deleted.

compiler/src/dotty/tools/dotc/transform/Staging2.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ import scala.annotation.constructorOnly
2929
*
3030
* Type healing consists in transforming a phase inconsistent type `T` into `${ implicitly[Type[T]] }`.
3131
*/
32-
class Staging2 extends MacroTransform {
32+
class Staging extends MacroTransform {
3333
import tpd._
3434
import Staging._
3535

36-
override def phaseName: String = Staging2.name
36+
override def phaseName: String = Staging.name
3737

3838
override def allowsImplicitSearch: Boolean = true
3939

@@ -82,6 +82,6 @@ class Staging2 extends MacroTransform {
8282
}
8383

8484

85-
object Staging2 {
85+
object Staging {
8686
val name: String = "staging2"
8787
}

0 commit comments

Comments
 (0)