Skip to content

Commit 748edc1

Browse files
committed
Add missing checks for arguments
1 parent 746373b commit 748edc1

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,13 +370,15 @@ class Semantic {
370370
}
371371

372372
def call(meth: Symbol, args: List[Value], superType: Type, source: Tree, needResolve: Boolean = true): Contextual[Result] =
373+
def checkArgs = args.flatMap { arg => arg.promote("May only use initialized value as arguments", arg.source) }
374+
373375
value match {
374376
case Hot =>
375-
Result(Hot, Errors.empty)
377+
Result(Hot, checkArgs)
376378

377379
case Cold =>
378380
val error = CallCold(meth, source, trace.toVector)
379-
Result(Hot, error :: Nil)
381+
Result(Hot, error :: checkArgs)
380382

381383
case addr: Addr =>
382384
val isLocal = meth.owner.isClass
@@ -403,15 +405,14 @@ class Semantic {
403405
given Env = env2
404406
eval(ddef.rhs, addr, cls, cacheResult = true)
405407
else
406-
val errors = args.flatMap { arg => arg.promote("May only use initialized value as arguments", arg.source) }
407408
use(if isLocal then env else Env.empty) {
408-
eval(ddef.rhs, addr, cls, cacheResult = true)
409+
eval(ddef.rhs, addr, cls, cacheResult = true) ++ checkArgs
409410
}
410411
else if addr.canIgnoreMethodCall(target) then
411412
Result(Hot, Nil)
412413
else
413414
val error = CallUnknown(target, source, trace.toVector)
414-
Result(Hot, error :: Nil)
415+
Result(Hot, error :: checkArgs)
415416
else
416417
val obj = heap(addr)
417418
if obj.fields.contains(target) then

0 commit comments

Comments
 (0)