Skip to content

Commit 34261df

Browse files
authored
Merge pull request #15092 from dotty-staging/fix-14999
Eta expand CFTs in super accessors if needed
2 parents 86bb972 + 9907922 commit 34261df

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

compiler/src/dotty/tools/dotc/transform/ResolveSuper.scala

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,12 @@ class ResolveSuper extends MiniPhase with IdentityDenotTransformer { thisPhase =
4848
import ops._
4949

5050
def superAccessors(mixin: ClassSymbol): List[Tree] =
51-
for (superAcc <- mixin.info.decls.filter(_.isSuperAccessor))
52-
yield {
53-
util.Stats.record("super accessors")
54-
DefDef(mkForwarderSym(superAcc.asTerm), forwarderRhsFn(rebindSuper(cls, superAcc)))
55-
}
51+
for superAcc <- mixin.info.decls.filter(_.isSuperAccessor)
52+
yield
53+
util.Stats.record("super accessors")
54+
val fwd = mkForwarderSym(superAcc.asTerm)
55+
DefDef(fwd, forwarderRhsFn(rebindSuper(cls, superAcc))
56+
.andThen(_.etaExpandCFT(using ctx.withOwner(fwd))))
5657

5758
val overrides = mixins.flatMap(superAccessors)
5859

tests/pos/i14999.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
trait Foo:
2+
def foo: String ?=> Int =
3+
summon[String].length
4+
5+
trait Bar extends Foo:
6+
override def foo =
7+
super.foo
8+
9+
class Baz extends Bar
10+
11+
@main def Test =
12+
given String = "hello"
13+
assert(Baz().foo == 5)

0 commit comments

Comments
 (0)