From a77b51054b2bf69d3ce2c97ef29722e4e3b8cfc6 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Tue, 24 Mar 2015 18:58:53 +0300 Subject: [PATCH] Compeltion for matrix multiplication methods (PY-15390) --- .../src/com/jetbrains/python/PyNames.java | 17 ++++++++++++++++- python/testData/completion/matMul.after.py | 2 ++ python/testData/completion/matMul.py | 2 ++ .../com/jetbrains/python/Py3CompletionTest.java | 10 ++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 python/testData/completion/matMul.after.py create mode 100644 python/testData/completion/matMul.py diff --git a/python/psi-api/src/com/jetbrains/python/PyNames.java b/python/psi-api/src/com/jetbrains/python/PyNames.java index 20a37449454e..d41d00baed8c 100644 --- a/python/psi-api/src/com/jetbrains/python/PyNames.java +++ b/python/psi-api/src/com/jetbrains/python/PyNames.java @@ -357,8 +357,23 @@ public class PyNames { .put("__round__", new BuiltinDescription("(self, n=None)")) .build(); + public static ImmutableMap PY35_BUILTIN_METHODS = ImmutableMap.builder() + .putAll(PY3_BUILTIN_METHODS) + .put("__imatmul__", _self_other_descr) + .put("__matmul__", _self_other_descr) + .put("__rmatmul__", _self_other_descr) + .build(); + public static ImmutableMap getBuiltinMethods(LanguageLevel level) { - return level.isPy3K() ? PY3_BUILTIN_METHODS : PY2_BUILTIN_METHODS; + if (level.isAtLeast(LanguageLevel.PYTHON35)) { + return PY35_BUILTIN_METHODS; + } + else if (level.isAtLeast(LanguageLevel.PYTHON30)) { + return PY3_BUILTIN_METHODS; + } + else { + return PY2_BUILTIN_METHODS; + } } // canonical names, not forced by interpreter diff --git a/python/testData/completion/matMul.after.py b/python/testData/completion/matMul.after.py new file mode 100644 index 000000000000..8d677c50431a --- /dev/null +++ b/python/testData/completion/matMul.after.py @@ -0,0 +1,2 @@ +class C: + def __matmul__(self, other): diff --git a/python/testData/completion/matMul.py b/python/testData/completion/matMul.py new file mode 100644 index 000000000000..e18502dd6752 --- /dev/null +++ b/python/testData/completion/matMul.py @@ -0,0 +1,2 @@ +class C: + def __matmul diff --git a/python/testSrc/com/jetbrains/python/Py3CompletionTest.java b/python/testSrc/com/jetbrains/python/Py3CompletionTest.java index 51b463948b03..ea154cb1084c 100644 --- a/python/testSrc/com/jetbrains/python/Py3CompletionTest.java +++ b/python/testSrc/com/jetbrains/python/Py3CompletionTest.java @@ -141,4 +141,14 @@ public class Py3CompletionTest extends PyTestCase { public void testNotImportedSubmodulesOfNamespacePackage() { doMultiFileTest(); } + + // PY-15390 + public void testMatMul() { + runWithLanguageLevel(LanguageLevel.PYTHON35, new Runnable() { + @Override + public void run() { + doTest(); + } + }); + } }