[FIR] KT-54410: Report API_NOT_AVAILABLE for classifiers
Callable symbols with SinceKotlin are filtered out by a resolution stage, but in K1 classifiers and property accessors report API_NOT_AVAILABLE. K2 filters out properties with unavailable accessors, but does nothing for classifiers. This change fixes it. ^KT-54410 Fixed
This commit is contained in:
committed by
Space Team
parent
fd52cc4224
commit
9be819087a
+2
@@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.KtSourceElement
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
@@ -361,6 +362,7 @@ internal object FirToKtConversionCreator {
|
||||
FirModuleData::class,
|
||||
ExpectActualCompatibility.Incompatible::class,
|
||||
DeprecationInfo::class,
|
||||
ApiVersion::class,
|
||||
CallableId::class,
|
||||
ClassKind::class,
|
||||
)
|
||||
|
||||
+8
@@ -313,6 +313,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.API_NOT_AVAILABLE) { firDiagnostic ->
|
||||
ApiNotAvailableImpl(
|
||||
firDiagnostic.a,
|
||||
firDiagnostic.b,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.UNRESOLVED_REFERENCE_WRONG_RECEIVER) { firDiagnostic ->
|
||||
UnresolvedReferenceWrongReceiverImpl(
|
||||
firDiagnostic.a.map { firBasedSymbol ->
|
||||
|
||||
+7
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtVariableLikeSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtVariableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
@@ -256,6 +257,12 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
abstract val message: String
|
||||
}
|
||||
|
||||
abstract class ApiNotAvailable : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = ApiNotAvailable::class
|
||||
abstract val sinceKotlinVersion: ApiVersion
|
||||
abstract val currentVersion: ApiVersion
|
||||
}
|
||||
|
||||
abstract class UnresolvedReferenceWrongReceiver : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = UnresolvedReferenceWrongReceiver::class
|
||||
abstract val candidates: List<KtSymbol>
|
||||
|
||||
+8
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtVariableLikeSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtVariableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||
@@ -294,6 +295,13 @@ internal class DeprecationImpl(
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.Deprecation(), KtAbstractFirDiagnostic<PsiElement>
|
||||
|
||||
internal class ApiNotAvailableImpl(
|
||||
override val sinceKotlinVersion: ApiVersion,
|
||||
override val currentVersion: ApiVersion,
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.ApiNotAvailable(), KtAbstractFirDiagnostic<PsiElement>
|
||||
|
||||
internal class UnresolvedReferenceWrongReceiverImpl(
|
||||
override val candidates: List<KtSymbol>,
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
|
||||
+6
@@ -35349,6 +35349,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/jvmFieldAndJavaGetter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt54410.kt")
|
||||
public void testKt54410() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/kt54410.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt8050.kt")
|
||||
public void testKt8050() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user