From 0763dc23f0be50be17071987900ef4f7dc471a0c Mon Sep 17 00:00:00 2001 From: "andrey.matveev" Date: Thu, 31 Dec 2020 16:03:45 +0700 Subject: [PATCH] PY-46099 Fix ClassCastException in FlaskSQLAlchemyTypeProvider (cherry picked from commit f939dd3ae0b9811a7389c82408f8e973bf5ef2a3) IJ-MR-5058 GitOrigin-RevId: 6b1b00fe2b7c31756a213d7729bd273095cfc9b6 --- ...piedFunctionWithClassInitAndMethodCall.after.py | 14 ++++++++++++++ ...iedFunctionWithClassInitAndMethodCall.before.py | 10 ++++++++++ .../extractSuperclass/PyExtractSuperclassTest.java | 6 ++++++ 3 files changed, 30 insertions(+) create mode 100644 python/testData/refactoring/extractsuperclass/noClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall.after.py create mode 100644 python/testData/refactoring/extractsuperclass/noClassCastExceptionInCopiedFunctionWithClassInitAndMethodCall.before.py 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