making LambdaArgument methods nullable
overridden `LambdaArgument.getArgumentExpression` removed because it is already nullable in parent #EA-117013
This commit is contained in:
@@ -173,7 +173,7 @@ class EffectsExtractingVisitor(
|
||||
valueArgumentsByIndex?.mapTo(arguments) {
|
||||
val valueArgument = (it as? ExpressionValueArgument)?.valueArgument ?: return null
|
||||
when (valueArgument) {
|
||||
is KtLambdaArgument -> ESLambda(valueArgument.getLambdaExpression())
|
||||
is KtLambdaArgument -> valueArgument.getLambdaExpression()?.let { ESLambda(it) } ?: return null
|
||||
else -> extractOrGetCached(valueArgument.getArgumentExpression() ?: return null)
|
||||
}
|
||||
} ?: return null
|
||||
|
||||
@@ -20,9 +20,7 @@ import com.intellij.lang.ASTNode
|
||||
|
||||
class KtLambdaArgument(node: ASTNode) : KtValueArgument(node), LambdaArgument {
|
||||
|
||||
override fun getArgumentExpression() = super.getArgumentExpression()!!
|
||||
|
||||
override fun getLambdaExpression(): KtLambdaExpression = getArgumentExpression().unpackFunctionLiteral()!!
|
||||
override fun getLambdaExpression(): KtLambdaExpression? = getArgumentExpression()?.unpackFunctionLiteral()
|
||||
}
|
||||
|
||||
fun KtExpression.unpackFunctionLiteral(allowParentheses: Boolean = false): KtLambdaExpression? {
|
||||
|
||||
@@ -37,9 +37,7 @@ interface ValueArgument {
|
||||
}
|
||||
|
||||
interface LambdaArgument : ValueArgument {
|
||||
fun getLambdaExpression(): KtLambdaExpression
|
||||
|
||||
override fun getArgumentExpression(): KtExpression
|
||||
fun getLambdaExpression(): KtLambdaExpression?
|
||||
}
|
||||
|
||||
interface ValueArgumentName {
|
||||
|
||||
@@ -31,11 +31,8 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.TransientReceiver
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.storage.getValue
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.types.createDynamicType
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.expressions.OperatorConventions
|
||||
import org.jetbrains.kotlin.types.isDynamic
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
import java.util.*
|
||||
|
||||
@@ -53,7 +50,8 @@ class DynamicCallableDescriptors(storageManager: StorageManager, builtIns: Kotli
|
||||
override fun getContributedFunctions(name: Name, location: LookupLocation): Collection<SimpleFunctionDescriptor> {
|
||||
if (isAugmentedAssignmentConvention(name)) return listOf()
|
||||
if (call.callType == Call.CallType.INVOKE
|
||||
&& call.valueArgumentList == null && call.functionLiteralArguments.isEmpty()) {
|
||||
&& call.valueArgumentList == null && call.functionLiteralArguments.isEmpty()
|
||||
) {
|
||||
// this means that we are looking for "imaginary" invokes,
|
||||
// e.g. in `+d` we are looking for property "plus" with member "invoke"
|
||||
return listOf()
|
||||
@@ -217,7 +215,10 @@ class DynamicCallableDescriptors(storageManager: StorageManager, builtIns: Kotli
|
||||
|
||||
if (hasSpreadOperator) {
|
||||
for (funLiteralArg in call.functionLiteralArguments) {
|
||||
addParameter(funLiteralArg, getFunctionType(funLiteralArg.getLambdaExpression()), null)
|
||||
addParameter(
|
||||
funLiteralArg,
|
||||
funLiteralArg.getLambdaExpression()?.let { getFunctionType(it) } ?: TypeUtils.CANT_INFER_FUNCTION_PARAM_TYPE,
|
||||
null)
|
||||
}
|
||||
|
||||
break
|
||||
|
||||
@@ -462,8 +462,8 @@ class PSICallResolver(
|
||||
oldCall.valueArguments.last()
|
||||
} else {
|
||||
if (externalLambdaArguments.size > 2) {
|
||||
externalLambdaArguments.drop(1).forEach {
|
||||
context.trace.report(Errors.MANY_LAMBDA_EXPRESSION_ARGUMENTS.on(it.getLambdaExpression()))
|
||||
externalLambdaArguments.drop(1).mapNotNull { it.getLambdaExpression() }.forEach {
|
||||
context.trace.report(Errors.MANY_LAMBDA_EXPRESSION_ARGUMENTS.on(it))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-5
@@ -50,17 +50,13 @@ class ErrorExpressionGenerator(statementGenerator: StatementGenerator) : Stateme
|
||||
receiverExpression.genExpr()
|
||||
}
|
||||
|
||||
ktCall.valueArguments.forEach {
|
||||
(ktCall.valueArguments + ktCall.lambdaArguments).forEach {
|
||||
val ktArgument = it.getArgumentExpression()
|
||||
if (ktArgument != null) {
|
||||
irErrorCall.addArgument(ktArgument.genExpr())
|
||||
}
|
||||
}
|
||||
|
||||
ktCall.lambdaArguments.forEach {
|
||||
irErrorCall.addArgument(it.getArgumentExpression().genExpr())
|
||||
}
|
||||
|
||||
irErrorCall
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user