[NI] Add missing diagnostic on callable references in fake calls

Unresolved reference diagnositc was not reported on callable references
returned from if or when expression because of additional block wrapper.

^KT-30953 Fixed
This commit is contained in:
Pavel Kirpichenkov
2019-11-25 18:26:26 +03:00
parent eb73650209
commit cf82efb49f
6 changed files with 63 additions and 2 deletions
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluat
import org.jetbrains.kotlin.resolve.descriptorUtil.module
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.utils.addToStdlib.cast
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
class DiagnosticReporterByTrackingStrategy(
@@ -132,8 +133,8 @@ class DiagnosticReporterByTrackingStrategy(
trace.report(MIXING_NAMED_AND_POSITIONED_ARGUMENTS.on(callArgument.psiCallArgument.valueArgument.asElement()))
NoneCallableReferenceCandidates::class.java -> {
val expression =
(diagnostic as NoneCallableReferenceCandidates).argument.psiExpression.safeAs<KtCallableReferenceExpression>()
val expression = diagnostic.cast<NoneCallableReferenceCandidates>()
.argument.safeAs<CallableReferenceKotlinCallArgumentImpl>()?.ktCallableReferenceExpression
reportIfNonNull(expression) {
trace.report(UNRESOLVED_REFERENCE.on(it.callableReference, it.callableReference))
}