Skip to content

Commit 1d9a840

Browse files
committed
Fix exception
1 parent 22d853d commit 1d9a840

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

compiler/src/dotty/tools/dotc/transform/init/Summarization.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ object Summarization {
230230
Summary.empty
231231

232232
case thisTp: ThisType =>
233-
val cls = thisTp.widen.classSymbol.asClass
233+
val cls = thisTp.tref.classSymbol.asClass
234234
Summary.empty + ThisRef(cls)(source)
235235

236236
case SuperType(thisTp, superTp) =>

tests/init/crash/i7821.scala

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
object XObject {
2+
opaque type X = Int
3+
4+
def anX: X = 5
5+
6+
given ops as Object {
7+
def (x: X) + (y: X): X = x + y
8+
}
9+
}
10+
11+
object MyXObject {
12+
opaque type MyX = XObject.X
13+
14+
def anX: MyX = XObject.anX
15+
16+
given ops as Object {
17+
def (x: MyX) + (y: MyX): MyX = x + y // error: warring: Infinite recursive call
18+
}
19+
}
20+
21+
object Main extends App {
22+
println(XObject.anX + XObject.anX) // prints 10
23+
println(MyXObject.anX + MyXObject.anX) // infinite loop
24+
}

0 commit comments

Comments
 (0)