mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 13:20:53 +07:00
inline: check constructors separately from class (IDEA-180820)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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.create<caret>Instance();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 <b><code>SomeClass.SomeClass()</code></b> that is used in inlined method is not accessible from call site(s) in method <b><code>InlineWithPrivateConstructorAccessMain.main(String...)</code></b>");
|
||||
}
|
||||
|
||||
public void testSuperCallWhenUnqualifiedInline() {
|
||||
doTestInlineThisOnly();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user