[NI] Fix IDE-tests where integer types were used in unresolved calls
For example, test like CallExpression#testCallWithJavaClassReceiver #KT-31060 Fixed
This commit is contained in:
+4
-2
@@ -125,8 +125,10 @@ class KotlinToResolvedCallTransformer(
|
||||
doubleColonExpressionResolver, builtIns, deprecationResolver, moduleDescriptor, dataFlowValueFactory
|
||||
)
|
||||
|
||||
for (subKtPrimitive in candidate.subResolvedAtoms) {
|
||||
ktPrimitiveCompleter.completeAll(subKtPrimitive)
|
||||
if (!ErrorUtils.isError(candidate.candidateDescriptor)) {
|
||||
for (subKtPrimitive in candidate.subResolvedAtoms) {
|
||||
ktPrimitiveCompleter.completeAll(subKtPrimitive)
|
||||
}
|
||||
}
|
||||
|
||||
val resolvedCall = ktPrimitiveCompleter.completeResolvedCall(candidate, baseResolvedCall.diagnostics) as ResolvedCall<D>
|
||||
|
||||
@@ -202,7 +202,7 @@ class PSICallResolver(
|
||||
|
||||
val trace = context.trace
|
||||
|
||||
handleErrorResolutionResult<D>(trace, result, tracingStrategy)?.let { errorResult ->
|
||||
handleErrorResolutionResult<D>(context, trace, result, tracingStrategy)?.let { errorResult ->
|
||||
context.inferenceSession.addErrorCallInfo(PSIErrorCallInfo(result, errorResult))
|
||||
return errorResult
|
||||
}
|
||||
@@ -217,6 +217,7 @@ class PSICallResolver(
|
||||
}
|
||||
|
||||
private fun <D : CallableDescriptor> handleErrorResolutionResult(
|
||||
context: BasicCallResolutionContext,
|
||||
trace: BindingTrace,
|
||||
result: CallResolutionResult,
|
||||
tracingStrategy: TracingStrategy
|
||||
@@ -224,6 +225,8 @@ class PSICallResolver(
|
||||
val diagnostics = result.diagnostics
|
||||
|
||||
diagnostics.firstIsInstanceOrNull<NoneCandidatesCallDiagnostic>()?.let {
|
||||
kotlinToResolvedCallTransformer.transformAndReport<D>(result, context, tracingStrategy)
|
||||
|
||||
tracingStrategy.unresolvedReference(trace)
|
||||
return OverloadResolutionResultsImpl.nameNotFound()
|
||||
}
|
||||
|
||||
+6
-2
@@ -84,6 +84,12 @@ class ResolvedAtomCompleter(
|
||||
diagnostics
|
||||
)
|
||||
|
||||
val lastCall = if (resolvedCall is VariableAsFunctionResolvedCall) resolvedCall.functionCall else resolvedCall
|
||||
if (ErrorUtils.isError(resolvedCall.candidateDescriptor)) {
|
||||
kotlinToResolvedCallTransformer.runArgumentsChecks(topLevelCallContext, topLevelTrace, lastCall as NewResolvedCallImpl<*>)
|
||||
return resolvedCall
|
||||
}
|
||||
|
||||
val resolutionContextForPartialCall =
|
||||
topLevelCallContext.trace[BindingContext.PARTIAL_CALL_RESOLUTION_CONTEXT, resolvedCallAtom.atom.psiKotlinCall.psiCall]
|
||||
|
||||
@@ -98,8 +104,6 @@ class ResolvedAtomCompleter(
|
||||
|
||||
kotlinToResolvedCallTransformer.bindAndReport(topLevelCallContext, topLevelTrace, resolvedCall, diagnostics)
|
||||
|
||||
val lastCall = if (resolvedCall is VariableAsFunctionResolvedCall) resolvedCall.functionCall else resolvedCall
|
||||
|
||||
kotlinToResolvedCallTransformer.runArgumentsChecks(topLevelCallContext, topLevelTrace, lastCall as NewResolvedCallImpl<*>)
|
||||
kotlinToResolvedCallTransformer.runCallCheckers(resolvedCall, callCheckerContext)
|
||||
kotlinToResolvedCallTransformer.runAdditionalReceiversCheckers(resolvedCall, topLevelCallContext)
|
||||
|
||||
@@ -14,6 +14,6 @@ class B {
|
||||
}
|
||||
|
||||
class C {
|
||||
val bar = <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!><!UNINITIALIZED_VARIABLE!>test<!>()<!>
|
||||
val bar = <!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!><!UNINITIALIZED_VARIABLE!>test<!>()<!>
|
||||
val test = <!NI;TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;FUNCTION_EXPECTED!>bar<!>()<!>
|
||||
}
|
||||
Vendored
+1
-1
@@ -1,2 +1,2 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
val unwrapped = <!UNRESOLVED_REFERENCE!>some<!><!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!><<!><!DEBUG_INFO_MISSING_UNRESOLVED!>sdf<!>()()<out <!DEBUG_INFO_MISSING_UNRESOLVED!>Any<!>>::<!NI;UNRESOLVED_REFERENCE, OI;DEBUG_INFO_MISSING_UNRESOLVED!>unwrap<!>
|
||||
val unwrapped = <!UNRESOLVED_REFERENCE!>some<!><!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!><<!><!DEBUG_INFO_MISSING_UNRESOLVED!>sdf<!>()()<out <!DEBUG_INFO_MISSING_UNRESOLVED!>Any<!>>::<!DEBUG_INFO_MISSING_UNRESOLVED!>unwrap<!>
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// NI_EXPECTED_FILE
|
||||
|
||||
val unwrapped = <!UNRESOLVED_REFERENCE!>some<!>.<!SYNTAX!><<!><!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>cabc<!><!SYNTAX!>$Wrapper<!><out <!DEBUG_INFO_MISSING_UNRESOLVED!>Any<!>>::<!NI;UNRESOLVED_REFERENCE, OI;DEBUG_INFO_MISSING_UNRESOLVED!>unwrap<!>
|
||||
val unwrapped = <!UNRESOLVED_REFERENCE!>some<!>.<!SYNTAX!><<!><!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>cabc<!><!SYNTAX!>$Wrapper<!><out <!DEBUG_INFO_MISSING_UNRESOLVED!>Any<!>>::<!DEBUG_INFO_MISSING_UNRESOLVED!>unwrap<!>
|
||||
@@ -3,5 +3,5 @@
|
||||
|
||||
fun foo() {
|
||||
val <!OI;UNUSED_VARIABLE!>text<!>: List<Any> = null!!
|
||||
text.<!UNRESOLVED_REFERENCE!>map<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>Any<!><!SYNTAX!>?<!>::<!NI;UNRESOLVED_REFERENCE, OI;DEBUG_INFO_MISSING_UNRESOLVED!>toString<!>
|
||||
text.<!UNRESOLVED_REFERENCE!>map<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>Any<!><!SYNTAX!>?<!>::<!DEBUG_INFO_MISSING_UNRESOLVED!>toString<!>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user