Skip to content

Commit 2cccf3f

Browse files
committed
Print this id and filter obect lazy val
1 parent 1cfdda9 commit 2cccf3f

File tree

8 files changed

+95
-73
lines changed

8 files changed

+95
-73
lines changed

compiler/test/dotty/tools/dotc/FromTastyTests.scala

Lines changed: 40 additions & 56 deletions
Large diffs are not rendered by default.

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,13 @@ class ShowSourceCode[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
251251
printConstant(const)
252252

253253
case Term.This(id) =>
254-
this += "this" // TODO add id
254+
id match {
255+
case Some(x) =>
256+
val Id(name) = x
257+
this += name.stripSuffix("$") += "."
258+
case None =>
259+
}
260+
this += "this"
255261

256262
case Term.New(tpt) =>
257263
this += "new "
@@ -312,6 +318,7 @@ class ShowSourceCode[T <: Tasty with Singleton](tasty0: T) extends Show[T](tasty
312318
case Term.Block(stats0, expr) =>
313319
def isLoopEntryPoint(tree: Tree): Boolean = tree match {
314320
case Term.Apply(Term.Ident("while$" | "doWhile$"), _) => true
321+
case tree @ ValDef(_, _, _) => tree.flags.isObject
315322
case _ => false
316323
}
317324

tests/pos/i2104b.decompiled

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@ case class Pair[A, B](_1: A, _2: B) {
1212
acc = scala.runtime.Statics.mix(acc, scala.runtime.Statics.anyHash(Pair.this._2))
1313
scala.runtime.Statics.finalizeHash(acc, 2)
1414
}
15-
override def equals(x$0: scala.Any): scala.Boolean = this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
15+
override def equals(x$0: scala.Any): scala.Boolean = Pair.this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
1616
case x$0: Pair[A, B] @scala.unchecked() =>
17-
this._1.==(x$0._1).&&(this._2.==(x$0._2))
17+
Pair.this._1.==(x$0._1).&&(Pair.this._2.==(x$0._2))
1818
case _ =>
1919
false
2020
})
21-
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(this)
21+
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(Pair.this)
2222
override def canEqual(that: scala.Any): scala.Boolean = that.isInstanceOf[Pair[A, B] @scala.unchecked()]
2323
override def productArity: scala.Int = 2
2424
override def productPrefix: java.lang.String = "Pair"
2525
override def productElement(n: scala.Int): scala.Any = n match {
2626
case 0 =>
27-
this._1
27+
Pair.this._1
2828
case 1 =>
29-
this._2
29+
Pair.this._2
3030
case _ =>
3131
throw new java.lang.IndexOutOfBoundsException(n.toString())
3232
}

tests/pos/simpleCaseClass-1.decompiled

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
/** Decompiled from out/posTestFromTasty/pos/simpleCaseClass-1/A.class */
22
case class A() {
33
override def hashCode(): scala.Int = 1914112431
4-
override def equals(x$0: scala.Any): scala.Boolean = this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
4+
override def equals(x$0: scala.Any): scala.Boolean = A.this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
55
case x$0: A @scala.unchecked() =>
66
true
77
case _ =>
88
false
99
})
10-
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(this)
10+
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(A.this)
1111
override def canEqual(that: scala.Any): scala.Boolean = that.isInstanceOf[A @scala.unchecked()]
1212
override def productArity: scala.Int = 0
1313
override def productPrefix: java.lang.String = "A"

tests/pos/simpleCaseClass-2.decompiled

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ case class A(x: scala.Int) {
55
acc = scala.runtime.Statics.mix(acc, A.this.x)
66
scala.runtime.Statics.finalizeHash(acc, 1)
77
}
8-
override def equals(x$0: scala.Any): scala.Boolean = this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
8+
override def equals(x$0: scala.Any): scala.Boolean = A.this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
99
case x$0: A @scala.unchecked() =>
10-
this.x.==(x$0.x)
10+
A.this.x.==(x$0.x)
1111
case _ =>
1212
false
1313
})
14-
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(this)
14+
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(A.this)
1515
override def canEqual(that: scala.Any): scala.Boolean = that.isInstanceOf[A @scala.unchecked()]
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 {
1919
case 0 =>
20-
this._1
20+
A.this._1
2121
case _ =>
2222
throw new java.lang.IndexOutOfBoundsException(n.toString())
2323
}

tests/pos/simpleCaseClass-3.decompiled

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@ case class A[T](x: T) {
55
acc = scala.runtime.Statics.mix(acc, scala.runtime.Statics.anyHash(A.this.x))
66
scala.runtime.Statics.finalizeHash(acc, 1)
77
}
8-
override def equals(x$0: scala.Any): scala.Boolean = this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
8+
override def equals(x$0: scala.Any): scala.Boolean = A.this.eq(x$0.asInstanceOf[java.lang.Object]).||(x$0 match {
99
case x$0: A[T] @scala.unchecked() =>
10-
this.x.==(x$0.x)
10+
A.this.x.==(x$0.x)
1111
case _ =>
1212
false
1313
})
14-
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(this)
14+
override def toString(): java.lang.String = scala.runtime.ScalaRunTime._toString(A.this)
1515
override def canEqual(that: scala.Any): scala.Boolean = that.isInstanceOf[A[T] @scala.unchecked()]
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 {
1919
case 0 =>
20-
this._1
20+
A.this._1
2121
case _ =>
2222
throw new java.lang.IndexOutOfBoundsException(n.toString())
2323
}

tests/pos/simpleMatchRef.decompiled

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
class Foo() {
33
val X: scala.Int = scala.Predef.???
44
def foo(x: scala.Any): scala.Unit = x match {
5-
case this.X =>
5+
case Foo.this.X =>
66
scala.Predef.println("a")
77
case Y =>
88
scala.Predef.println("b")

tests/pos/t704.decompiled

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/** Decompiled from out/posTestFromTasty/pos/t704/C.class */
2+
class C() extends E
3+
/** Decompiled from out/posTestFromTasty/pos/t704/D.class */
4+
trait D() extends java.lang.Object {
5+
val x: java.lang.String = "xxxx should appear twice"
6+
object xxxx {
7+
scala.Console.println(D.this.x)
8+
}
9+
def get_xxxx: scala.AnyRef = D.this.xxxx
10+
}
11+
/** Decompiled from out/posTestFromTasty/pos/t704/E.class */
12+
trait E() extends java.lang.Object with D {
13+
def f(): scala.Unit = {
14+
val y: java.lang.String = "yyyy should appear twice"
15+
object yyyy {
16+
val x1: scala.AnyRef = E.this.get_xxxx
17+
scala.Console.println(y)
18+
}
19+
{
20+
yyyy
21+
()
22+
}
23+
}
24+
}
25+
/** Decompiled from out/posTestFromTasty/pos/t704/Go.class */
26+
object Go extends D {
27+
def main(args: scala.Array[scala.Predef.String]): scala.Unit = {
28+
new C().f()
29+
new C().f()
30+
}
31+
}

0 commit comments

Comments
 (0)