Skip to content

Commit 23681e4

Browse files
committed
Merge pull request #383 from smarter/fix/fullyParameterizedDef
FullParameterization: fix rewiring of Returns
2 parents 3a6cab4 + a273f38 commit 23681e4

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,12 @@ trait FullParameterization {
176176
} else EmptyTree
177177
}
178178
tree match {
179+
case Return(expr, from) if !from.isEmpty =>
180+
val rewired = rewiredTarget(from, derived)
181+
if (rewired.exists)
182+
tpd.cpy.Return(tree)(expr, Ident(rewired.termRef))
183+
else
184+
EmptyTree
179185
case Ident(_) => rewireCall(thisRef)
180186
case Select(qual, _) => rewireCall(qual)
181187
case tree @ TypeApply(fn, targs1) =>

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)