diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/TransformationMethodVisitor.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/TransformationMethodVisitor.java index 14e784fb83d..9c457ce9978 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/TransformationMethodVisitor.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/TransformationMethodVisitor.java @@ -68,7 +68,10 @@ public abstract class TransformationMethodVisitor extends MethodVisitor { // In case of empty instructions list MethodNode.accept doesn't call visitLocalVariables of delegate // So we just do it here - if (methodNode.instructions.size() == 0) { + if (methodNode.instructions.size() == 0 + // MethodNode does not create a list of variables for abstract methods, so we would get NPE in accept() instead + && (!(delegate instanceof MethodNode) || (methodNode.access & Opcodes.ACC_ABSTRACT) == 0) + ) { List localVariables = methodNode.localVariables; // visits local variables int n = localVariables == null ? 0 : localVariables.size();