Check that modifier wrapping call is for function which modifier is calculating (PY-30182)

This commit is contained in:
Semyon Proshev
2018-11-08 16:21:39 +03:00
parent 60f087a7cd
commit 50f900252c
4 changed files with 18 additions and 1 deletions
@@ -811,7 +811,8 @@ public class PyFunctionImpl extends PyBaseElementImpl<PyFunctionStub> implements
.skipWhile(siblingStub -> !stub.equals(siblingStub))
.transform(nextSiblingStub -> as(nextSiblingStub, PyTargetExpressionStub.class))
.filter(Objects::nonNull)
.filter(nextSiblingStub -> nextSiblingStub.getInitializerType() == PyTargetExpressionStub.InitializerType.CallExpression)
.filter(nextSiblingStub -> nextSiblingStub.getInitializerType() == PyTargetExpressionStub.InitializerType.CallExpression &&
Objects.equals(stub.getName(), nextSiblingStub.getName()))
.transform(PyTargetExpressionStub::getInitializer)
.transform(
initializerName -> {
@@ -0,0 +1,3 @@
from b import A
A().my_method(10)
@@ -0,0 +1,8 @@
class A:
def my_method(self, p):
pass
def one_more(p):
pass
one_more = staticmethod(one_more)
@@ -366,4 +366,9 @@ public class PyArgumentListInspectionTest extends PyInspectionTestCase {
public void testInitializingTypeVar() {
doTest();
}
// PY-30182
public void testAnotherMethodIsWrappedIntoStatic() {
doMultiFileTest();
}
}