Merge branch 'python-fixes'

This commit is contained in:
Andrey Vlasovskikh
2013-01-22 19:22:12 +04:00
33 changed files with 405 additions and 164 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
@@ -27,7 +27,7 @@ public interface PyTypeProvider {
PyType getReturnType(@NotNull PyFunction function, @Nullable PyQualifiedExpression callSite, @NotNull TypeEvalContext context);
@Nullable
PyType getIterationType(PyClass iterable);
PyType getIterationType(@NotNull PyClass iterable);
@Nullable
PyType getContextManagerVariableType(PyClass contextManager, PyExpression withExpression, TypeEvalContext context);
@@ -92,7 +92,7 @@ public class PyTypeProviderBase implements PyTypeProvider {
}
@Override
public PyType getIterationType(PyClass iterable) {
public PyType getIterationType(@NotNull PyClass iterable) {
return null;
}