Export only one entry point to PyTypeCheckerInspectionProblemRegistrar

This commit is contained in:
Semyon Proshev
2017-03-06 19:43:44 +03:00
committed by Semyon Proshev
parent 7079ed83cf
commit 8a5373099c
2 changed files with 27 additions and 17 deletions
@@ -186,14 +186,9 @@ public class PyTypeCheckerInspection extends PyInspection {
.map(this::analyzeCallee)
.toList();
if (matchedCalleeResultsExist(calleesResults)) return;
if (calleesResults.size() == 1) {
PyTypeCheckerInspectionProblemRegistrar.registerSingleCalleeProblem(this, calleesResults.get(0), myTypeEvalContext);
}
else if (!calleesResults.isEmpty()) {
if (!matchedCalleeResultsExist(calleesResults)) {
PyTypeCheckerInspectionProblemRegistrar
.registerMultiCalleeProblem(this, callSite, getArgumentTypes(calleesResults), calleesResults, myTypeEvalContext);
.registerProblem(this, callSite, getArgumentTypes(calleesResults), calleesResults, myTypeEvalContext);
}
}
@@ -40,9 +40,22 @@ import java.util.stream.Collectors;
class PyTypeCheckerInspectionProblemRegistrar {
static void registerSingleCalleeProblem(@NotNull PyInspectionVisitor visitor,
@NotNull PyTypeCheckerInspection.AnalyzeCalleeResults calleeResults,
@NotNull TypeEvalContext context) {
static void registerProblem(@NotNull PyInspectionVisitor visitor,
@NotNull PyCallSiteExpression callSite,
@NotNull List<PyType> argumentTypes,
@NotNull List<PyTypeCheckerInspection.AnalyzeCalleeResults> calleesResults,
@NotNull TypeEvalContext context) {
if (calleesResults.size() == 1) {
registerSingleCalleeProblem(visitor, calleesResults.get(0), context);
}
else if (!calleesResults.isEmpty()) {
registerMultiCalleeProblem(visitor, callSite, argumentTypes, calleesResults, context);
}
}
private static void registerSingleCalleeProblem(@NotNull PyInspectionVisitor visitor,
@NotNull PyTypeCheckerInspection.AnalyzeCalleeResults calleeResults,
@NotNull TypeEvalContext context) {
for (PyTypeCheckerInspection.AnalyzeArgumentResult argumentResult : calleeResults.getResults()) {
if (argumentResult.isMatched()) continue;
@@ -52,14 +65,15 @@ class PyTypeCheckerInspectionProblemRegistrar {
}
}
static void registerMultiCalleeProblem(@NotNull PyInspectionVisitor visitor,
@NotNull PyCallSiteExpression callSite,
@NotNull List<PyType> argumentTypes,
@NotNull List<PyTypeCheckerInspection.AnalyzeCalleeResults> calleesResults,
@NotNull TypeEvalContext context) {
private static void registerMultiCalleeProblem(@NotNull PyInspectionVisitor visitor,
@NotNull PyCallSiteExpression callSite,
@NotNull List<PyType> argumentTypes,
@NotNull List<PyTypeCheckerInspection.AnalyzeCalleeResults> calleesResults,
@NotNull TypeEvalContext context) {
if (callSite instanceof PyBinaryExpression) {
registerMultiCalleeProblemForBinaryExpression(visitor, (PyBinaryExpression)callSite, argumentTypes, calleesResults, context);
} else {
}
else {
visitor.registerProblem(getMultiCalleeElementToHighlight(callSite),
getMultiCalleeProblemMessage(argumentTypes, calleesResults, context),
getMultiCalleeHighlightType(calleesResults));
@@ -123,7 +137,8 @@ class PyTypeCheckerInspectionProblemRegistrar {
if (preferredOperatorsResults.size() == 1) {
registerSingleCalleeProblem(visitor, preferredOperatorsResults.get(0), context);
} else {
}
else {
visitor.registerProblem(allCalleesAreRightOperators ? binaryExpression.getLeftExpression() : binaryExpression.getRightExpression(),
getMultiCalleeProblemMessage(argumentTypes, preferredOperatorsResults, context),
getMultiCalleeHighlightType(preferredOperatorsResults));