[FIR] Add INVISIBLE_SETTER
This commit is contained in:
+2
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.lexer.KtKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
@@ -340,6 +341,7 @@ private object FirToKtConversionCreator {
|
||||
FirModuleData::class,
|
||||
ExpectActualCompatibility.Incompatible::class,
|
||||
DeprecationInfo::class,
|
||||
CallableId::class
|
||||
)
|
||||
|
||||
private val KType.kClass: KClass<*>
|
||||
|
||||
+9
@@ -246,6 +246,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.INVISIBLE_SETTER) { firDiagnostic ->
|
||||
InvisibleSetterImpl(
|
||||
firSymbolBuilder.variableLikeBuilder.buildVariableSymbol(firDiagnostic.a.fir),
|
||||
firDiagnostic.b,
|
||||
firDiagnostic.c,
|
||||
firDiagnostic as FirPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.INVISIBLE_REFERENCE) { firDiagnostic ->
|
||||
InvisibleReferenceImpl(
|
||||
firSymbolBuilder.buildSymbol(firDiagnostic.a.fir),
|
||||
|
||||
+8
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.lexer.KtKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -203,6 +204,13 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
abstract val valOrVar: KtKeywordToken
|
||||
}
|
||||
|
||||
abstract class InvisibleSetter : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = InvisibleSetter::class
|
||||
abstract val property: KtVariableSymbol
|
||||
abstract val visibility: Visibility
|
||||
abstract val callableId: CallableId
|
||||
}
|
||||
|
||||
abstract class InvisibleReference : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = InvisibleReference::class
|
||||
abstract val reference: KtSymbol
|
||||
|
||||
+9
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.lexer.KtKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -231,6 +232,14 @@ internal class ValOrVarOnSecondaryConstructorParameterImpl(
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.ValOrVarOnSecondaryConstructorParameter(), KtAbstractFirDiagnostic<KtParameter>
|
||||
|
||||
internal class InvisibleSetterImpl(
|
||||
override val property: KtVariableSymbol,
|
||||
override val visibility: Visibility,
|
||||
override val callableId: CallableId,
|
||||
override val firDiagnostic: FirPsiDiagnostic,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.InvisibleSetter(), KtAbstractFirDiagnostic<PsiElement>
|
||||
|
||||
internal class InvisibleReferenceImpl(
|
||||
override val reference: KtSymbol,
|
||||
override val firDiagnostic: FirPsiDiagnostic,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
RAW_FIR:
|
||||
FILE: annotationParameters.kt
|
||||
public? final? [RAW_FIR] enum class X : R|kotlin/Enum<X>| {
|
||||
@@ -19,7 +20,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [RAW_FIR] class B : R|kotlin/Any| {
|
||||
@@ -56,7 +57,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [RAW_FIR] class B : R|kotlin/Any| {
|
||||
@@ -93,7 +94,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [RAW_FIR] class B : R|kotlin/Any| {
|
||||
@@ -130,7 +131,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -167,7 +168,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -204,7 +205,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -241,7 +242,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -278,7 +279,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [STATUS] class B : R|kotlin/Any| {
|
||||
@@ -315,7 +316,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [STATUS] class B : R|kotlin/Any| {
|
||||
@@ -352,7 +353,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [RAW_FIR] class B : R|kotlin/Any| {
|
||||
@@ -389,7 +390,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [STATUS] class B : R|kotlin/Any| {
|
||||
@@ -426,7 +427,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [SUPER_TYPES] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [STATUS] class B : R|kotlin/Any| {
|
||||
@@ -463,7 +464,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [RAW_FIR] class B : R|kotlin/Any| {
|
||||
@@ -500,7 +501,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -537,7 +538,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -574,7 +575,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -611,7 +612,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public final [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -648,7 +649,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -685,7 +686,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
|
||||
[TYPES] public? get(): A.X
|
||||
[TYPES] [ContainingClassKey=Anno] public? get(): A.X
|
||||
|
||||
}
|
||||
public? final? [SUPER_TYPES] class B : R|kotlin/Any| {
|
||||
@@ -722,7 +723,7 @@ FILE: annotationParameters.kt
|
||||
}
|
||||
|
||||
public final [BODY_RESOLVE] [IsFromPrimaryConstructor=true] val args: <ERROR TYPE REF: Symbol not found for A.X> = R|<local>/args|
|
||||
[BODY_RESOLVE] public get(): <ERROR TYPE REF: Symbol not found for A.X>
|
||||
[BODY_RESOLVE] [ContainingClassKey=Anno] public get(): <ERROR TYPE REF: Symbol not found for A.X>
|
||||
|
||||
}
|
||||
public final [BODY_RESOLVE] class B : R|kotlin/Any| {
|
||||
|
||||
+12
@@ -25481,6 +25481,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/tests/scopes/VisibilityInheritModifier.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("visibleSetterFromSyntheticProperty.kt")
|
||||
public void testVisibleSetterFromSyntheticProperty() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/scopes/visibleSetterFromSyntheticProperty.kt");
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("compiler/testData/diagnostics/tests/scopes/classHeader")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@@ -25920,6 +25926,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/tests/scopes/protectedVisibility/protectedCallOnSubClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("protectedPropertyInPrimaryConstructor.kt")
|
||||
public void testProtectedPropertyInPrimaryConstructor() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/tests/scopes/protectedVisibility/protectedPropertyInPrimaryConstructor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("smartcastOnExtensionReceiver.kt")
|
||||
public void testSmartcastOnExtensionReceiver() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user