From 3678bda40921eb9a877bf02c6343d65f592d4252 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Sat, 26 Dec 2015 00:40:45 +0300 Subject: [PATCH] InlineUtil: extract method --- .../kotlin/resolve/inline/InlineUtil.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineUtil.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineUtil.java index 159ccca4a56..2cb7260914c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineUtil.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineUtil.java @@ -89,7 +89,20 @@ public class InlineUtil { @NotNull BindingContext bindingContext, boolean checkNonLocalReturn ) { - if (!canBeInlineArgument(argument)) return false; + ValueParameterDescriptor descriptor = getInlineArgumentDescriptor(argument, bindingContext); + if (descriptor != null) { + return !checkNonLocalReturn || allowsNonLocalReturns(descriptor); + } + + return false; + } + + @Nullable + public static ValueParameterDescriptor getInlineArgumentDescriptor( + @NotNull KtFunction argument, + @NotNull BindingContext bindingContext + ) { + if (!canBeInlineArgument(argument)) return null; KtExpression call = KtPsiUtil.getParentCallIfPresent(argument); if (call != null) { @@ -101,13 +114,13 @@ public class InlineUtil { if (mapping instanceof ArgumentMatch) { ValueParameterDescriptor parameter = ((ArgumentMatch) mapping).getValueParameter(); if (isInlineLambdaParameter(parameter)) { - return !checkNonLocalReturn || allowsNonLocalReturns(parameter); + return parameter; } } } } } - return false; + return null; } public static boolean canBeInlineArgument(@Nullable PsiElement functionalExpression) {