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, DeclarationDescriptor containingFunctionDescriptor, com.intellij.psi.PsiElement containingFunction, BindingContext bindingContext)
           
static boolean checkNonLocalReturnUsage(DeclarationDescriptor fromFunction, KtExpression startExpression, ResolutionContext<?> context)
           
static boolean containsReifiedTypeParameters(CallableDescriptor descriptor)
           
static DeclarationDescriptor getContainingClassOrFunctionDescriptor(DeclarationDescriptor descriptor, boolean strict)
           
static ValueParameterDescriptor getInlineArgumentDescriptor(KtFunction argument, BindingContext bindingContext)
           
static boolean hasInlineAccessors(PropertyDescriptor propertyDescriptor)
           
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)
           
static boolean isPropertyWithAllAccessorsAreInline(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)

hasInlineAccessors

public static boolean hasInlineAccessors(@NotNull
                                         PropertyDescriptor propertyDescriptor)

isPropertyWithAllAccessorsAreInline

public static boolean isPropertyWithAllAccessorsAreInline(@NotNull
                                                          DeclarationDescriptor descriptor)

isInlineOrContainingInline

public static boolean isInlineOrContainingInline(@Nullable
                                                 DeclarationDescriptor descriptor)

checkNonLocalReturnUsage

public static boolean checkNonLocalReturnUsage(@NotNull
                                               DeclarationDescriptor fromFunction,
                                               @NotNull
                                               KtExpression startExpression,
                                               @NotNull
                                               ResolutionContext<?> context)

checkNonLocalReturnUsage

public static boolean checkNonLocalReturnUsage(@NotNull
                                               DeclarationDescriptor fromFunction,
                                               @Nullable
                                               DeclarationDescriptor containingFunctionDescriptor,
                                               @Nullable
                                               com.intellij.psi.PsiElement containingFunction,
                                               @NotNull
                                               BindingContext bindingContext)

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)