Don't report TYPE_INFERENCE_POSTPONED_VARIABLE_IN_RECEIVER_TYPE if unrestricted build inference was enabled

This commit is contained in:
Victor Petukhov
2021-05-21 14:51:41 +03:00
parent 0c427555cf
commit d486f7e188
2 changed files with 7 additions and 2 deletions
@@ -415,7 +415,10 @@ class ResolvedAtomCompleter(
val rawExtensionReceiver = callableCandidate.extensionReceiver
if (rawExtensionReceiver != null && rawExtensionReceiver.receiver.receiverValue.type.contains { it is StubTypeForBuilderInference }) {
val unrestrictedBuilderInferenceSupported =
topLevelCallContext.languageVersionSettings.supportsFeature(LanguageFeature.UnrestrictedBuilderInference)
if (rawExtensionReceiver != null && !unrestrictedBuilderInferenceSupported && rawExtensionReceiver.receiver.receiverValue.type.contains { it is StubTypeForBuilderInference }) {
topLevelTrace.reportDiagnosticOnce(Errors.TYPE_INFERENCE_POSTPONED_VARIABLE_IN_RECEIVER_TYPE.on(callableReferenceExpression))
return
}
@@ -551,7 +551,9 @@ class DoubleColonExpressionResolver(
resolvedCall.extensionReceiver?.type?.contains { it is StubTypeForBuilderInference } == true
}
if (doesSomeExtensionReceiverContainsStubType) {
val unrestrictedBuilderInferenceSupported = languageVersionSettings.supportsFeature(LanguageFeature.UnrestrictedBuilderInference)
if (doesSomeExtensionReceiverContainsStubType && !unrestrictedBuilderInferenceSupported) {
c.trace.reportDiagnosticOnce(TYPE_INFERENCE_POSTPONED_VARIABLE_IN_RECEIVER_TYPE.on(expression))
return noTypeInfo(c)
}