mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-11127 Consider case where only class name is used in raise statment
This commit is contained in:
@@ -28,7 +28,6 @@ import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.ScrollType;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
@@ -272,13 +271,16 @@ public class PyOverrideImplementUtil {
|
||||
final PyRaiseStatement raiseStatement = (PyRaiseStatement)statement;
|
||||
final PyExpression[] expressions = raiseStatement.getExpressions();
|
||||
if (expressions.length > 0) {
|
||||
final PyExpression expression = expressions[0];
|
||||
if (expression instanceof PyCallExpression) {
|
||||
final PyExpression callee = ((PyCallExpression)expression).getCallee();
|
||||
if (callee instanceof PyReferenceExpression && Comparing.equal(callee.getName(), "NotImplementedError")) {
|
||||
final PyExpression firstExpression = expressions[0];
|
||||
if (firstExpression instanceof PyCallExpression) {
|
||||
final PyExpression callee = ((PyCallExpression)firstExpression).getCallee();
|
||||
if (callee != null && callee.getText().equals(PyNames.NOT_IMPLEMENTED_ERROR)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (firstExpression.getText().equals(PyNames.NOT_IMPLEMENTED_ERROR)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
class A:
|
||||
def m(self):
|
||||
"""Abstract method."""
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class B(A):
|
||||
pass
|
||||
@@ -0,0 +1,9 @@
|
||||
class A:
|
||||
def m(self):
|
||||
"""Abstract method."""
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class B(A):
|
||||
def m(self):
|
||||
pass
|
||||
@@ -126,6 +126,10 @@ public class PyOverrideTest extends PyTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
// PY-11127
|
||||
public void testOverriddenMethodRaisesNotImplementedErrorNoInstance() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testPy3k() {
|
||||
doTest3k();
|
||||
|
||||
Reference in New Issue
Block a user