Skip to content

Commit 3d3dbb6

Browse files
committed
wip
1 parent 0d34aa4 commit 3d3dbb6

File tree

5 files changed

+18
-21
lines changed

5 files changed

+18
-21
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ object TastyImpl extends scala.tasty.Tasty {
488488

489489
object Unapply extends UnapplyExtractor {
490490
def unapply(x: Pattern)(implicit ctx: Context): Option[(Term, List[Term], List[Pattern])] = x match {
491-
case x: tpd.UnApply @unchecked => Some(x.fun, x.implicits, x.patterns)
491+
case Trees.UnApply(fun, implicits, patterns) => Some((fun, implicits, patterns))
492+
case Trees.Typed(Trees.UnApply(fun, implicits, patterns), _) => Some((fun, implicits, patterns))
492493
case _ => None
493494
}
494495
}
@@ -502,7 +503,8 @@ object TastyImpl extends scala.tasty.Tasty {
502503

503504
object TypeTest extends TypeTestExtractor {
504505
def unapply(x: Pattern)(implicit ctx: Context): Option[TypeTree] = x match {
505-
case x: tpd.Typed @unchecked => Some(x.tpt)
506+
case Trees.Typed(Trees.UnApply(_, _, _), _) => None
507+
case Trees.Typed(_, tpt) => Some(tpt)
506508
case _ => None
507509
}
508510
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,8 @@ class ShowSourceCode[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
535535
body match {
536536
case Term.Block(stats, expr) =>
537537
printTrees(stats, lineBreak())
538+
if (stats.nonEmpty)
539+
this += lineBreak()
538540
printTree(expr)
539541
case body =>
540542
printTree(body)
@@ -580,7 +582,6 @@ class ShowSourceCode[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
580582

581583
case _ =>
582584
throw new MatchError(pattern.show)
583-
584585
}
585586

586587
def printConstant(const: Constant): Buffer = const match {

tests/pos/i2104.decompiled

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ class Cons[H, T]() extends java.lang.Object
33
object Cons {
44
def apply[H, T](h: H, t: T): Cons[H, T] = scala.Predef.???
55
def unapply[H, T](t: Cons[H, T]): scala.Option[Pair[H, T]] = scala.Predef.???
6-
}/** Decompiled from out/posTestFromTasty/pos/i2104/Pair.class */
6+
}
7+
/** Decompiled from out/posTestFromTasty/pos/i2104/Pair.class */
78
case class Pair[A, B](_1: A, _2: B) {
8-
def copy[A >: scala.Nothing <: scala.Any, B >: scala.Nothing <: scala.Any](_1: A, _2: B): Pair[A, B] = new Pair[A, B](_1, _2)
9-
def copy$default$1[A >: scala.Nothing <: scala.Any, B >: scala.Nothing <: scala.Any]: A = (_1: _1)
10-
def copy$default$2[A >: scala.Nothing <: scala.Any, B >: scala.Nothing <: scala.Any]: B = (_2: _2)
119
override def hashCode(): scala.Int = {
1210
var acc: scala.Int = 2479866
1311
acc = scala.runtime.Statics.mix(acc, scala.runtime.Statics.anyHash(_1))
@@ -33,18 +31,14 @@ case class Pair[A, B](_1: A, _2: B) {
3331
throw new java.lang.IndexOutOfBoundsException(n.toString())
3432
}
3533
}
36-
object Pair extends scala.AnyRef {
37-
def apply[A >: scala.Nothing <: scala.Any, B >: scala.Nothing <: scala.Any](_1: A, _2: B): Pair[A, B] = new Pair[A, B](_1, _2)
38-
def unapply[A >: scala.Nothing <: scala.Any, B >: scala.Nothing <: scala.Any](x$1: Pair[A, B]): Pair[A, B] = x$1
39-
}/** Decompiled from out/posTestFromTasty/pos/i2104/Test.class */
34+
object Pair extends scala.AnyRef
35+
/** Decompiled from out/posTestFromTasty/pos/i2104/Test.class */
4036
object Test {
4137
def main(args: scala.Array[scala.Predef.String]): scala.Unit = {
4238
Cons.apply[scala.Option[scala.Int], scala.None.type](scala.Option.apply[scala.Int](1), scala.None) match {
43-
case Cons(_: scala.Some[scala.Int], scala.None) =>
44-
{
45-
(i: scala.Int)
46-
dotty.DottyPredef.assert(i.==(1))
47-
}
39+
case Cons(scala.Some(i), scala.None) =>
40+
(i: scala.Int)
41+
dotty.DottyPredef.assert(i.==(1))
4842
}
4943
}
5044
}

tests/pos/simpleCaseClass-2.decompiled

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
case class A(x: scala.Int) {
33
override def hashCode(): scala.Int = {
44
var acc: scala.Int = 65
5-
acc = scala.runtime.Statics.mix(acc, A.this.x)
5+
acc = scala.runtime.Statics.mix(acc, x)
66
scala.runtime.Statics.finalizeHash(acc, 1)
77
}
88
override def equals(x$0: scala.Any): scala.Boolean = this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
@@ -22,4 +22,4 @@ case class A(x: scala.Int) {
2222
throw new java.lang.IndexOutOfBoundsException(n.toString())
2323
}
2424
}
25-
object A extends scala.Function1[scala.Int, A]
25+
object A extends scala.Function1[scala.Int, A]

tests/pos/simpleCaseClass-3.decompiled

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
case class A[T](x: T) {
33
override def hashCode(): scala.Int = {
44
var acc: scala.Int = 65
5-
acc = scala.runtime.Statics.mix(acc, scala.runtime.Statics.anyHash(A.this.x))
5+
acc = scala.runtime.Statics.mix(acc, scala.runtime.Statics.anyHash(x))
66
scala.runtime.Statics.finalizeHash(acc, 1)
77
}
88
override def equals(x$0: scala.Any): scala.Boolean = this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
9-
case x$0: A[A.this.T] =>
9+
case x$0: A[T] =>
1010
this.x.==(x$0.x)
1111
case _ =>
1212
false
1313
})
1414
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(this)
15-
override def canEqual(that: scala.Any): scala.Boolean = that.isInstanceOf[A[A.this.T]]
15+
override def canEqual(that: scala.Any): scala.Boolean = that.isInstanceOf[A[T]]
1616
override def productArity: scala.Int = 1
1717
override def productPrefix: java.lang.String = "A"
1818
override def productElement(n: scala.Int): scala.Any = n match {

0 commit comments

Comments
 (0)