diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java index d3b9e412346..8930af5f34a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java @@ -348,11 +348,15 @@ public abstract class CodegenContext { return parentContext; } + public boolean isContextWithUninitializedThis() { + return false; + } + @Nullable public CodegenContext getEnclosingClassContext() { CodegenContext cur = getParentContext(); while (cur != null) { - if (cur instanceof ConstructorContext && !(((ConstructorContext) cur).isThisInitialized())) { + if (cur.isContextWithUninitializedThis()) { // If the current context is a constructor with uninitialized 'this', // skip it and the corresponding class context CodegenContext parent = cur.getParentContext(); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/ConstructorContext.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/ConstructorContext.java index e345694874f..30010764b5e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/ConstructorContext.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/ConstructorContext.java @@ -59,6 +59,11 @@ public class ConstructorContext extends MethodContext { this.thisInitialized = thisInitialized; } + @Override + public boolean isContextWithUninitializedThis() { + return !isThisInitialized(); + } + @Override public String toString() { return "Constructor: " + (isThisInitialized() ? "" : "UNINITIALIZED ") + getContextDescriptor();