From 8a5373099c4f80ab336eeb0ebc508f1addfe855d Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Wed, 1 Mar 2017 20:51:11 +0300 Subject: [PATCH] Export only one entry point to PyTypeCheckerInspectionProblemRegistrar --- .../inspections/PyTypeCheckerInspection.java | 9 ++--- ...TypeCheckerInspectionProblemRegistrar.java | 35 +++++++++++++------ 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/python/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java b/python/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java index bb4bdf98d238..c6ae967180f1 100644 --- a/python/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java @@ -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); } } diff --git a/python/src/com/jetbrains/python/inspections/PyTypeCheckerInspectionProblemRegistrar.java b/python/src/com/jetbrains/python/inspections/PyTypeCheckerInspectionProblemRegistrar.java index 0a46cd0b16ef..19c72844e6ad 100644 --- a/python/src/com/jetbrains/python/inspections/PyTypeCheckerInspectionProblemRegistrar.java +++ b/python/src/com/jetbrains/python/inspections/PyTypeCheckerInspectionProblemRegistrar.java @@ -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 argumentTypes, + @NotNull List 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 argumentTypes, - @NotNull List calleesResults, - @NotNull TypeEvalContext context) { + private static void registerMultiCalleeProblem(@NotNull PyInspectionVisitor visitor, + @NotNull PyCallSiteExpression callSite, + @NotNull List argumentTypes, + @NotNull List 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));