@@ -479,6 +479,9 @@ object Semantic:
479
479
def add (node : Tree ): Trace = trace :+ node
480
480
def toVector : Vector [Tree ] = trace
481
481
482
+ def show (using trace : Trace , ctx : Context ): String = buildStacktrace(trace, " \n " )
483
+
484
+ def position (using trace : Trace ): Tree = trace.last
482
485
type Trace = Trace .Trace
483
486
484
487
import Trace .*
@@ -693,15 +696,15 @@ object Semantic:
693
696
Hot
694
697
else
695
698
if ref.klass.isSubClass(receiver.widenSingleton.classSymbol) then
696
- report.error(" Unexpected resolution failure: ref.klass = " + ref.klass.show + " , field = " + field.show + buildStacktrace(trace.toVector, " \n " ) )
699
+ report.error(" [Internal error] Unexpected resolution failure: ref.klass = " + ref.klass.show + " , field = " + field.show + Trace .show, Trace .position )
697
700
Hot
698
701
else
699
702
// This is possible due to incorrect type cast.
700
703
// See tests/init/pos/Type.scala
701
704
Hot
702
705
703
706
case fun : Fun =>
704
- report.error(" [Internal error] unexpected tree in selecting a function, fun = " + fun.expr.show, fun.expr)
707
+ report.error(" [Internal error] unexpected tree in selecting a function, fun = " + fun.expr.show + Trace .show , fun.expr)
705
708
Hot
706
709
707
710
case RefSet (refs) =>
@@ -826,7 +829,7 @@ object Semantic:
826
829
value.select(target, receiver, needResolve = false )
827
830
else
828
831
if ref.klass.isSubClass(receiver.widenSingleton.classSymbol) then
829
- report.error(" Unexpected resolution failure: ref.klass = " + ref.klass.show + " , meth = " + meth.show + buildStacktrace(trace.toVector, " \n " ) )
832
+ report.error(" Unexpected resolution failure: ref.klass = " + ref.klass.show + " , meth = " + meth.show + Trace .show, Trace .position )
830
833
Hot
831
834
else
832
835
// This is possible due to incorrect type cast.
@@ -856,7 +859,7 @@ object Semantic:
856
859
857
860
value match {
858
861
case Hot | Cold | _ : RefSet | _ : Fun =>
859
- report.error(" unexpected constructor call, meth = " + ctor + " , value = " + value, trace.toVector.last )
862
+ report.error(" [Internal error] unexpected constructor call, meth = " + ctor + " , value = " + value + Trace .show, Trace .position )
860
863
Hot
861
864
862
865
case ref : Warm if ref.isPopulatingParams =>
@@ -963,7 +966,7 @@ object Semantic:
963
966
warm
964
967
965
968
case Fun (body, thisV, klass) =>
966
- report.error(" [Internal error] unexpected tree in instantiating a function, fun = " + body.show, trace.toVector.last )
969
+ report.error(" [Internal error] unexpected tree in instantiating a function, fun = " + body.show + Trace .show, Trace .position )
967
970
Hot
968
971
969
972
case RefSet (refs) =>
@@ -983,7 +986,7 @@ object Semantic:
983
986
case Hot => Hot
984
987
case ref : Ref => ref.objekt.field(sym)
985
988
case _ =>
986
- report.error(" [Internal error] unexpected this value accessing local variable, sym = " + sym.show + " , thisValue = " + thisValue2.show, trace.toVector.last )
989
+ report.error(" [Internal error] unexpected this value accessing local variable, sym = " + sym.show + " , thisValue = " + thisValue2.show + Trace .show, Trace .position )
987
990
Hot
988
991
else if sym.is(Flags .Param ) then
989
992
Hot
@@ -1001,7 +1004,7 @@ object Semantic:
1001
1004
case ref : Ref => eval(vdef.rhs, ref, enclosingClass)
1002
1005
1003
1006
case _ =>
1004
- report.error(" [Internal error] unexpected this value when accessing local variable, sym = " + sym.show + " , thisValue = " + thisValue2.show, trace.toVector.last )
1007
+ report.error(" [Internal error] unexpected this value when accessing local variable, sym = " + sym.show + " , thisValue = " + thisValue2.show + Trace .show, Trace .position )
1005
1008
Hot
1006
1009
end match
1007
1010
@@ -1469,7 +1472,7 @@ object Semantic:
1469
1472
Hot
1470
1473
1471
1474
case _ =>
1472
- report.error(" [Internal error] unexpected tree" , expr)
1475
+ report.error(" [Internal error] unexpected tree" + Trace .show , expr)
1473
1476
Hot
1474
1477
1475
1478
/** Handle semantics of leaf nodes */
@@ -1498,7 +1501,7 @@ object Semantic:
1498
1501
Hot
1499
1502
1500
1503
case _ =>
1501
- report.error(" [Internal error] unexpected type " + tp, trace.toVector.last )
1504
+ report.error(" [Internal error] unexpected type " + tp + Trace .show, Trace .position )
1502
1505
Hot
1503
1506
}
1504
1507
@@ -1513,15 +1516,15 @@ object Semantic:
1513
1516
val obj = ref.objekt
1514
1517
val outerCls = klass.owner.lexicallyEnclosingClass.asClass
1515
1518
if ! obj.hasOuter(klass) then
1516
- val error = PromoteError ( " [Internal error] outer not yet initialized, target = " + target + " , klass = " + klass + " , object = " + obj, trace.toVector)
1517
- report.error(error.show, trace.toVector.last )
1519
+ val error = " [Internal error] outer not yet initialized, target = " + target + " , klass = " + klass + " , object = " + obj + Trace .show
1520
+ report.error(error, Trace .position )
1518
1521
Hot
1519
1522
else
1520
1523
resolveThis(target, obj.outer(klass), outerCls)
1521
1524
case RefSet (refs) =>
1522
1525
refs.map(ref => resolveThis(target, ref, klass)).join
1523
1526
case fun : Fun =>
1524
- report.error(" [Internal error] unexpected thisV = " + thisV + " , target = " + target.show + " , klass = " + klass.show, trace.toVector.last )
1527
+ report.error(" [Internal error] unexpected thisV = " + thisV + " , target = " + target.show + " , klass = " + klass.show + Trace .show, Trace .position )
1525
1528
Cold
1526
1529
case Cold => Cold
1527
1530
0 commit comments