Skip to content

Commit b6ae174

Browse files
committed
Cleanup TastyImpl: Remove implicits and make objects
1 parent 2e53c9f commit b6ae174

File tree

1 file changed

+31
-32
lines changed

1 file changed

+31
-32
lines changed

compiler/src/dotty/tools/dotc/tasty/TastyImpl.scala

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,34 +16,34 @@ object TastyImpl extends scala.tasty.Tasty {
1616

1717
// ===== Quotes ===================================================
1818

19-
implicit def QuotedExprDeco[T](x: quoted.Expr[T]): AbstractQuotedExpr = new AbstractQuotedExpr {
19+
def QuotedExprDeco[T](x: quoted.Expr[T]): AbstractQuotedExpr = new AbstractQuotedExpr {
2020
def toTasty(implicit ctx: Context): Term = PickledQuotes.quotedExprToTree(x)
2121
}
2222

23-
implicit def QuotedTypeDeco[T](x: quoted.Type[T]): AbstractQuotedType = new AbstractQuotedType {
23+
def QuotedTypeDeco[T](x: quoted.Type[T]): AbstractQuotedType = new AbstractQuotedType {
2424
def toTasty(implicit ctx: Context): TypeTree = PickledQuotes.quotedTypeToTree(x)
2525
}
2626

2727
// ===== Contexts =================================================
2828

2929
type Context = Contexts.Context
3030

31-
implicit def ContextDeco(ctx: Context): AbstractContext = new AbstractContext {
31+
def ContextDeco(ctx: Context): AbstractContext = new AbstractContext {
3232
def owner: Definition = FromSymbol.definition(ctx.owner)(ctx)
3333
}
3434

3535
// ===== Id =======================================================
3636

3737
type Id = untpd.Ident
3838

39-
implicit def IdDeco(x: Id): AbstractId = new AbstractId {
39+
def IdDeco(x: Id): AbstractId = new AbstractId {
4040
def pos(implicit ctx: Context): Position = x.pos
4141
}
4242

4343
def idClassTag: ClassTag[Id] = implicitly[ClassTag[Id]]
4444

45-
val Id: IdExtractor = new IdExtractor {
46-
def unapply(x: Id) = x match {
45+
object Id extends IdExtractor {
46+
def unapply(x: Id): Option[String] = x match {
4747
case x: untpd.Ident => Some(x.name.toString) // TODO how to make sure it is not a Ident or TypeIdent? Check x.tpe?
4848
case _ => None
4949
}
@@ -53,22 +53,22 @@ object TastyImpl extends scala.tasty.Tasty {
5353

5454
type Tree = tpd.Tree
5555

56-
implicit def TreeDeco(t: Tree): AbstractTree = new AbstractTree {
56+
def TreeDeco(t: Tree): AbstractTree = new AbstractTree {
5757
def pos(implicit ctx: Context): Position = t.pos
5858
}
5959

6060
type PackageClause = tpd.PackageDef
6161

6262
def packageClauseClassTag: ClassTag[PackageClause] = implicitly[ClassTag[PackageClause]]
6363

64-
val PackageClause: PackageClauseExtractor = new PackageClauseExtractor {
64+
object PackageClause extends PackageClauseExtractor {
6565
def unapply(x: PackageClause)(implicit ctx: Context): Option[(Term, List[Tree])] = x match {
6666
case x: tpd.PackageDef @unchecked => Some((x.pid, x.stats))
6767
case _ => None
6868
}
6969
}
7070

71-
implicit def PackageClauseDeco(x: PackageClause): AbstractPackageClause = new AbstractPackageClause {
71+
def PackageClauseDeco(x: PackageClause): AbstractPackageClause = new AbstractPackageClause {
7272
override def definition: Definition = ???
7373
}
7474

@@ -80,7 +80,7 @@ object TastyImpl extends scala.tasty.Tasty {
8080

8181
def importClassTag: ClassTag[Import] = implicitly[ClassTag[Import]]
8282

83-
val Import: ImportExtractor = new ImportExtractor {
83+
object Import extends ImportExtractor {
8484
def unapply(x: Import)(implicit ctx: Context): Option[(Term, List[ImportSelector])] = x match {
8585
case x: tpd.Import @unchecked => Some((x.expr, x.selectors))
8686
case _ => None
@@ -91,21 +91,21 @@ object TastyImpl extends scala.tasty.Tasty {
9191

9292
def importSelectorClassTag: ClassTag[ImportSelector] = implicitly[ClassTag[ImportSelector]]
9393

94-
val SimpleSelector: SimpleSelectorExtractor = new SimpleSelectorExtractor {
94+
object SimpleSelector extends SimpleSelectorExtractor {
9595
def unapply(x: ImportSelector)(implicit ctx: Context): Option[Id] = x match {
9696
case x: untpd.Ident => Some(x) // TODO make sure it will not match other idents
9797
case _ => None
9898
}
9999
}
100100

101-
val RenameSelector: RenameSelectorExtractor = new RenameSelectorExtractor {
101+
object RenameSelector extends RenameSelectorExtractor {
102102
def unapply(x: ImportSelector)(implicit ctx: Context): Option[(Id, Id)] = x match {
103103
case Trees.Thicket((id1: untpd.Ident) :: (id2: untpd.Ident) :: Nil) if id2.name != nme.WILDCARD => Some(id1, id2)
104104
case _ => None
105105
}
106106
}
107107

108-
val OmitSelector: OmitSelectorExtractor = new OmitSelectorExtractor {
108+
object OmitSelector extends OmitSelectorExtractor {
109109
def unapply(x: ImportSelector)(implicit ctx: Context): Option[Id] = x match {
110110
case Trees.Thicket((id: untpd.Ident) :: Trees.Ident(nme.WILDCARD) :: Nil) => Some(id)
111111
case _ => None
@@ -116,7 +116,7 @@ object TastyImpl extends scala.tasty.Tasty {
116116

117117
type Definition = tpd.Tree
118118

119-
implicit def DefinitionDeco(x: Definition): AbstractDefinition = new AbstractDefinition {
119+
def DefinitionDeco(x: Definition): AbstractDefinition = new AbstractDefinition {
120120

121121
def owner(implicit ctx: Context): Definition = FromSymbol.definition(x.symbol.owner)
122122

@@ -141,7 +141,7 @@ object TastyImpl extends scala.tasty.Tasty {
141141

142142
def classDefClassTag: ClassTag[ClassDef] = implicitly[ClassTag[ClassDef]]
143143

144-
val ClassDef: ClassDefExtractor = new ClassDefExtractor {
144+
object ClassDef extends ClassDefExtractor {
145145
def unapply(x: ClassDef)(implicit ctx: Context): Option[(String, DefDef, List[Parent], Option[ValDef], List[Statement])] = x match {
146146
case x: tpd.TypeDef @unchecked if x.isClassDef =>
147147
val temp @ Trees.Template(constr, parents, self, _) = x.rhs
@@ -157,7 +157,7 @@ object TastyImpl extends scala.tasty.Tasty {
157157

158158
def defDefClassTag: ClassTag[DefDef] = implicitly[ClassTag[DefDef]]
159159

160-
val DefDef: DefDefExtractor = new DefDefExtractor {
160+
object DefDef extends DefDefExtractor {
161161
def unapply(x: DefDef)(implicit ctx: Context): Option[(String, List[TypeDef], List[List[ValDef]], TypeTree, Option[Term])] = x match {
162162
case x: tpd.DefDef @unchecked =>
163163
Some((x.name.toString, x.tparams, x.vparamss, x.tpt, if (x.rhs.isEmpty) None else Some(x.rhs)))
@@ -171,7 +171,7 @@ object TastyImpl extends scala.tasty.Tasty {
171171

172172
def valDefClassTag: ClassTag[ValDef] = implicitly[ClassTag[ValDef]]
173173

174-
val ValDef: ValDefExtractor = new ValDefExtractor {
174+
object ValDef extends ValDefExtractor {
175175
def unapply(x: ValDef)(implicit ctx: Context): Option[(String, TypeTree, Option[Term])] = x match {
176176
case x: tpd.ValDef @unchecked =>
177177
Some((x.name.toString, x.tpt, if (x.rhs.isEmpty) None else Some(x.rhs)))
@@ -185,7 +185,7 @@ object TastyImpl extends scala.tasty.Tasty {
185185

186186
def typeDefClassTag: ClassTag[TypeDef] = implicitly[ClassTag[TypeDef]]
187187

188-
val TypeDef: TypeDefExtractor = new TypeDefExtractor {
188+
object TypeDef extends TypeDefExtractor {
189189
def unapply(x: TypeDef)(implicit ctx: Context): Option[(String, TypeOrBoundsTree /* TypeTree | TypeBoundsTree */)] = x match {
190190
case x: tpd.TypeDef @unchecked if !x.symbol.isClass => Some((x.name.toString, x.rhs))
191191
case _ => None
@@ -196,7 +196,7 @@ object TastyImpl extends scala.tasty.Tasty {
196196

197197
def packageDefClassTag: ClassTag[PackageDef] = implicitly[ClassTag[PackageDef]]
198198

199-
val PackageDef: PackageDefExtractor = new PackageDefExtractor {
199+
object PackageDef extends PackageDefExtractor {
200200
def unapply(x: PackageDef)(implicit ctx: Context): Option[(String, List[Statement])] = x match {
201201
case x: tpd.PackageDef =>
202202
// FIXME Do not do this eagerly as it forces everithing in the package to be loaded.
@@ -217,7 +217,7 @@ object TastyImpl extends scala.tasty.Tasty {
217217

218218
type Term = tpd.Tree
219219

220-
implicit def TermDeco(t: Term): AbstractTerm = new AbstractTerm {
220+
def TermDeco(t: Term): AbstractTerm = new AbstractTerm {
221221
def pos(implicit ctx: Context): Position = t.pos
222222
def tpe(implicit ctx: Context): Types.Type = t.tpe
223223
}
@@ -385,7 +385,7 @@ object TastyImpl extends scala.tasty.Tasty {
385385

386386
def caseDefClassTag: ClassTag[CaseDef] = implicitly[ClassTag[CaseDef]]
387387

388-
val CaseDef: CaseDefExtractor = new CaseDefExtractor {
388+
object CaseDef extends CaseDefExtractor {
389389
def unapply(x: CaseDef): Option[(Pattern, Option[Term], Term)] = x match {
390390
case x: tpd.CaseDef @unchecked =>
391391
Some(x.pat, if (x.guard.isEmpty) None else Some(x.guard), x.body)
@@ -397,7 +397,7 @@ object TastyImpl extends scala.tasty.Tasty {
397397

398398
type Pattern = tpd.Tree
399399

400-
implicit def PatternDeco(x: Pattern): AbstractPattern = new AbstractPattern {
400+
def PatternDeco(x: Pattern): AbstractPattern = new AbstractPattern {
401401
def pos(implicit ctx: Context): Position = x.pos
402402
def tpe(implicit ctx: Context): Types.Type = x.tpe.stripTypeVar
403403
}
@@ -449,15 +449,15 @@ object TastyImpl extends scala.tasty.Tasty {
449449

450450
type TypeOrBoundsTree = tpd.Tree
451451

452-
implicit def TypeOrBoundsTreeDeco(x: TypeOrBoundsTree): AbstractTypeOrBoundsTree = new AbstractTypeOrBoundsTree {
452+
def TypeOrBoundsTreeDeco(x: TypeOrBoundsTree): AbstractTypeOrBoundsTree = new AbstractTypeOrBoundsTree {
453453
def tpe(implicit ctx: Context): Type = x.tpe.stripTypeVar
454454
}
455455

456456
// ----- TypeTrees ------------------------------------------------
457457

458458
type TypeTree = tpd.Tree
459459

460-
implicit def TypeTreeDeco(x: TypeTree): AbstractTypeTree = new AbstractTypeTree {
460+
def TypeTreeDeco(x: TypeTree): AbstractTypeTree = new AbstractTypeTree {
461461
def pos(implicit ctx: Context): Position = x.pos
462462
def tpe(implicit ctx: Context): Types.Type = x.tpe.stripTypeVar
463463
}
@@ -544,11 +544,11 @@ object TastyImpl extends scala.tasty.Tasty {
544544

545545
type TypeBoundsTree = tpd.TypeBoundsTree
546546

547-
implicit def TypeBoundsTreeDeco(x: TypeBoundsTree): AbstractTypeBoundsTree = ???
547+
def TypeBoundsTreeDeco(x: TypeBoundsTree): AbstractTypeBoundsTree = ???
548548

549549
def typeBoundsTreeClassTag: ClassTag[TypeBoundsTree] = implicitly[ClassTag[TypeBoundsTree]]
550550

551-
val TypeBoundsTree: TypeBoundsTreeExtractor = new TypeBoundsTreeExtractor {
551+
object TypeBoundsTree extends TypeBoundsTreeExtractor {
552552
def unapply(x: TypeBoundsTree)(implicit ctx: Context): Option[(TypeTree, TypeTree)] = x match {
553553
case x: tpd.TypeBoundsTree @unchecked => Some(x.lo, x.hi)
554554
case _ => None
@@ -574,7 +574,7 @@ object TastyImpl extends scala.tasty.Tasty {
574574
def polyTypeClassTag: ClassTag[PolyType] = implicitly[ClassTag[PolyType]]
575575
def typeLambdaClassTag: ClassTag[TypeLambda] = implicitly[ClassTag[TypeLambda]]
576576

577-
implicit def MethodTypeDeco(x: MethodType): AbstractMethodType = new AbstractMethodType {
577+
def MethodTypeDeco(x: MethodType): AbstractMethodType = new AbstractMethodType {
578578
def isErased: Boolean = x.isErasedMethod
579579
def isImplicit: Boolean = x.isImplicitMethod
580580
}
@@ -735,7 +735,7 @@ object TastyImpl extends scala.tasty.Tasty {
735735

736736
def typeBoundsClassTag: ClassTag[TypeBounds] = implicitly[ClassTag[TypeBounds]]
737737

738-
val TypeBounds: TypeBoundsExtractor = new TypeBoundsExtractor {
738+
object TypeBounds extends TypeBoundsExtractor {
739739
def unapply(x: TypeBounds)(implicit ctx: Context): Option[(Type, Type)] = x match {
740740
case x: Types.TypeBounds => Some(x.lo, x.hi)
741741
case _ => None
@@ -748,15 +748,15 @@ object TastyImpl extends scala.tasty.Tasty {
748748

749749
def noPrefixClassTag: ClassTag[NoPrefix] = implicitly[ClassTag[NoPrefix]]
750750

751-
val NoPrefix: NoPrefixExtractor = new NoPrefixExtractor {
751+
object NoPrefix extends NoPrefixExtractor {
752752
def unapply(x: NoPrefix)(implicit ctx: Context): Boolean = x == Types.NoPrefix
753753
}
754754

755755
// ===== Constants ================================================
756756

757757
type Constant = Constants.Constant
758758

759-
implicit def ConstantDeco(x: Constant): AbstractConstant = new AbstractConstant {
759+
def ConstantDeco(x: Constant): AbstractConstant = new AbstractConstant {
760760
def value: Any = x.value
761761
}
762762

@@ -894,13 +894,12 @@ object TastyImpl extends scala.tasty.Tasty {
894894

895895
def signatureClassTag: ClassTag[Signature] = implicitly[ClassTag[Signature]]
896896

897-
val Signature: SignatureExtractor = new SignatureExtractor {
897+
object Signature extends SignatureExtractor {
898898
def unapply(x: Signature)(implicit ctx: Context): Option[(List[String], String)] = {
899899
Some((x.paramsSig.map(_.toString), x.resSig.toString))
900900
}
901901
}
902902

903-
904903
// ===== Positions ================================================
905904

906905
type Position = SourcePosition

0 commit comments

Comments
 (0)