Commit 43817db7 authored by Semyon Proshev's avatar Semyon Proshev
Browse files

Reduce code duplication (PY-30747)

parent cf26af17
Showing with 16 additions and 19 deletions
+16 -19
......@@ -31,34 +31,31 @@ public interface PyCallExpression extends PyCallSiteExpression {
@Nullable
@Override
default PyExpression getReceiver(@Nullable PyCallable resolvedCallee) {
final PyExpression callee = getCallee();
if (resolvedCallee instanceof PyFunction) {
final PyFunction function = (PyFunction)resolvedCallee;
if (!PyNames.NEW.equals(function.getName()) && function.getModifier() == PyFunction.Modifier.STATICMETHOD) {
final String functionName = resolvedCallee.getName();
if (!PyNames.NEW.equals(functionName) && ((PyFunction)resolvedCallee).getModifier() == PyFunction.Modifier.STATICMETHOD) {
return null;
}
}
final PyExpression callee = getCallee();
if (callee instanceof PyQualifiedExpression) {
final PyQualifiedExpression qualifiedCallee = (PyQualifiedExpression)callee;
if (callee instanceof PyQualifiedExpression) {
final String qualifiedCalleeName = callee.getName();
if (resolvedCallee instanceof PyFunction &&
qualifiedCallee.isQualified() &&
PyNames.INIT.equals(resolvedCallee.getName()) &&
!PyNames.INIT.equals(qualifiedCallee.getName())) {
return null;
}
if (((PyQualifiedExpression)callee).isQualified() &&
PyNames.INIT.equals(functionName) &&
!PyNames.INIT.equals(qualifiedCalleeName)) {
return null;
}
if (resolvedCallee instanceof PyFunction &&
PyNames.NEW.equals(resolvedCallee.getName()) &&
!PyNames.NEW.equals(qualifiedCallee.getName())) {
return callee;
if (PyNames.NEW.equals(functionName) && !PyNames.NEW.equals(qualifiedCalleeName)) {
return callee;
}
}
return qualifiedCallee.getQualifier();
}
return null;
return callee instanceof PyQualifiedExpression ? ((PyQualifiedExpression)callee).getQualifier() : null;
}
@NotNull
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment