[Analysis API] Add call resolution tests for KTIJ-23373

- The Java functions aren't recognized as candidates during the test
  (`FULL_JDK` isn't helping), so I've replicated the tests with local
  extension functions and confirmed that they uncover the same
  exception.
This commit is contained in:
Marco Pennekamp
2022-11-14 13:50:45 +01:00
parent 60dbe73f60
commit 93f560eb4d
9 changed files with 2393 additions and 0 deletions
@@ -0,0 +1,726 @@
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.Array<out ERROR_TYPE>
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.Array<out T>, action: kotlin.Function1<T, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<ERROR_TYPE, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {
T -> (ERROR_TYPE)
}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<ERROR_TYPE, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.BooleanArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.BooleanArray, action: kotlin.Function1<kotlin.Boolean, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Boolean, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Boolean, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Boolean, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Boolean, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.ByteArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.ByteArray, action: kotlin.Function1<kotlin.Byte, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Byte, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Byte, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Byte, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Byte, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.CharArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.CharArray, action: kotlin.Function1<kotlin.Char, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Char, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Char, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Char, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Char, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.CharSequence
returnType = kotlin.Unit
symbol = kotlin/text/forEach(<extension receiver>: kotlin.CharSequence, action: kotlin.Function1<kotlin.Char, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Char, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Char, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/text/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Char, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Char, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.DoubleArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.DoubleArray, action: kotlin.Function1<kotlin.Double, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Double, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Double, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Double, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Double, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.FloatArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.FloatArray, action: kotlin.Function1<kotlin.Float, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Float, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Float, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Float, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Float, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.IntArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.IntArray, action: kotlin.Function1<kotlin.Int, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Int, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Int, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.LongArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.LongArray, action: kotlin.Function1<kotlin.Long, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Long, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Long, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Long, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Long, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.ShortArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.ShortArray, action: kotlin.Function1<kotlin.Short, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Short, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Short, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Short, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Short, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.UByteArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.UByteArray, action: kotlin.Function1<kotlin.UByte, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.UByte, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.UByte, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.UByte, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.UByte, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.UIntArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.UIntArray, action: kotlin.Function1<kotlin.UInt, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.UInt, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.UInt, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.UInt, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.UInt, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.ULongArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.ULongArray, action: kotlin.Function1<kotlin.ULong, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.ULong, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.ULong, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.ULong, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.ULong, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.UShortArray
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.UShortArray, action: kotlin.Function1<kotlin.UShort, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.UShort, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.UShort, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.UShort, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.UShort, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtApplicableCallCandidateInfo:
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.Iterable<kotlin.Int>
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.collections.Iterable<T>, action: kotlin.Function1<T, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {
T -> (kotlin.Int)
}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = true
KtApplicableCallCandidateInfo:
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.Iterable<kotlin.Int>
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.collections.Iterable<T>, action: kotlin.Function1<T, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {
T -> (kotlin.Int)
}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = true
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.Iterator<ERROR_TYPE>
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.collections.Iterator<T>, operation: kotlin.Function1<T, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = operation
receiverType = null
returnType = kotlin.Function1<ERROR_TYPE, kotlin.Unit>
symbol = operation: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {
T -> (ERROR_TYPE)
}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = operation
receiverType = null
returnType = kotlin.Function1<ERROR_TYPE, kotlin.Unit>
symbol = operation: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtApplicableCallCandidateInfo:
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.List<kotlin.Int>
returnType = kotlin.Unit
symbol = /forEach(<extension receiver>: kotlin.collections.List<kotlin.Int>, action: kotlin.Function1<kotlin.Int, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Int, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = /forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Int, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.Map<out ERROR_TYPE, ERROR_TYPE>
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.collections.Map<out K, V>, action: kotlin.Function1<kotlin.collections.Map.Entry<K, V>, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.collections.Map.Entry<ERROR_TYPE, ERROR_TYPE>, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.collections.Map.Entry<K, V>, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {
K -> (ERROR_TYPE),
V -> (ERROR_TYPE)
}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.collections.Map.Entry<ERROR_TYPE, ERROR_TYPE>, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.collections.Map.Entry<K, V>, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.Map<out ERROR_TYPE, ERROR_TYPE>
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.collections.Map<out K, V>, action: kotlin.Function1<kotlin.collections.Map.Entry<K, V>, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.collections.Map.Entry<ERROR_TYPE, ERROR_TYPE>, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.collections.Map.Entry<K, V>, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {
K -> (ERROR_TYPE),
V -> (ERROR_TYPE)
}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.collections.Map.Entry<ERROR_TYPE, ERROR_TYPE>, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.collections.Map.Entry<K, V>, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<null: RECEIVER_TYPE_ERROR with forEach>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.sequences.Sequence<ERROR_TYPE>
returnType = kotlin.Unit
symbol = kotlin/sequences/forEach(<extension receiver>: kotlin.sequences.Sequence<T>, action: kotlin.Function1<T, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<ERROR_TYPE, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/sequences/forEach
typeArgumentsMapping = {
T -> (ERROR_TYPE)
}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<ERROR_TYPE, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
@@ -0,0 +1,10 @@
// See: KTIJ-23373
// WITH_STDLIB
fun List<Int>.forEach(action: (Int) -> Unit) {
for (e in this) action(e)
}
fun test() {
<expr>listOf(1, 2, 3).forEach { }</expr>
}
@@ -0,0 +1,68 @@
KtApplicableCallCandidateInfo:
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.Iterable<kotlin.Int>
returnType = kotlin.Unit
symbol = kotlin/collections/forEach(<extension receiver>: kotlin.collections.Iterable<T>, action: kotlin.Function1<T, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/forEach
typeArgumentsMapping = {
T -> (kotlin.Int)
}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<T, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = true
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<INAPPLICABLE_CANDIDATE: Inapplicable candidate(s): fun List<Int>.forEach(action: (Int) -> Unit): Unit>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = listOf(1, 2, 3)
isSafeNavigation = false
type = kotlin.collections.List<kotlin.Int>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.List<kotlin.Int>
returnType = kotlin.Unit
symbol = /forEach(<extension receiver>: kotlin.collections.List<kotlin.Int>, action: kotlin.Function1<kotlin.Int, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Int, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = /forEach
typeArgumentsMapping = {}
argumentMapping = {
{ } -> (KtVariableLikeSignature:
name = action
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = action: kotlin.Function1<kotlin.Int, kotlin.Unit>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
@@ -0,0 +1,11 @@
// See: KTIJ-21506
// WITH_STDLIB
fun <K> List<Pair<Int, Int>>.groupBy(
keySelector: (Pair<Int, Int>) -> K,
valueTransform: (Pair<Int, Int>) -> Int,
): Map<K, List<Int>> = mapOf() // The result is irrelevant for the test.
fun test(nums: IntArray) {
<expr>nums.withIndex().groupBy({ (_, value) -> value }) { (idx, _) -> idx }</expr>
}
@@ -0,0 +1,129 @@
KtApplicableCallCandidateInfo:
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = nums.withIndex()
isSafeNavigation = false
type = kotlin.collections.Iterable<kotlin.collections.IndexedValue<kotlin.Int>>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.Iterable<kotlin.collections.IndexedValue<kotlin.Int>>
returnType = kotlin.collections.Map<kotlin.Int, kotlin.collections.List<kotlin.Int>>
symbol = kotlin/collections/groupBy(<extension receiver>: kotlin.collections.Iterable<T>, keySelector: kotlin.Function1<T, K>, valueTransform: kotlin.Function1<T, V>): kotlin.collections.Map<K, kotlin.collections.List<V>>
valueParameters = [
KtVariableLikeSignature:
name = keySelector
receiverType = null
returnType = kotlin.Function1<kotlin.collections.IndexedValue<kotlin.Int>, kotlin.Int>
symbol = keySelector: kotlin.Function1<T, K>
callableIdIfNonLocal = null,
KtVariableLikeSignature:
name = valueTransform
receiverType = null
returnType = kotlin.Function1<kotlin.collections.IndexedValue<kotlin.Int>, kotlin.Int>
symbol = valueTransform: kotlin.Function1<T, V>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/groupBy
typeArgumentsMapping = {
T -> (kotlin.collections.IndexedValue<kotlin.Int>),
K -> (kotlin.Int),
V -> (kotlin.Int)
}
argumentMapping = {
{ (_, value) -> value } -> (KtVariableLikeSignature:
name = keySelector
receiverType = null
returnType = kotlin.Function1<kotlin.collections.IndexedValue<kotlin.Int>, kotlin.Int>
symbol = keySelector: kotlin.Function1<T, K>
callableIdIfNonLocal = null),
{ (idx, _) -> idx } -> (KtVariableLikeSignature:
name = valueTransform
receiverType = null
returnType = kotlin.Function1<kotlin.collections.IndexedValue<kotlin.Int>, kotlin.Int>
symbol = valueTransform: kotlin.Function1<T, V>
callableIdIfNonLocal = null)
}
isInBestCandidates = true
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<TOO_MANY_ARGUMENTS: Too many arguments for public final inline fun <T, K> R|kotlin/collections/Iterable<T>|.kotlin/collections/groupBy(keySelector: R|(T) -> K|): R|kotlin/collections/Map<K, kotlin/collections/List<T>>|
>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = nums.withIndex()
isSafeNavigation = false
type = kotlin.collections.Iterable<kotlin.collections.IndexedValue<kotlin.Int>>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.Iterable<kotlin.collections.IndexedValue<kotlin.Int>>
returnType = kotlin.collections.Map<kotlin.Int, kotlin.collections.List<kotlin.collections.IndexedValue<kotlin.Int>>>
symbol = kotlin/collections/groupBy(<extension receiver>: kotlin.collections.Iterable<T>, keySelector: kotlin.Function1<T, K>): kotlin.collections.Map<K, kotlin.collections.List<T>>
valueParameters = [
KtVariableLikeSignature:
name = keySelector
receiverType = null
returnType = kotlin.Function1<kotlin.collections.IndexedValue<kotlin.Int>, kotlin.Int>
symbol = keySelector: kotlin.Function1<T, K>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = kotlin/collections/groupBy
typeArgumentsMapping = {}
argumentMapping = {
{ (_, value) -> value } -> (KtVariableLikeSignature:
name = keySelector
receiverType = null
returnType = kotlin.Function1<kotlin.collections.IndexedValue<kotlin.Int>, kotlin.Int>
symbol = keySelector: kotlin.Function1<T, K>
callableIdIfNonLocal = null)
}
isInBestCandidates = false
KtInapplicableCallCandidateInfo:
diagnostic = ERROR<INAPPLICABLE_CANDIDATE: Inapplicable candidate(s): fun <K> List<Pair<Int, Int>>.groupBy(keySelector: (Pair<Int, Int>) -> K, valueTransform: (Pair<Int, Int>) -> Int): Map<K, List<Int>>>
candidate = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = KtExplicitReceiverValue:
expression = nums.withIndex()
isSafeNavigation = false
type = kotlin.collections.Iterable<kotlin.collections.IndexedValue<kotlin.Int>>
signature = KtFunctionLikeSignature:
receiverType = kotlin.collections.List<kotlin.Pair<kotlin.Int, kotlin.Int>>
returnType = kotlin.collections.Map<kotlin.collections.IndexedValue<kotlin.Int>, kotlin.collections.List<kotlin.Int>>
symbol = /groupBy(<extension receiver>: kotlin.collections.List<kotlin.Pair<kotlin.Int, kotlin.Int>>, keySelector: kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, K>, valueTransform: kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, kotlin.Int>): kotlin.collections.Map<K, kotlin.collections.List<kotlin.Int>>
valueParameters = [
KtVariableLikeSignature:
name = keySelector
receiverType = null
returnType = kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, kotlin.collections.IndexedValue<kotlin.Int>>
symbol = keySelector: kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, K>
callableIdIfNonLocal = null,
KtVariableLikeSignature:
name = valueTransform
receiverType = null
returnType = kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, kotlin.Int>
symbol = valueTransform: kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, kotlin.Int>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = /groupBy
typeArgumentsMapping = {}
argumentMapping = {
{ (_, value) -> value } -> (KtVariableLikeSignature:
name = keySelector
receiverType = null
returnType = kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, kotlin.collections.IndexedValue<kotlin.Int>>
symbol = keySelector: kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, K>
callableIdIfNonLocal = null),
{ (idx, _) -> idx } -> (KtVariableLikeSignature:
name = valueTransform
receiverType = null
returnType = kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, kotlin.Int>
symbol = valueTransform: kotlin.Function1<kotlin.Pair<kotlin.Int, kotlin.Int>, kotlin.Int>
callableIdIfNonLocal = null)
}
isInBestCandidates = false