diff --git a/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java b/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java index 3e17130155cf..35bca3d51ffd 100644 --- a/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java +++ b/java/compiler/instrumentation-util/src/com/intellij/compiler/notNullVerification/NotNullVerifyingInstrumenter.java @@ -61,7 +61,7 @@ public class NotNullVerifyingInstrumenter extends ClassVisitor implements Opcode NotNullVerifyingInstrumenter instrumenter = new NotNullVerifyingInstrumenter(writer, reader, notNullAnnotations); reader.accept(instrumenter, 0); instrumenter.myAuxGenerator.generateReportingMethod(writer); - return instrumenter.isModification(); + return instrumenter.myIsModification; } private static Map> getAllParameterNames(ClassReader reader) { @@ -103,10 +103,6 @@ public class NotNullVerifyingInstrumenter extends ClassVisitor implements Opcode return methodParamNames; } - public boolean isModification() { - return myIsModification; - } - @Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { super.visit(version, access, name, signature, superName, interfaces); @@ -116,6 +112,7 @@ public class NotNullVerifyingInstrumenter extends ClassVisitor implements Opcode @Override public void visitOuterClass(String owner, String name, String desc) { + super.visitOuterClass(owner, name, desc); myInner = true; } diff --git a/java/java-tests/testData/compiler/notNullVerification/EnclosingClass.java b/java/java-tests/testData/compiler/notNullVerification/EnclosingClass.java new file mode 100644 index 000000000000..385117b893b3 --- /dev/null +++ b/java/java-tests/testData/compiler/notNullVerification/EnclosingClass.java @@ -0,0 +1,9 @@ +import org.jetbrains.annotations.NotNull; + +public class EnclosingClass { + public static Object main() { + return new Object() { + void foo(@NotNull String s) {} + }; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java b/java/java-tests/testSrc/com/intellij/java/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java index 43e390e6c5a9..6e535ed7eef2 100644 --- a/java/java-tests/testSrc/com/intellij/java/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java +++ b/java/java-tests/testSrc/com/intellij/java/compiler/notNullVerification/NotNullVerifyingInstrumenterTest.java @@ -207,6 +207,12 @@ public class NotNullVerifyingInstrumenterTest extends UsefulTestCase { verifyCallThrowsException("Argument 0 for @NotNull parameter of MalformedBytecode$NullTest2.handle must not be null", null, testClass.getMethod("main")); } + public void testEnclosingClass() throws Exception { + Class testClass = prepareTest(); + Object obj = testClass.getMethod("main").invoke(null); + assertEquals(testClass, obj.getClass().getEnclosingClass()); + } + public void testLocalClassImplicitParameters() throws Exception { Class test = prepareTest(true, "NotNull"); Object instance = test.newInstance();