Introduce language feature for NI, remove old setting
This commit is contained in:
+17
-10
@@ -49,7 +49,6 @@ import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.calls.USE_NEW_INFERENCE
|
||||
import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
||||
@@ -126,7 +125,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
}
|
||||
|
||||
moduleBindings[testModule] = result.bindingContext
|
||||
checkAllResolvedCallsAreCompleted(ktFiles, result.bindingContext)
|
||||
checkAllResolvedCallsAreCompleted(ktFiles, result.bindingContext, languageVersionSettings)
|
||||
}
|
||||
|
||||
// We want to always create a test data file (txt) if it was missing,
|
||||
@@ -524,7 +523,11 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
setDependencies(this, builtIns.builtInsModule)
|
||||
}
|
||||
|
||||
private fun checkAllResolvedCallsAreCompleted(ktFiles: List<KtFile>, bindingContext: BindingContext) {
|
||||
private fun checkAllResolvedCallsAreCompleted(
|
||||
ktFiles: List<KtFile>,
|
||||
bindingContext: BindingContext,
|
||||
configuredLanguageVersionSettings: LanguageVersionSettings
|
||||
) {
|
||||
if (ktFiles.any { file -> AnalyzingUtils.getSyntaxErrorRanges(file).isNotEmpty() }) return
|
||||
|
||||
val resolvedCallsEntries = bindingContext.getSliceContents(BindingContext.RESOLVED_CALL)
|
||||
@@ -533,16 +536,16 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
|
||||
val lineAndColumn = DiagnosticUtils.getLineAndColumnInPsiFile(element.containingFile, element.textRange)
|
||||
|
||||
if (!USE_NEW_INFERENCE) {
|
||||
if (!configuredLanguageVersionSettings.supportsFeature(LanguageFeature.NewInference)) {
|
||||
assertTrue("Resolved call for '${element.text}'$lineAndColumn is not completed",
|
||||
(resolvedCall as MutableResolvedCall<*>).isCompleted)
|
||||
}
|
||||
}
|
||||
|
||||
checkResolvedCallsInDiagnostics(bindingContext)
|
||||
checkResolvedCallsInDiagnostics(bindingContext, configuredLanguageVersionSettings)
|
||||
}
|
||||
|
||||
private fun checkResolvedCallsInDiagnostics(bindingContext: BindingContext) {
|
||||
private fun checkResolvedCallsInDiagnostics(bindingContext: BindingContext, configuredLanguageVersionSettings: LanguageVersionSettings) {
|
||||
val diagnosticsStoringResolvedCalls1 = setOf(
|
||||
OVERLOAD_RESOLUTION_AMBIGUITY, NONE_APPLICABLE, CANNOT_COMPLETE_RESOLVE, UNRESOLVED_REFERENCE_WRONG_RECEIVER,
|
||||
ASSIGN_OPERATOR_AMBIGUITY, ITERATOR_AMBIGUITY
|
||||
@@ -554,19 +557,23 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
for (diagnostic in bindingContext.diagnostics) {
|
||||
when (diagnostic.factory) {
|
||||
in diagnosticsStoringResolvedCalls1 -> assertResolvedCallsAreCompleted(
|
||||
diagnostic, DiagnosticFactory.cast(diagnostic, diagnosticsStoringResolvedCalls1).a
|
||||
diagnostic, DiagnosticFactory.cast(diagnostic, diagnosticsStoringResolvedCalls1).a, configuredLanguageVersionSettings
|
||||
)
|
||||
in diagnosticsStoringResolvedCalls2 -> assertResolvedCallsAreCompleted(
|
||||
diagnostic, DiagnosticFactory.cast(diagnostic, diagnosticsStoringResolvedCalls2).b
|
||||
diagnostic, DiagnosticFactory.cast(diagnostic, diagnosticsStoringResolvedCalls2).b, configuredLanguageVersionSettings
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun assertResolvedCallsAreCompleted(diagnostic: Diagnostic, resolvedCalls: Collection<ResolvedCall<*>>) {
|
||||
private fun assertResolvedCallsAreCompleted(
|
||||
diagnostic: Diagnostic,
|
||||
resolvedCalls: Collection<ResolvedCall<*>>,
|
||||
configuredLanguageVersionSettings: LanguageVersionSettings
|
||||
) {
|
||||
val element = diagnostic.psiElement
|
||||
val lineAndColumn = DiagnosticUtils.getLineAndColumnInPsiFile(element.containingFile, element.textRange)
|
||||
if (USE_NEW_INFERENCE) return
|
||||
if (configuredLanguageVersionSettings.supportsFeature(LanguageFeature.NewInference)) return
|
||||
|
||||
assertTrue("Resolved calls stored in ${diagnostic.factory.name}\nfor '${element.text}'$lineAndColumn are not completed",
|
||||
resolvedCalls.all { (it as MutableResolvedCall<*>).isCompleted })
|
||||
|
||||
Reference in New Issue
Block a user