From 2eab0256599801bcb7c3e9dc7733fce00f5bd24f Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Thu, 18 Apr 2013 21:29:49 +0400 Subject: [PATCH] Added test for MRO in complicated diamond hierarchy (PY-4183) --- .../classMRO/ComplicatedDiamond.py | 30 +++++++++++++++++++ .../python/codeInsight/PyClassMROTest.java | 5 ++++ 2 files changed, 35 insertions(+) create mode 100644 python/testData/codeInsight/classMRO/ComplicatedDiamond.py diff --git a/python/testData/codeInsight/classMRO/ComplicatedDiamond.py b/python/testData/codeInsight/classMRO/ComplicatedDiamond.py new file mode 100644 index 000000000000..e9466b880a3a --- /dev/null +++ b/python/testData/codeInsight/classMRO/ComplicatedDiamond.py @@ -0,0 +1,30 @@ +class A(object): + pass + + +class B(A): + pass + + +class C(A): + pass + + +class D(A): + pass + + +class E(B): + pass + + +class F(B): + pass + + +class G(C, D): + pass + + +class H(E, F, G): + pass diff --git a/python/testSrc/com/jetbrains/python/codeInsight/PyClassMROTest.java b/python/testSrc/com/jetbrains/python/codeInsight/PyClassMROTest.java index 48904fd4e3bf..c506969839f6 100644 --- a/python/testSrc/com/jetbrains/python/codeInsight/PyClassMROTest.java +++ b/python/testSrc/com/jetbrains/python/codeInsight/PyClassMROTest.java @@ -47,6 +47,11 @@ public class PyClassMROTest extends PyTestCase { assertMRO(getClass("G"), "E", "F", "object"); } + // PY-4183 + public void testComplicatedDiamond() { + assertMRO(getClass("H"), "E", "F", "B", "G", "C", "D", "A", "object"); + } + public void assertMRO(@NotNull PyClass cls, @NotNull String... mro) { final List types = cls.getAncestorTypes(TypeEvalContext.fastStubOnly(null)); final List classNames = new ArrayList();