From e1de64bd477f90d09df31dd990b06a11c8fbeee0 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Wed, 25 Jan 2017 19:40:12 +0300 Subject: [PATCH] Update IntroduceHandler to use PyCallExpression.multiMapArguments(PyResolveContext) --- .../introduce/IntroduceHandler.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/python/src/com/jetbrains/python/refactoring/introduce/IntroduceHandler.java b/python/src/com/jetbrains/python/refactoring/introduce/IntroduceHandler.java index 457458522f35..b73738b2aad9 100644 --- a/python/src/com/jetbrains/python/refactoring/introduce/IntroduceHandler.java +++ b/python/src/com/jetbrains/python/refactoring/introduce/IntroduceHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -53,6 +53,7 @@ import com.jetbrains.python.psi.types.TypeEvalContext; import com.jetbrains.python.refactoring.NameSuggesterUtil; import com.jetbrains.python.refactoring.PyRefactoringUtil; import com.jetbrains.python.refactoring.PyReplaceExpressionUtil; +import one.util.streamex.StreamEx; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -223,20 +224,18 @@ abstract public class IntroduceHandler implements RefactoringActionHandler { candidates.add(kwArg.getKeyword()); } - final PyArgumentList argList = PsiTreeUtil.getParentOfType(expression, PyArgumentList.class); - if (argList != null) { - final PyCallExpression callExpr = argList.getCallExpression(); - if (callExpr != null) { - final PyResolveContext resolveContext = PyResolveContext.noImplicits(); - final PyCallExpression.PyArgumentsMapping mapping = callExpr.mapArguments(resolveContext); - if (mapping.getMarkedCallee() != null) { - final PyNamedParameter namedParameter = mapping.getMappedParameters().get(expression); - if (namedParameter != null) { - candidates.add(namedParameter.getName()); - } - } - } - } + Optional + .ofNullable(PsiTreeUtil.getParentOfType(expression, PyArgumentList.class)) + .map(PyArgumentList::getCallExpression) + .ifPresent( + call -> StreamEx + .of(call.multiMapArguments(PyResolveContext.noImplicits())) + .map(mapping -> mapping.getMappedParameters().get(expression)) + .nonNull() + .map(PyNamedParameter::getName) + .forEach(candidates::add) + ); + return candidates; }