Skip to content

Commit e67a67d

Browse files
committed
Fix printing of value classes
1 parent fe9b1a7 commit e67a67d

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

library/src/scala/tasty/util/ShowSourceCode.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,14 @@ class ShowSourceCode[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
459459

460460
def printArgDef(arg: ValDef): Unit = {
461461
val ValDef(name, tpt, rhs) = arg
462+
arg.owner.owner match {
463+
case ClassDef(_, _, _, _, body) =>
464+
body.collectFirst {
465+
case vdef @ ValDef(name1, _, _) if name == name1 && vdef.flags.isParamAccessor && !vdef.flags.isLocal =>
466+
this += "val "
467+
}
468+
case _ =>
469+
}
462470
this += name += ": "
463471
printTypeTree(tpt)
464472
}
@@ -604,6 +612,8 @@ class ShowSourceCode[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
604612
case prefix@Type.SymRef(ClassDef(_, _, _, _, _), _) =>
605613
printType(prefix)
606614
this += "#"
615+
case Type.ThisType(Type.SymRef(ClassDef(_, _, _, _, _), _)) =>
616+
this += "this."
607617
case prefix@Type() =>
608618
printType(prefix)
609619
this += "."
@@ -625,6 +635,7 @@ class ShowSourceCode[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
625635
case Type.TypeRef(name, prefix) =>
626636
prefix match {
627637
case NoPrefix() =>
638+
case EmptyPackage() =>
628639
case prefix@Type() =>
629640
printType(prefix)
630641
this += "."

tests/pos/i518.decompiled

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/** Decompiled from out/posTestFromTasty/pos/i518/Meter.class */
2+
final class Meter(val underlying: scala.Int) extends scala.AnyVal {
3+
override def hashCode(): scala.Int = this.underlying.hashCode()
4+
override def equals(x$0: scala.Any): scala.Boolean = x$0 match {
5+
case x$0: Meter =>
6+
this.underlying.==(x$0.underlying)
7+
case _ =>
8+
false
9+
}
10+
}
11+
object Meter extends scala.AnyRef/** Decompiled from out/posTestFromTasty/pos/i518/Test.class */
12+
class Test() {
13+
val x: scala.Int = new Meter(3).hashCode()
14+
}

0 commit comments

Comments
 (0)