Support for subclasses of namedtuple defined in the current file (PY-4345)

This commit is contained in:
Andrey Vlasovskikh
2013-01-15 16:34:56 +04:00
parent f233414cfc
commit 869b28c4f9
14 changed files with 135 additions and 63 deletions
@@ -2,31 +2,41 @@ package com.jetbrains.python.psi;
import com.intellij.psi.PsiElement;
import com.jetbrains.python.psi.impl.PyQualifiedName;
import com.jetbrains.python.psi.types.PyClassType;
import org.jetbrains.annotations.Nullable;
/**
* @author yole
*/
public class PyClassRef {
@Nullable
private final PsiElement myElement;
@Nullable
private final String myQName;
@Nullable private final PsiElement myElement;
@Nullable private final String myQName;
@Nullable private final PyClassType myType;
public PyClassRef(@Nullable PsiElement element) {
myElement = element;
myQName = null;
myType = null;
}
public PyClassRef(@Nullable String qName) {
myElement = null;
myQName = qName;
myType = null;
}
public PyClassRef(@Nullable PyClassType type) {
myElement = null;
myQName = null;
myType = type;
}
@Nullable
public PyClass getPyClass() {
return myElement instanceof PyClass ? (PyClass) myElement : null;
if (myElement instanceof PyClass) {
return (PyClass) myElement;
}
return null;
}
@Nullable
@@ -34,26 +44,40 @@ public class PyClassRef {
return myElement;
}
@Nullable
public PyClassType getType() {
return myType;
}
@Nullable
public String getClassName() {
if (myElement instanceof PyClass) {
return ((PyClass)myElement).getName();
}
if (myQName != null) {
else if (myQName != null) {
final PyQualifiedName qname = PyQualifiedName.fromDottedString(myQName);
if (qname != null) {
return qname.getLastComponent();
}
}
else if (myType != null) {
return myType.getName();
}
return null;
}
@Nullable
public String getQualifiedName() {
if (myQName != null) {
if (myElement instanceof PyClass) {
return ((PyClass)myElement).getQualifiedName();
}
else if (myQName != null) {
return myQName;
}
return myElement instanceof PyClass ? ((PyClass)myElement).getQualifiedName() : null;
else if (myType != null) {
return myType.getName();
}
return null;
}
@Override