@@ -12,7 +12,7 @@ import NameKinds.SuperAccessorName
12
12
13
13
import ast .tpd .*
14
14
import config .Printers .init as printer
15
- import reporting .trace as log
15
+ import reporting .trace . force as log
16
16
17
17
import Errors .*
18
18
@@ -664,7 +664,7 @@ object Semantic:
664
664
Hot
665
665
666
666
case Cold =>
667
- val error = AccessCold (field, trace.toVector)
667
+ val error = AccessCold (field)( trace.toVector)
668
668
reporter.report(error)
669
669
Hot
670
670
@@ -689,11 +689,11 @@ object Semantic:
689
689
val rhs = target.defTree.asInstanceOf [ValOrDefDef ].rhs
690
690
eval(rhs, ref, target.owner.asClass, cacheResult = true )
691
691
else
692
- val error = CallUnknown (field, trace.toVector)
692
+ val error = CallUnknown (field)( trace.toVector)
693
693
reporter.report(error)
694
694
Hot
695
695
else
696
- val error = AccessNonInit (target, trace.toVector)
696
+ val error = AccessNonInit (target)( trace.toVector)
697
697
reporter.report(error)
698
698
Hot
699
699
else
@@ -779,7 +779,7 @@ object Semantic:
779
779
780
780
case Cold =>
781
781
promoteArgs()
782
- val error = CallCold (meth, trace.toVector)
782
+ val error = CallCold (meth)( trace.toVector)
783
783
reporter.report(error)
784
784
Hot
785
785
@@ -820,7 +820,7 @@ object Semantic:
820
820
// try promoting the receiver as last resort
821
821
val hasErrors = Reporter .hasErrors { ref.promote(" try promote value to hot" ) }
822
822
if hasErrors then
823
- val error = CallUnknown (target, trace.toVector)
823
+ val error = CallUnknown (target)( trace.toVector)
824
824
reporter.report(error)
825
825
Hot
826
826
else if target.exists then
@@ -899,7 +899,7 @@ object Semantic:
899
899
Hot
900
900
else
901
901
// no source code available
902
- val error = CallUnknown (ctor, trace.toVector)
902
+ val error = CallUnknown (ctor)( trace.toVector)
903
903
reporter.report(error)
904
904
Hot
905
905
}
@@ -922,7 +922,7 @@ object Semantic:
922
922
yield
923
923
i + 1
924
924
925
- val error = UnsafeLeaking (trace.toVector, errors.head, nonHotOuterClass, indices)
925
+ val error = UnsafeLeaking (errors.head, nonHotOuterClass, indices)(trace.toVector )
926
926
reporter.report(error)
927
927
Hot
928
928
else
@@ -947,7 +947,7 @@ object Semantic:
947
947
tryLeak(warm, NoSymbol , args2)
948
948
949
949
case Cold =>
950
- val error = CallCold (ctor, trace.toVector)
950
+ val error = CallCold (ctor)( trace.toVector)
951
951
reporter.report(error)
952
952
Hot
953
953
@@ -1078,15 +1078,15 @@ object Semantic:
1078
1078
case Hot =>
1079
1079
1080
1080
case Cold =>
1081
- reporter.report(PromoteError (msg, trace.toVector))
1081
+ reporter.report(PromoteError (msg)( trace.toVector))
1082
1082
1083
1083
case thisRef : ThisRef =>
1084
1084
val emptyFields = thisRef.nonInitFields()
1085
1085
if emptyFields.isEmpty then
1086
1086
promoted.promoteCurrent(thisRef)
1087
1087
else
1088
1088
val fields = " Non initialized field(s): " + emptyFields.map(_.show).mkString(" , " ) + " ."
1089
- reporter.report(PromoteError (msg + " \n " + fields, trace.toVector))
1089
+ reporter.report(PromoteError (msg + " \n " + fields)( trace.toVector))
1090
1090
1091
1091
case warm : Warm =>
1092
1092
if ! promoted.contains(warm) then
@@ -1106,7 +1106,7 @@ object Semantic:
1106
1106
res.promote(" The function return value is not hot. Found = " + res.show + " ." )
1107
1107
}
1108
1108
if errors.nonEmpty then
1109
- reporter.report(UnsafePromotion (msg, trace.toVector, errors.head))
1109
+ reporter.report(UnsafePromotion (msg, errors.head)(trace.toVector ))
1110
1110
else
1111
1111
promoted.add(fun)
1112
1112
@@ -1156,7 +1156,7 @@ object Semantic:
1156
1156
if ! isHotSegment then
1157
1157
for member <- klass.info.decls do
1158
1158
if member.isClass then
1159
- val error = PromoteError (" Promotion cancelled as the value contains inner " + member.show + " ." , Vector .empty)
1159
+ val error = PromoteError (" Promotion cancelled as the value contains inner " + member.show + " ." )( Vector .empty)
1160
1160
reporter.report(error)
1161
1161
else if ! member.isType && ! member.isConstructor && ! member.is(Flags .Deferred ) then
1162
1162
given Trace = Trace .empty
@@ -1189,7 +1189,7 @@ object Semantic:
1189
1189
}
1190
1190
1191
1191
if errors.isEmpty then Nil
1192
- else UnsafePromotion (msg, trace.toVector, errors.head) :: Nil
1192
+ else UnsafePromotion (msg, errors.head)(trace.toVector ) :: Nil
1193
1193
}
1194
1194
1195
1195
end extension
@@ -1516,6 +1516,8 @@ object Semantic:
1516
1516
val cls = tmref.widenSingleton.classSymbol.asClass
1517
1517
if cls.isStaticOwner && ! cls.isContainedIn(promoted.entryClass) then
1518
1518
Hot
1519
+ else if cls.isStaticOwner && klass.isContainedIn(cls) then
1520
+ resolveThis(cls, thisV, klass)
1519
1521
else
1520
1522
cases(tmref.prefix, thisV, klass).select(tmref.symbol, receiver = tmref.prefix)
1521
1523
0 commit comments