renamed resolveWithoutImplicits to getResolveContext (which is more meaningfull)

This commit is contained in:
Ekaterina Tuzova
2014-03-06 18:15:35 +04:00
parent 65e4c3430f
commit 66fb8155a1
14 changed files with 31 additions and 29 deletions
@@ -73,11 +73,11 @@ public class PyArgumentEqualDefaultInspection extends PyInspection {
if (list == null) {
return;
}
Callable func = node.resolveCalleeFunction(resolveWithoutImplicits());
Callable func = node.resolveCalleeFunction(getResolveContext());
if (func != null && hasSpecialCasedDefaults(func, node)) {
return;
}
CallArgumentsMapping result = list.analyzeCall(resolveWithoutImplicits());
CallArgumentsMapping result = list.analyzeCall(getResolveContext());
checkArguments(result, node.getArguments());
}
@@ -141,10 +141,10 @@ public class PyArgumentEqualDefaultInspection extends PyInspection {
}
else {
PsiReference keyRef = key instanceof PyReferenceExpression
? ((PyReferenceExpression) key).getReference(resolveWithoutImplicits())
? ((PyReferenceExpression) key).getReference(getResolveContext())
: key.getReference();
PsiReference defRef = defaultValue instanceof PyReferenceExpression
? ((PyReferenceExpression) defaultValue).getReference(resolveWithoutImplicits())
? ((PyReferenceExpression) defaultValue).getReference(getResolveContext())
: defaultValue.getReference();
if (keyRef != null && defRef != null) {
PsiElement keyResolve = keyRef.resolve();
@@ -71,7 +71,7 @@ public class PyArgumentListInspection extends PyInspection {
PyDecorator[] decorators = node.getDecorators();
for (PyDecorator deco : decorators) {
if (deco.hasArgumentList()) continue;
final PyCallExpression.PyMarkedCallee markedCallee = deco.resolveCallee(resolveWithoutImplicits());
final PyCallExpression.PyMarkedCallee markedCallee = deco.resolveCallee(getResolveContext());
if (markedCallee != null && !markedCallee.isImplicitlyResolved()) {
final Callable callable = markedCallee.getCallable();
int firstParamOffset = markedCallee.getImplicitOffset();
@@ -90,7 +90,7 @@ public class PyCallByClassInspection extends PyInspection {
PyClass qual_class = qual_class_type.getPyClass();
final PyArgumentList arglist = call.getArgumentList();
if (arglist != null) {
CallArgumentsMapping analysis = arglist.analyzeCall(resolveWithoutImplicits());
CallArgumentsMapping analysis = arglist.analyzeCall(getResolveContext());
final PyCallExpression.PyMarkedCallee markedCallee = analysis.getMarkedCallee();
if (markedCallee != null && markedCallee.getModifier() != STATICMETHOD) {
final List<PyParameter> params = PyUtil.getParameters(markedCallee.getCallable(), myTypeEvalContext);
@@ -58,7 +58,7 @@ public class PyDeprecationInspection extends PyInspection {
final PyExpression exceptClass = exceptPart.getExceptClass();
if (exceptClass != null && "ImportError".equals(exceptClass.getText())) return;
}
PsiElement resolveResult = node.getReference(resolveWithoutImplicits()).resolve();
PsiElement resolveResult = node.getReference(getResolveContext()).resolve();
String deprecationMessage = null;
if (resolveResult instanceof PyFunction) {
deprecationMessage = ((PyFunction) resolveResult).getDeprecationMessage();
@@ -58,7 +58,7 @@ public class PyExceptClausesOrderInspection extends PyInspection {
for (PyExceptPart exceptPart : exceptParts) {
PyExpression exceptClass = exceptPart.getExceptClass();
if (exceptClass instanceof PyReferenceExpression) {
PsiElement element = ((PyReferenceExpression) exceptClass).followAssignmentsChain(resolveWithoutImplicits()).getElement();
PsiElement element = ((PyReferenceExpression) exceptClass).followAssignmentsChain(getResolveContext()).getElement();
if (element instanceof PyClass) {
PyClass pyClass = (PyClass)element;
if (exceptClasses.contains(pyClass)) {
@@ -60,7 +60,7 @@ public class PyExceptionInheritInspection extends PyInspection {
if (expression instanceof PyCallExpression) {
PyExpression callee = ((PyCallExpression)expression).getCallee();
if (callee instanceof PyReferenceExpression) {
PsiElement psiElement = ((PyReferenceExpression)callee).getReference(resolveWithoutImplicits()).resolve();
PsiElement psiElement = ((PyReferenceExpression)callee).getReference(getResolveContext()).resolve();
if (psiElement instanceof PyClass) {
PyClass aClass = (PyClass) psiElement;
for (PyClassLikeType type : aClass.getAncestorTypes(myTypeEvalContext)) {
@@ -52,7 +52,7 @@ public abstract class PyInspectionVisitor extends PyElementVisitor {
myTypeEvalContext = context;
}
protected PyResolveContext resolveWithoutImplicits() {
protected PyResolveContext getResolveContext() {
return PyResolveContext.noImplicits().withTypeEvalContext(myTypeEvalContext);
}
@@ -124,7 +124,7 @@ public class PyPropertyDefinitionInspection extends PyInspection {
assert call != null : "Property has a null call assigned to it";
final PyArgumentList arglist = call.getArgumentList();
assert arglist != null : "Property call has null arglist";
CallArgumentsMapping analysis = arglist.analyzeCall(resolveWithoutImplicits());
CallArgumentsMapping analysis = arglist.analyzeCall(getResolveContext());
// we assume fget, fset, fdel, doc names
for (Map.Entry<PyExpression, PyNamedParameter> entry: analysis.getPlainMappedParams().entrySet()) {
final String param_name = entry.getValue().getName();
@@ -150,7 +150,7 @@ public class PyPropertyDefinitionInspection extends PyInspection {
assert argument != null : "Parameter mapped to null argument";
Callable callable = null;
if (argument instanceof PyReferenceExpression) {
PsiElement resolved = ((PyReferenceExpression)argument).getReference(resolveWithoutImplicits()).resolve();
PsiElement resolved = ((PyReferenceExpression)argument).getReference(getResolveContext()).resolve();
if (resolved instanceof Callable) {
callable = (Callable)resolved;
}
@@ -70,18 +70,20 @@ public class PyProtectedMemberInspection extends PyInspection {
if (name != null && name.startsWith("_") && !name.startsWith("__") && !name.endsWith("__")) {
final PyClass parentClass = getClassOwner(node);
if (parentClass != null) {
final PsiReference reference = node.getReference();
final PsiElement resolvedExpression = reference.resolve();
final PyClass resolvedClass = getClassOwner(resolvedExpression);
if (parentClass.isSubclass(resolvedClass))
return;
PyClass outerClass = getClassOwner(parentClass);
while (outerClass != null) {
if (outerClass.isSubclass(resolvedClass))
final PsiReference reference = node.getReference(getResolveContext());
if (reference != null) {
final PsiElement resolvedExpression = reference.resolve();
final PyClass resolvedClass = getClassOwner(resolvedExpression);
if (parentClass.isSubclass(resolvedClass))
return;
outerClass = getClassOwner(outerClass);
PyClass outerClass = getClassOwner(parentClass);
while (outerClass != null) {
if (outerClass.isSubclass(resolvedClass))
return;
outerClass = getClassOwner(outerClass);
}
}
}
final PyType type = myTypeEvalContext.getType(qualifier);
@@ -67,7 +67,7 @@ public class PyRaisingNewStyleClassInspection extends PyInspection {
if (expression instanceof PyCallExpression) {
final PyExpression callee = ((PyCallExpression)expression).getCallee();
if (callee instanceof PyReferenceExpression) {
final PsiElement psiElement = ((PyReferenceExpression)callee).getReference(resolveWithoutImplicits()).resolve();
final PsiElement psiElement = ((PyReferenceExpression)callee).getReference(getResolveContext()).resolve();
if (psiElement instanceof PyClass) {
if (((PyClass)psiElement).isNewStyleClass()) {
registerProblem(expression, "Raising a new style class");
@@ -112,14 +112,14 @@ public class PyStatementEffectInspection extends PyInspection {
PyType type = myTypeEvalContext.getType(leftExpression);
if (type != null &&
!type.isBuiltin(myTypeEvalContext) &&
type.resolveMember(method, null, AccessDirection.READ, resolveWithoutImplicits()) != null) {
type.resolveMember(method, null, AccessDirection.READ, getResolveContext()) != null) {
return true;
}
if (rightExpression != null) {
type = myTypeEvalContext.getType(rightExpression);
if (type != null) {
String rmethod = "__r" + method.substring(2); // __add__ -> __radd__
if (!type.isBuiltin(myTypeEvalContext) && type.resolveMember(rmethod, null, AccessDirection.READ, resolveWithoutImplicits()) != null) {
if (!type.isBuiltin(myTypeEvalContext) && type.resolveMember(rmethod, null, AccessDirection.READ, getResolveContext()) != null) {
return true;
}
}
@@ -136,7 +136,7 @@ public class PyStatementEffectInspection extends PyInspection {
}
else if (expression instanceof PyReferenceExpression) {
PyReferenceExpression referenceExpression = (PyReferenceExpression)expression;
ResolveResult[] results = referenceExpression.getReference(resolveWithoutImplicits()).multiResolve(true);
ResolveResult[] results = referenceExpression.getReference(getResolveContext()).multiResolve(true);
for (ResolveResult res : results) {
if (res.getElement() instanceof PyFunction) {
registerProblem(expression, "Statement seems to have no effect and can be replaced with function call to have effect", new StatementEffectFunctionCallQuickFix());
@@ -81,7 +81,7 @@ public class PySuperArgumentsInspection extends PyInspection {
@Nullable
private PyClass findClassOf(PyExpression argument) {
PsiElement firstElement = ((PyReferenceExpression)argument).followAssignmentsChain(resolveWithoutImplicits()).getElement();
PsiElement firstElement = ((PyReferenceExpression)argument).followAssignmentsChain(getResolveContext()).getElement();
PyClass firstClass = null;
if (firstElement instanceof PyClass) firstClass = (PyClass)firstElement;
else if (firstElement instanceof PyExpression) {
@@ -59,7 +59,7 @@ public class PyTupleItemAssignmentInspection extends PyInspection {
PySubscriptionExpression subscriptionExpression = (PySubscriptionExpression)targets[0];
if (subscriptionExpression.getOperand() instanceof PyReferenceExpression) {
PyReferenceExpression referenceExpression = (PyReferenceExpression)subscriptionExpression.getOperand();
PsiElement element = referenceExpression.followAssignmentsChain(resolveWithoutImplicits()).getElement();
PsiElement element = referenceExpression.followAssignmentsChain(getResolveContext()).getElement();
if (element instanceof PyExpression) {
PyExpression expression = (PyExpression)element;
PyType type = myTypeEvalContext.getType(expression);
@@ -127,7 +127,7 @@ public class PyUnboundLocalVariableInspection extends PyInspection {
if (!isFirstUnboundRead(node, owner)) {
return;
}
final PsiPolyVariantReference ref = node.getReference(resolveWithoutImplicits());
final PsiPolyVariantReference ref = node.getReference(getResolveContext());
if (ref == null) {
return;
}