@@ -370,13 +370,15 @@ class Semantic {
370
370
}
371
371
372
372
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
+
373
375
value match {
374
376
case Hot =>
375
- Result (Hot , Errors .empty )
377
+ Result (Hot , checkArgs )
376
378
377
379
case Cold =>
378
380
val error = CallCold (meth, source, trace.toVector)
379
- Result (Hot , error :: Nil )
381
+ Result (Hot , error :: checkArgs )
380
382
381
383
case addr : Addr =>
382
384
val isLocal = meth.owner.isClass
@@ -403,15 +405,14 @@ class Semantic {
403
405
given Env = env2
404
406
eval(ddef.rhs, addr, cls, cacheResult = true )
405
407
else
406
- val errors = args.flatMap { arg => arg.promote(" May only use initialized value as arguments" , arg.source) }
407
408
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
409
410
}
410
411
else if addr.canIgnoreMethodCall(target) then
411
412
Result (Hot , Nil )
412
413
else
413
414
val error = CallUnknown (target, source, trace.toVector)
414
- Result (Hot , error :: Nil )
415
+ Result (Hot , error :: checkArgs )
415
416
else
416
417
val obj = heap(addr)
417
418
if obj.fields.contains(target) then
0 commit comments