@@ -12,7 +12,7 @@ import NameKinds.SuperAccessorName
1212
1313import ast .tpd .*
1414import config .Printers .init as printer
15- import reporting .trace as log
15+ import reporting .trace . force as log
1616
1717import Errors .*
1818
@@ -664,7 +664,7 @@ object Semantic:
664664 Hot
665665
666666 case Cold =>
667- val error = AccessCold (field, trace.toVector)
667+ val error = AccessCold (field)( trace.toVector)
668668 reporter.report(error)
669669 Hot
670670
@@ -689,11 +689,11 @@ object Semantic:
689689 val rhs = target.defTree.asInstanceOf [ValOrDefDef ].rhs
690690 eval(rhs, ref, target.owner.asClass, cacheResult = true )
691691 else
692- val error = CallUnknown (field, trace.toVector)
692+ val error = CallUnknown (field)( trace.toVector)
693693 reporter.report(error)
694694 Hot
695695 else
696- val error = AccessNonInit (target, trace.toVector)
696+ val error = AccessNonInit (target)( trace.toVector)
697697 reporter.report(error)
698698 Hot
699699 else
@@ -779,7 +779,7 @@ object Semantic:
779779
780780 case Cold =>
781781 promoteArgs()
782- val error = CallCold (meth, trace.toVector)
782+ val error = CallCold (meth)( trace.toVector)
783783 reporter.report(error)
784784 Hot
785785
@@ -820,7 +820,7 @@ object Semantic:
820820 // try promoting the receiver as last resort
821821 val hasErrors = Reporter .hasErrors { ref.promote(" try promote value to hot" ) }
822822 if hasErrors then
823- val error = CallUnknown (target, trace.toVector)
823+ val error = CallUnknown (target)( trace.toVector)
824824 reporter.report(error)
825825 Hot
826826 else if target.exists then
@@ -899,7 +899,7 @@ object Semantic:
899899 Hot
900900 else
901901 // no source code available
902- val error = CallUnknown (ctor, trace.toVector)
902+ val error = CallUnknown (ctor)( trace.toVector)
903903 reporter.report(error)
904904 Hot
905905 }
@@ -922,7 +922,7 @@ object Semantic:
922922 yield
923923 i + 1
924924
925- val error = UnsafeLeaking (trace.toVector, errors.head, nonHotOuterClass, indices)
925+ val error = UnsafeLeaking (errors.head, nonHotOuterClass, indices)(trace.toVector )
926926 reporter.report(error)
927927 Hot
928928 else
@@ -947,7 +947,7 @@ object Semantic:
947947 tryLeak(warm, NoSymbol , args2)
948948
949949 case Cold =>
950- val error = CallCold (ctor, trace.toVector)
950+ val error = CallCold (ctor)( trace.toVector)
951951 reporter.report(error)
952952 Hot
953953
@@ -1078,15 +1078,15 @@ object Semantic:
10781078 case Hot =>
10791079
10801080 case Cold =>
1081- reporter.report(PromoteError (msg, trace.toVector))
1081+ reporter.report(PromoteError (msg)( trace.toVector))
10821082
10831083 case thisRef : ThisRef =>
10841084 val emptyFields = thisRef.nonInitFields()
10851085 if emptyFields.isEmpty then
10861086 promoted.promoteCurrent(thisRef)
10871087 else
10881088 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))
10901090
10911091 case warm : Warm =>
10921092 if ! promoted.contains(warm) then
@@ -1106,7 +1106,7 @@ object Semantic:
11061106 res.promote(" The function return value is not hot. Found = " + res.show + " ." )
11071107 }
11081108 if errors.nonEmpty then
1109- reporter.report(UnsafePromotion (msg, trace.toVector, errors.head))
1109+ reporter.report(UnsafePromotion (msg, errors.head)(trace.toVector ))
11101110 else
11111111 promoted.add(fun)
11121112
@@ -1156,7 +1156,7 @@ object Semantic:
11561156 if ! isHotSegment then
11571157 for member <- klass.info.decls do
11581158 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)
11601160 reporter.report(error)
11611161 else if ! member.isType && ! member.isConstructor && ! member.is(Flags .Deferred ) then
11621162 given Trace = Trace .empty
@@ -1189,7 +1189,7 @@ object Semantic:
11891189 }
11901190
11911191 if errors.isEmpty then Nil
1192- else UnsafePromotion (msg, trace.toVector, errors.head) :: Nil
1192+ else UnsafePromotion (msg, errors.head)(trace.toVector ) :: Nil
11931193 }
11941194
11951195 end extension
@@ -1516,6 +1516,8 @@ object Semantic:
15161516 val cls = tmref.widenSingleton.classSymbol.asClass
15171517 if cls.isStaticOwner && ! cls.isContainedIn(promoted.entryClass) then
15181518 Hot
1519+ else if cls.isStaticOwner && klass.isContainedIn(cls) then
1520+ resolveThis(cls, thisV, klass)
15191521 else
15201522 cases(tmref.prefix, thisV, klass).select(tmref.symbol, receiver = tmref.prefix)
15211523
0 commit comments