org.jetbrains.kotlin.resolve.inline
Class InlineUtil

java.lang.Object
  extended by org.jetbrains.kotlin.resolve.inline.InlineUtil

public class InlineUtil
extends java.lang.Object


Constructor Summary
InlineUtil()
           
 
Method Summary
static boolean allowsNonLocalReturns(CallableDescriptor lambda)
           
static boolean canBeInlineArgument(com.intellij.psi.PsiElement functionalExpression)
           
static boolean checkNonLocalReturnUsage(DeclarationDescriptor fromFunction, KtExpression startExpression, BindingTrace trace)
           
static boolean containsReifiedTypeParameters(CallableDescriptor descriptor)
           
static DeclarationDescriptor getContainingClassOrFunctionDescriptor(DeclarationDescriptor descriptor, boolean strict)
           
static ValueParameterDescriptor getInlineArgumentDescriptor(KtFunction argument, BindingContext bindingContext)
           
static InlineStrategy getInlineStrategy(DeclarationDescriptor descriptor)
           
static boolean isArrayConstructorWithLambda(CallableDescriptor descriptor)
           
static boolean isInline(DeclarationDescriptor descriptor)
           
static boolean isInlinedArgument(KtFunction argument, BindingContext bindingContext, boolean checkNonLocalReturn)
           
static boolean isInlineLambdaParameter(ParameterDescriptor valueParameterOrReceiver)
           
static boolean isInlineOrContainingInline(DeclarationDescriptor descriptor)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InlineUtil

public InlineUtil()
Method Detail

isInlineLambdaParameter

public static boolean isInlineLambdaParameter(@NotNull
                                              ParameterDescriptor valueParameterOrReceiver)

isInline

public static boolean isInline(@Nullable
                               DeclarationDescriptor descriptor)

isInlineOrContainingInline

public static boolean isInlineOrContainingInline(@Nullable
                                                 DeclarationDescriptor descriptor)

getInlineStrategy

@NotNull
public static InlineStrategy getInlineStrategy(@NotNull
                                                       DeclarationDescriptor descriptor)

checkNonLocalReturnUsage

public static boolean checkNonLocalReturnUsage(@NotNull
                                               DeclarationDescriptor fromFunction,
                                               @NotNull
                                               KtExpression startExpression,
                                               @NotNull
                                               BindingTrace trace)

isInlinedArgument

public static boolean isInlinedArgument(@NotNull
                                        KtFunction argument,
                                        @NotNull
                                        BindingContext bindingContext,
                                        boolean checkNonLocalReturn)

getInlineArgumentDescriptor

@Nullable
public static ValueParameterDescriptor getInlineArgumentDescriptor(@NotNull
                                                                            KtFunction argument,
                                                                            @NotNull
                                                                            BindingContext bindingContext)

canBeInlineArgument

public static boolean canBeInlineArgument(@Nullable
                                          com.intellij.psi.PsiElement functionalExpression)

isArrayConstructorWithLambda

public static boolean isArrayConstructorWithLambda(@NotNull
                                                   CallableDescriptor descriptor)
Returns:
true if the descriptor is the constructor of one of 9 array classes (Array<T>, IntArray, FloatArray, ...) which takes the size and an initializer lambda as parameters. Such constructors are marked as 'inline' but they are not loaded as such because the 'inline' flag is not stored for constructors in the binary metadata. Therefore we pretend that they are inline

getContainingClassOrFunctionDescriptor

@Nullable
public static DeclarationDescriptor getContainingClassOrFunctionDescriptor(@NotNull
                                                                                    DeclarationDescriptor descriptor,
                                                                                    boolean strict)

allowsNonLocalReturns

public static boolean allowsNonLocalReturns(@NotNull
                                            CallableDescriptor lambda)

containsReifiedTypeParameters

public static boolean containsReifiedTypeParameters(@NotNull
                                                    CallableDescriptor descriptor)