@@ -868,8 +868,11 @@ class Semantic {
868
868
cases(tmref.prefix, thisV, klass, source).select(tmref.symbol, source)
869
869
870
870
case tp @ ThisType (tref) =>
871
- val value = resolveThis(tref.classSymbol.asClass, thisV, klass, source)
872
- Result (value, Errors .empty)
871
+ val cls = tref.classSymbol.asClass
872
+ if cls.isStaticOwner && ! klass.isContainedIn(cls) then Result (Hot , Nil )
873
+ else
874
+ val value = resolveThis(cls, thisV, klass, source)
875
+ Result (value, Errors .empty)
873
876
874
877
case _ : TermParamRef | _ : RecThis =>
875
878
// possible from checking effects of types
@@ -890,7 +893,12 @@ class Semantic {
890
893
case addr : Addr =>
891
894
val obj = heap(addr)
892
895
val outerCls = klass.owner.enclosingClass.asClass
893
- resolveThis(target, obj.outers(klass), outerCls, source)
896
+ if ! obj.outers.contains(klass) then
897
+ val error = PromoteError (" outer not yet initialized, target = " + target + " , klass = " + klass, source, trace.toVector)
898
+ report.error(error.show + error.stacktrace, source)
899
+ Hot
900
+ else
901
+ resolveThis(target, obj.outers(klass), outerCls, source)
894
902
case RefSet (refs) =>
895
903
refs.map(ref => resolveThis(target, ref, klass, source)).join
896
904
case fun : Fun =>
0 commit comments