[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
|
doubleColonExpressionResolver, builtIns, deprecationResolver, moduleDescriptor, dataFlowValueFactory
|
||||||
)
|
)
|
||||||
|
|
||||||
for (subKtPrimitive in candidate.subResolvedAtoms) {
|
if (!ErrorUtils.isError(candidate.candidateDescriptor)) {
|
||||||
ktPrimitiveCompleter.completeAll(subKtPrimitive)
|
for (subKtPrimitive in candidate.subResolvedAtoms) {
|
||||||
|
ktPrimitiveCompleter.completeAll(subKtPrimitive)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val resolvedCall = ktPrimitiveCompleter.completeResolvedCall(candidate, baseResolvedCall.diagnostics) as ResolvedCall<D>
|
val resolvedCall = ktPrimitiveCompleter.completeResolvedCall(candidate, baseResolvedCall.diagnostics) as ResolvedCall<D>
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ class PSICallResolver(
|
|||||||
|
|
||||||
val trace = context.trace
|
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))
|
context.inferenceSession.addErrorCallInfo(PSIErrorCallInfo(result, errorResult))
|
||||||
return errorResult
|
return errorResult
|
||||||
}
|
}
|
||||||
@@ -217,6 +217,7 @@ class PSICallResolver(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun <D : CallableDescriptor> handleErrorResolutionResult(
|
private fun <D : CallableDescriptor> handleErrorResolutionResult(
|
||||||
|
context: BasicCallResolutionContext,
|
||||||
trace: BindingTrace,
|
trace: BindingTrace,
|
||||||
result: CallResolutionResult,
|
result: CallResolutionResult,
|
||||||
tracingStrategy: TracingStrategy
|
tracingStrategy: TracingStrategy
|
||||||
@@ -224,6 +225,8 @@ class PSICallResolver(
|
|||||||
val diagnostics = result.diagnostics
|
val diagnostics = result.diagnostics
|
||||||
|
|
||||||
diagnostics.firstIsInstanceOrNull<NoneCandidatesCallDiagnostic>()?.let {
|
diagnostics.firstIsInstanceOrNull<NoneCandidatesCallDiagnostic>()?.let {
|
||||||
|
kotlinToResolvedCallTransformer.transformAndReport<D>(result, context, tracingStrategy)
|
||||||
|
|
||||||
tracingStrategy.unresolvedReference(trace)
|
tracingStrategy.unresolvedReference(trace)
|
||||||
return OverloadResolutionResultsImpl.nameNotFound()
|
return OverloadResolutionResultsImpl.nameNotFound()
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-2
@@ -84,6 +84,12 @@ class ResolvedAtomCompleter(
|
|||||||
diagnostics
|
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 =
|
val resolutionContextForPartialCall =
|
||||||
topLevelCallContext.trace[BindingContext.PARTIAL_CALL_RESOLUTION_CONTEXT, resolvedCallAtom.atom.psiKotlinCall.psiCall]
|
topLevelCallContext.trace[BindingContext.PARTIAL_CALL_RESOLUTION_CONTEXT, resolvedCallAtom.atom.psiKotlinCall.psiCall]
|
||||||
|
|
||||||
@@ -98,8 +104,6 @@ class ResolvedAtomCompleter(
|
|||||||
|
|
||||||
kotlinToResolvedCallTransformer.bindAndReport(topLevelCallContext, topLevelTrace, resolvedCall, diagnostics)
|
kotlinToResolvedCallTransformer.bindAndReport(topLevelCallContext, topLevelTrace, resolvedCall, diagnostics)
|
||||||
|
|
||||||
val lastCall = if (resolvedCall is VariableAsFunctionResolvedCall) resolvedCall.functionCall else resolvedCall
|
|
||||||
|
|
||||||
kotlinToResolvedCallTransformer.runArgumentsChecks(topLevelCallContext, topLevelTrace, lastCall as NewResolvedCallImpl<*>)
|
kotlinToResolvedCallTransformer.runArgumentsChecks(topLevelCallContext, topLevelTrace, lastCall as NewResolvedCallImpl<*>)
|
||||||
kotlinToResolvedCallTransformer.runCallCheckers(resolvedCall, callCheckerContext)
|
kotlinToResolvedCallTransformer.runCallCheckers(resolvedCall, callCheckerContext)
|
||||||
kotlinToResolvedCallTransformer.runAdditionalReceiversCheckers(resolvedCall, topLevelCallContext)
|
kotlinToResolvedCallTransformer.runAdditionalReceiversCheckers(resolvedCall, topLevelCallContext)
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ class B {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class C {
|
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<!>()<!>
|
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
|
// !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
|
// !WITH_NEW_INFERENCE
|
||||||
// NI_EXPECTED_FILE
|
// 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() {
|
fun foo() {
|
||||||
val <!OI;UNUSED_VARIABLE!>text<!>: List<Any> = null!!
|
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