Skip to content

Commit 3f900c0

Browse files
committed
Remove reflect ClassDef defived
1 parent 06202fd commit 3f900c0

File tree

8 files changed

+41
-52
lines changed

8 files changed

+41
-52
lines changed

compiler/src/scala/quoted/runtime/impl/QuotesImpl.scala

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,13 +218,13 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
218218
end ClassDefTypeTest
219219

220220
object ClassDef extends ClassDefModule:
221-
def copy(original: Tree)(name: String, constr: DefDef, parents: List[Tree], derived: List[TypeTree], selfOpt: Option[ValDef], body: List[Statement]): ClassDef = {
221+
def copy(original: Tree)(name: String, constr: DefDef, parents: List[Tree], selfOpt: Option[ValDef], body: List[Statement]): ClassDef = {
222222
val dotc.ast.Trees.TypeDef(_, originalImpl: tpd.Template) = original
223-
tpd.cpy.TypeDef(original)(name.toTypeName, tpd.cpy.Template(originalImpl)(constr, parents, derived, selfOpt.getOrElse(tpd.EmptyValDef), body))
223+
tpd.cpy.TypeDef(original)(name.toTypeName, tpd.cpy.Template(originalImpl)(constr, parents, derived = Nil, selfOpt.getOrElse(tpd.EmptyValDef), body))
224224
}
225-
def unapply(cdef: ClassDef): (String, DefDef, List[Tree /* Term | TypeTree */], List[TypeTree], Option[ValDef], List[Statement]) =
225+
def unapply(cdef: ClassDef): (String, DefDef, List[Tree /* Term | TypeTree */], Option[ValDef], List[Statement]) =
226226
val rhs = cdef.rhs.asInstanceOf[tpd.Template]
227-
(cdef.name.toString, cdef.constructor, cdef.parents, rhs.derived.asInstanceOf[List[TypeTree]], cdef.self, rhs.body)
227+
(cdef.name.toString, cdef.constructor, cdef.parents, cdef.self, rhs.body)
228228
end ClassDef
229229

230230
given ClassDefMethods: ClassDefMethods with
@@ -233,8 +233,6 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
233233
self.rhs.asInstanceOf[tpd.Template].constr
234234
def parents: List[Tree] =
235235
self.rhs.asInstanceOf[tpd.Template].parents
236-
def derived: List[TypeTree] =
237-
self.rhs.asInstanceOf[tpd.Template].derived.asInstanceOf[List[TypeTree]]
238236
def self: Option[ValDef] =
239237
optional(self.rhs.asInstanceOf[tpd.Template].self)
240238
def body: List[Statement] =

compiler/src/scala/quoted/runtime/impl/printers/Extractors.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,9 @@ object Extractors {
121121
this += "DefDef(\"" += name += "\", " ++= paramsClauses += ", " += returnTpt += ", " += rhs += ")"
122122
case TypeDef(name, rhs) =>
123123
this += "TypeDef(\"" += name += "\", " += rhs += ")"
124-
case ClassDef(name, constr, parents, derived, self, body) =>
124+
case ClassDef(name, constr, parents, self, body) =>
125125
this += "ClassDef(\"" += name += "\", " += constr += ", "
126126
visitList[Tree](parents, visitTree)
127-
this += ", "
128-
visitList[TypeTree](derived, visitTree)
129127
this += ", " += self += ", " ++= body += ")"
130128
case Import(expr, selectors) =>
131129
this += "Import(" += expr += ", " ++= selectors += ")"

compiler/src/scala/quoted/runtime/impl/printers/SourceCode.scala

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ object SourceCode {
138138
this += "."
139139
printSelectors(selectors)
140140

141-
case cdef @ ClassDef(name, DefDef(_, paramss, _, _), parents, derived, self, stats) =>
141+
case cdef @ ClassDef(name, DefDef(_, paramss, _, _), parents, self, stats) =>
142142
printDefAnnotations(cdef)
143143

144144
val flags = cdef.symbol.flags
@@ -202,11 +202,6 @@ object SourceCode {
202202
}
203203
printSeparated(parents1)
204204

205-
if (derived.nonEmpty) {
206-
this += highlightKeyword(" derives ")
207-
printTypeTrees(derived, ", ")
208-
}
209-
210205
def keepDefinition(d: Definition): Boolean = {
211206
val flags = d.symbol.flags
212207
def isUndecompilableCaseClassMethod: Boolean = {
@@ -847,7 +842,7 @@ object SourceCode {
847842
val name = splicedName(arg.symbol).getOrElse(arg.symbol.name)
848843
val sym = arg.symbol.owner
849844
if sym.isDefDef && sym.name == "<init>" then
850-
val ClassDef(_, _, _, _, _, body) = sym.owner.tree
845+
val ClassDef(_, _, _, _, body) = sym.owner.tree
851846
body.collectFirst {
852847
case vdef @ ValDef(`name`, _, _) if vdef.symbol.flags.is(Flags.ParamAccessor) =>
853848
if (!vdef.symbol.flags.is(Flags.Local)) {
@@ -1253,7 +1248,7 @@ object SourceCode {
12531248
private def printDefinitionName(tree: Definition): this.type = tree match {
12541249
case ValDef(name, _, _) => this += highlightValDef(name)
12551250
case DefDef(name, _, _, _) => this += highlightValDef(name)
1256-
case ClassDef(name, _, _, _, _, _) => this += highlightTypeDef(name.stripSuffix("$"))
1251+
case ClassDef(name, _, _, _, _) => this += highlightTypeDef(name.stripSuffix("$"))
12571252
case TypeDef(name, _) => this += highlightTypeDef(name)
12581253
}
12591254

library/src/scala/quoted/ExprMap.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ trait ExprMap:
3434
tree
3535
case tree: ClassDef =>
3636
val newBody = transformStats(tree.body)(owner)
37-
ClassDef.copy(tree)(tree.name, tree.constructor, tree.parents, tree.derived, tree.self, newBody)
37+
ClassDef.copy(tree)(tree.name, tree.constructor, tree.parents, tree.self, newBody)
3838
}
3939
}
4040

library/src/scala/quoted/Quotes.scala

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -445,8 +445,8 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
445445

446446
/** Methods of the module object `val ClassDef` */
447447
trait ClassDefModule { this: ClassDef.type =>
448-
def copy(original: Tree)(name: String, constr: DefDef, parents: List[Tree /* Term | TypeTree */], derived: List[TypeTree], selfOpt: Option[ValDef], body: List[Statement]): ClassDef
449-
def unapply(cdef: ClassDef): (String, DefDef, List[Tree /* Term | TypeTree */], List[TypeTree], Option[ValDef], List[Statement])
448+
def copy(original: Tree)(name: String, constr: DefDef, parents: List[Tree /* Term | TypeTree */], selfOpt: Option[ValDef], body: List[Statement]): ClassDef
449+
def unapply(cdef: ClassDef): (String, DefDef, List[Tree /* Term | TypeTree */], Option[ValDef], List[Statement])
450450
}
451451

452452
/** Makes extension methods on `ClassDef` available without any imports */
@@ -461,8 +461,6 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
461461
* The first parent is always a class.
462462
*/
463463
def parents: List[Tree /* Term | TypeTree */]
464-
/** List of derived type classes */
465-
def derived: List[TypeTree] // TODO remove? It seems these don't exist after desugaring
466464
/** Self-type of the class
467465
*
468466
* ```scala
@@ -4214,9 +4212,9 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
42144212
case tdef @ TypeDef(_, rhs) =>
42154213
val owner = tdef.symbol
42164214
foldTree(x, rhs)(owner)
4217-
case cdef @ ClassDef(_, constr, parents, derived, self, body) =>
4215+
case cdef @ ClassDef(_, constr, parents, self, body) =>
42184216
val owner = cdef.symbol
4219-
foldTrees(foldTrees(foldTrees(foldTrees(foldTree(x, constr)(owner), parents)(owner), derived)(owner), self)(owner), body)(owner)
4217+
foldTrees(foldTrees(foldTrees(foldTree(x, constr)(owner), parents)(owner), self)(owner), body)(owner)
42204218
case Import(expr, _) =>
42214219
foldTree(x, expr)(owner)
42224220
case Export(expr, _) =>
@@ -4330,7 +4328,7 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
43304328
val owner = tree.symbol
43314329
TypeDef.copy(tree)(tree.name, transformTree(tree.rhs)(owner))
43324330
case tree: ClassDef =>
4333-
ClassDef.copy(tree)(tree.name, tree.constructor, tree.parents, tree.derived, tree.self, tree.body)
4331+
ClassDef.copy(tree)(tree.name, tree.constructor, tree.parents, tree.self, tree.body)
43344332
case tree: Import =>
43354333
Import.copy(tree)(transformTerm(tree.expr)(owner), tree.selectors)
43364334
case tree: Export =>

tests/run-custom-args/Yretain-trees/tasty-extractors-owners.check

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ baz2
1717
ValDef("foo2", Inferred(), None)
1818

1919
<init>
20-
ClassDef("A", DefDef("<init>", List(TermParamClause(Nil)), Inferred(), None), List(Inferred()), Nil, None, List(TypeDef("B", TypeBoundsTree(Inferred(), Inferred())), DefDef("b", Nil, Inferred(), None), ValDef("b2", Inferred(), None)))
20+
ClassDef("A", DefDef("<init>", List(TermParamClause(Nil)), Inferred(), None), List(Inferred()), None, List(TypeDef("B", TypeBoundsTree(Inferred(), Inferred())), DefDef("b", Nil, Inferred(), None), ValDef("b2", Inferred(), None)))
2121

2222
b
23-
ClassDef("A", DefDef("<init>", List(TermParamClause(Nil)), Inferred(), None), List(Inferred()), Nil, None, List(TypeDef("B", TypeBoundsTree(Inferred(), Inferred())), DefDef("b", Nil, Inferred(), None), ValDef("b2", Inferred(), None)))
23+
ClassDef("A", DefDef("<init>", List(TermParamClause(Nil)), Inferred(), None), List(Inferred()), None, List(TypeDef("B", TypeBoundsTree(Inferred(), Inferred())), DefDef("b", Nil, Inferred(), None), ValDef("b2", Inferred(), None)))
2424

2525
b2
26-
ClassDef("A", DefDef("<init>", List(TermParamClause(Nil)), Inferred(), None), List(Inferred()), Nil, None, List(TypeDef("B", TypeBoundsTree(Inferred(), Inferred())), DefDef("b", Nil, Inferred(), None), ValDef("b2", Inferred(), None)))
26+
ClassDef("A", DefDef("<init>", List(TermParamClause(Nil)), Inferred(), None), List(Inferred()), None, List(TypeDef("B", TypeBoundsTree(Inferred(), Inferred())), DefDef("b", Nil, Inferred(), None), ValDef("b2", Inferred(), None)))
2727

tests/run-macros/exports.check

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ reflection show:
1111
()
1212
}
1313
reflection show extractors:
14-
Inlined(None, Nil, Block(List(ValDef("Observer", TypeIdent("Observer$"), Some(Apply(Select(New(TypeIdent("Observer$")), "<init>"), Nil))), ClassDef("Observer$", DefDef("<init>", List(TermParamClause(Nil)), Inferred(), None), List(Apply(Select(New(Inferred()), "<init>"), Nil)), Nil, Some(ValDef("_", Singleton(Ident("Observer")), None)), List(Export(Ident("Messages"), List(SimpleSelector(count))), DefDef("count", Nil, Inferred(), Some(Select(Ident("Messages"), "count")))))), Literal(UnitConstant())))
14+
Inlined(None, Nil, Block(List(ValDef("Observer", TypeIdent("Observer$"), Some(Apply(Select(New(TypeIdent("Observer$")), "<init>"), Nil))), ClassDef("Observer$", DefDef("<init>", List(TermParamClause(Nil)), Inferred(), None), List(Apply(Select(New(Inferred()), "<init>"), Nil)), Some(ValDef("_", Singleton(Ident("Observer")), None)), List(Export(Ident("Messages"), List(SimpleSelector(count))), DefDef("count", Nil, Inferred(), Some(Select(Ident("Messages"), "count")))))), Literal(UnitConstant())))
1515
visited exports with splice
1616
visited exports with splice inverted

0 commit comments

Comments
 (0)