diff --git a/python/testData/refactoring/extractsuperclass/noClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall.after.py b/python/testData/refactoring/extractsuperclass/noClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall.after.py new file mode 100644 index 000000000000..e5e250d7c381 --- /dev/null +++ b/python/testData/refactoring/extractsuperclass/noClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall.after.py @@ -0,0 +1,14 @@ +class Foo: + def foo(self): + pass + + +class Bar: + @staticmethod + def baz(): + foo = Foo() + foo.foo() + + +class Baz(Bar): + pass diff --git a/python/testData/refactoring/extractsuperclass/noClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall.before.py b/python/testData/refactoring/extractsuperclass/noClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall.before.py new file mode 100644 index 000000000000..d6d8972db5a7 --- /dev/null +++ b/python/testData/refactoring/extractsuperclass/noClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall.before.py @@ -0,0 +1,10 @@ +class Foo: + def foo(self): + pass + + +class Baz: + @staticmethod + def baz(): + foo = Foo() + foo.foo() diff --git a/python/testSrc/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassTest.java b/python/testSrc/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassTest.java index 5a4b99b67062..70ca607b1122 100644 --- a/python/testSrc/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassTest.java +++ b/python/testSrc/com/jetbrains/python/refactoring/classes/extractSuperclass/PyExtractSuperclassTest.java @@ -239,4 +239,10 @@ public class PyExtractSuperclassTest extends PyClassRefactoringTest { String expected = psi_mgr.findFile(LocalFileSystem.getInstance().findFileByIoFile(expected_file)).getText().trim(); assertEquals(expected, result); } + + // PY-46099 + public void testNoClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall() { + runWithLanguageLevel(LanguageLevel.getLatest(), + () -> doSimpleTest("Baz", "Bar", null, true, false, ".baz")); + } } \ No newline at end of file