diff --git a/java/java-impl/src/com/intellij/refactoring/inline/ReferencedElementsCollector.java b/java/java-impl/src/com/intellij/refactoring/inline/ReferencedElementsCollector.java index aff82874d45e..16eb7010a4fe 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/ReferencedElementsCollector.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/ReferencedElementsCollector.java @@ -38,6 +38,15 @@ public class ReferencedElementsCollector extends JavaRecursiveElementVisitor { super.visitReferenceElement(reference); } + @Override + public void visitNewExpression(PsiNewExpression expression) { + PsiMethod method = expression.resolveMethod(); + if (method != null) { + checkAddMember(method); + } + super.visitNewExpression(expression); + } + protected void checkAddMember(@NotNull final PsiMember member) { myReferencedMembers.add(member); } diff --git a/java/java-tests/testData/refactoring/inlineMethod/InaccessibleConstructorInInlinedMethod.java b/java/java-tests/testData/refactoring/inlineMethod/InaccessibleConstructorInInlinedMethod.java new file mode 100644 index 000000000000..bc95ef24ea21 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineMethod/InaccessibleConstructorInInlinedMethod.java @@ -0,0 +1,21 @@ +class InlineWithPrivateConstructorAccess { + public static class SomeClass { + + private SomeClass() { } + + public static SomeClass createInstance() { + return new SomeClass(); + } + + } + +} + +class InlineWithPrivateConstructorAccessMain { + + public static void main(String... args) { + InlineWithPrivateConstructorAccess.SomeClass obj = InlineWithPrivateConstructorAccess.SomeClass.createInstance(); + + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineMethodTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineMethodTest.java index c845fbe3fca8..5bf5dfcf1ed9 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineMethodTest.java @@ -335,6 +335,10 @@ public class InlineMethodTest extends LightRefactoringTestCase { doTestConflict("Inlined method calls super.foo() which won't be accessible on qualifier c"); } + public void testInaccessibleConstructorInInlinedMethod() { + doTestConflict("Constructor SomeClass.SomeClass() that is used in inlined method is not accessible from call site(s) in method InlineWithPrivateConstructorAccessMain.main(String...)"); + } + public void testSuperCallWhenUnqualifiedInline() { doTestInlineThisOnly(); }