Skip to content

Commit 9e3a9aa

Browse files
committed
FullParameterization: fix rewiring of Returns
1 parent 4e99877 commit 9e3a9aa

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

src/dotty/tools/dotc/transform/FullParameterization.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,12 @@ trait FullParameterization {
176176
} else EmptyTree
177177
}
178178
tree match {
179-
case Ident(_) => rewireCall(thisRef)
179+
case Ident(_) =>
180+
val rewired = rewiredTarget(tree, derived)
181+
if (rewired.exists) // This only happens when `tree` is the `from` part of a Return
182+
Ident(rewired.termRef)
183+
else
184+
EmptyTree
180185
case Select(qual, _) => rewireCall(qual)
181186
case tree @ TypeApply(fn, targs1) =>
182187
assert(targs.isEmpty)

test/dotc/tests.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class tests extends CompilerTest {
6868
@Test def pos_t2613 = compileFile(posSpecialDir, "t2613")(allowDeepSubtypes)
6969
@Test def pos_packageObj = compileFile(posDir, "i0239")
7070
@Test def pos_anonClassSubtyping = compileFile(posDir, "anonClassSubtyping")
71+
@Test def pos_extmethods = compileFile(posDir, "extmethods")
7172

7273
@Test def pos_all = compileFiles(posDir, failedOther)
7374

tests/pos/extmethods.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ class T[A, This <: That1[A]](val x: Int) extends AnyVal {
33
self: This =>
44
var next: This = _
55
final def loop(x: This, cnt: Int): Int = loop(x, cnt + 1)
6+
def const[B](): Boolean = return true
67
}

0 commit comments

Comments
 (0)