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 e466c663063..09cae8af8d4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java @@ -386,8 +386,10 @@ public abstract class CodegenContext { @Nullable JetSuperExpression superCallExpression ) { DeclarationDescriptor enclosing = descriptor.getContainingDeclaration(); - if (!hasThisDescriptor() || enclosing == getThisDescriptor() || - enclosing == getClassOrPackageParentContext().getContextDescriptor()) { + if (!isInlineMethodContext() && ( + !hasThisDescriptor() || + enclosing == getThisDescriptor() || + enclosing == getClassOrPackageParentContext().getContextDescriptor())) { return descriptor; } @@ -478,4 +480,19 @@ public abstract class CodegenContext { private static boolean isStaticField(@NotNull StackValue value) { return value instanceof StackValue.Field && ((StackValue.Field) value).isStaticPut; } + + private boolean isInsideInliningContext() { + CodegenContext current = this; + while (current != null) { + if (current instanceof MethodContext && ((MethodContext) current).isInlineFunction()) { + return true; + } + current = current.getParentContext(); + } + return false; + } + + private boolean isInlineMethodContext() { + return this instanceof MethodContext && ((MethodContext) this).isInlineFunction(); + } }