From 83dc1fbc2d696b96a20bfce246972bc2052662dd Mon Sep 17 00:00:00 2001 From: AMalykh Date: Mon, 1 Apr 2019 14:41:37 +0300 Subject: [PATCH] PY-15603 Initial implementation by Artem Malykh (squashed) GitOrigin-RevId: b8b6addb65ad2b6b52c3a0c84ef43c3986778077 --- .../python/actions/PyQualifiedNameProvider.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/python/src/com/jetbrains/python/actions/PyQualifiedNameProvider.java b/python/src/com/jetbrains/python/actions/PyQualifiedNameProvider.java index 98489650fcf9..b6f8f89f8a6c 100644 --- a/python/src/com/jetbrains/python/actions/PyQualifiedNameProvider.java +++ b/python/src/com/jetbrains/python/actions/PyQualifiedNameProvider.java @@ -30,6 +30,9 @@ import java.util.Collection; public class PyQualifiedNameProvider implements QualifiedNameProvider { + + public static final char SEPARATOR = '.'; + @Override public PsiElement adjustElementToCopy(PsiElement element) { return element instanceof PyClass || element instanceof PyFunction ? element : null; @@ -44,11 +47,11 @@ public class PyQualifiedNameProvider implements QualifiedNameProvider { if (element instanceof PyFunction) { final PyClass containingClass = ((PyFunction)element).getContainingClass(); if (containingClass != null) { - return containingClass.getQualifiedName() + "#" + ((PyFunction)element).getName(); + return containingClass.getQualifiedName() + SEPARATOR + ((PyFunction)element).getName(); } else { return ((PyFunction)element).getQualifiedName(); - } + } } return null; } @@ -64,12 +67,13 @@ public class PyQualifiedNameProvider implements QualifiedNameProvider { if (!functions.isEmpty()) { return ContainerUtil.getFirstItem(functions); } - final int sharpIdx = fqn.indexOf("#"); + final int sharpIdx = fqn.lastIndexOf(SEPARATOR); + if (sharpIdx > -1) { - final String className = StringUtil.getPackageName(fqn, '#'); + final String className = StringUtil.getPackageName(fqn, SEPARATOR); aClass = PyClassNameIndex.findClass(className, project); if (aClass != null) { - final String memberName = StringUtil.getShortName(fqn, '#'); + final String memberName = StringUtil.getShortName(fqn, SEPARATOR); final PyClass nestedClass = aClass.findNestedClass(memberName, false); if (nestedClass != null) return nestedClass; final PyFunction methodByName = aClass.findMethodByName(memberName, false, null);