Skip to content

Commit e5fc8c8

Browse files
committed
Fix i18624 and add test case for it
1 parent 6f88c31 commit e5fc8c8

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -698,13 +698,21 @@ object Objects:
698698

699699
case Fun(code, thisV, klass, env) =>
700700
// meth == NoSymbol for poly functions
701-
if meth.name.toString == "tupled" then
701+
if meth.name == nme.tupled then
702702
value // a call like `fun.tupled`
703703
else
704704
code match
705705
case ddef: DefDef =>
706-
given Env.Data = Env.of(ddef, args.map(_.value), env)
707-
extendTrace(code) { eval(ddef.rhs, thisV, klass, cacheResult = true) }
706+
if meth.name == nme.apply then
707+
given Env.Data = Env.of(ddef, args.map(_.value), env)
708+
extendTrace(code) { eval(ddef.rhs, thisV, klass, cacheResult = true) }
709+
else
710+
meth.owner.asType.name match
711+
case tpnme.Any | tpnme.AnyRef =>
712+
value
713+
case _ =>
714+
Cold
715+
end if
708716

709717
case _ =>
710718
// by-name closure

tests/init-global/pos/i18624.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
def h(a: Int): Unit = {
2+
3+
}
4+
5+
object X {
6+
println(h.getClass())
7+
}

0 commit comments

Comments
 (0)