Introduced ParameterDescriptor type
This commit is contained in:
@@ -22,7 +22,6 @@ import com.intellij.psi.PsiFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.backend.common.CodegenUtil;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.codegen.*;
|
||||
import org.jetbrains.kotlin.codegen.context.CodegenContext;
|
||||
import org.jetbrains.kotlin.codegen.context.FieldOwnerContext;
|
||||
@@ -463,8 +462,8 @@ public class InlineCodegen extends CallGenerator {
|
||||
if (field instanceof StackValue.Field) {
|
||||
DeclarationDescriptor varDescriptor = ((StackValue.Field) field).descriptor;
|
||||
//check that variable is inline function parameter
|
||||
return !(varDescriptor instanceof CallableDescriptor &&
|
||||
InlineUtil.isInlineLambdaParameter((CallableDescriptor) varDescriptor) &&
|
||||
return !(varDescriptor instanceof ParameterDescriptor &&
|
||||
InlineUtil.isInlineLambdaParameter((ParameterDescriptor) varDescriptor) &&
|
||||
InlineUtil.isInline(varDescriptor.getContainingDeclaration()));
|
||||
}
|
||||
|
||||
|
||||
+2
-5
@@ -218,11 +218,8 @@ class InlineChecker implements CallChecker {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isInlinableParameter(@NotNull CallableDescriptor descriptor) {
|
||||
JetType type = descriptor.getReturnType();
|
||||
return type != null &&
|
||||
InlineUtil.isInlineLambdaParameter(descriptor) &&
|
||||
!type.isMarkedNullable();
|
||||
private static boolean isInlinableParameter(@NotNull ParameterDescriptor descriptor) {
|
||||
return InlineUtil.isInlineLambdaParameter(descriptor) && !descriptor.getType().isMarkedNullable();
|
||||
}
|
||||
|
||||
private static boolean isInvokeOrInlineExtension(@NotNull CallableDescriptor descriptor) {
|
||||
|
||||
+3
-4
@@ -132,14 +132,13 @@ public class InlineAnalyzerExtension implements FunctionAnalyzerExtension.Analyz
|
||||
}
|
||||
|
||||
public static boolean checkInlinableParameter(
|
||||
@NotNull CallableDescriptor parameter,
|
||||
@NotNull ParameterDescriptor parameter,
|
||||
@NotNull JetElement expression,
|
||||
@NotNull CallableDescriptor functionDescriptor,
|
||||
@Nullable BindingTrace trace
|
||||
) {
|
||||
JetType type = parameter.getReturnType();
|
||||
if (type != null && InlineUtil.isInlineLambdaParameter(parameter)) {
|
||||
if (type.isMarkedNullable()) {
|
||||
if (InlineUtil.isInlineLambdaParameter(parameter)) {
|
||||
if (parameter.getType().isMarkedNullable()) {
|
||||
if (trace != null) {
|
||||
trace.report(Errors.NULLABLE_INLINE_PARAMETER.on(expression, expression, functionDescriptor));
|
||||
}
|
||||
|
||||
@@ -35,16 +35,13 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall;
|
||||
import org.jetbrains.kotlin.resolve.constants.ArrayValue;
|
||||
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant;
|
||||
import org.jetbrains.kotlin.resolve.constants.EnumValue;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
|
||||
import static kotlin.KotlinPackage.firstOrNull;
|
||||
|
||||
public class InlineUtil {
|
||||
public static boolean isInlineLambdaParameter(@NotNull CallableDescriptor valueParameterOrReceiver) {
|
||||
JetType type = valueParameterOrReceiver.getOriginal().getReturnType();
|
||||
return type != null &&
|
||||
!KotlinBuiltIns.isNoinline(valueParameterOrReceiver) &&
|
||||
KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(type);
|
||||
public static boolean isInlineLambdaParameter(@NotNull ParameterDescriptor valueParameterOrReceiver) {
|
||||
return !KotlinBuiltIns.isNoinline(valueParameterOrReceiver) &&
|
||||
KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(valueParameterOrReceiver.getOriginal().getType());
|
||||
}
|
||||
|
||||
public static boolean isInline(@Nullable DeclarationDescriptor descriptor) {
|
||||
|
||||
Reference in New Issue
Block a user