[FIR] Implement deprecation for accessing private operators from public inline function
This only affects delegation operators as well as the for-loop-related next and hasNext operators. All the other operators worked correctly before. In K2, the previously mentioned operator calls will be flagged with a deprecation error and will become and error in 2.1. #KT-59782 Fixed
This commit is contained in:
committed by
Space Team
parent
58c03e021b
commit
376a9b8ace
+8
@@ -4721,6 +4721,14 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.NON_PUBLIC_CALL_FROM_PUBLIC_INLINE_DEPRECATION) { firDiagnostic ->
|
||||
NonPublicCallFromPublicInlineDeprecationImpl(
|
||||
firSymbolBuilder.buildSymbol(firDiagnostic.a),
|
||||
firSymbolBuilder.buildSymbol(firDiagnostic.b),
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.PROTECTED_CONSTRUCTOR_CALL_FROM_PUBLIC_INLINE) { firDiagnostic ->
|
||||
ProtectedConstructorCallFromPublicInlineImpl(
|
||||
firSymbolBuilder.buildSymbol(firDiagnostic.a),
|
||||
|
||||
+6
@@ -3288,6 +3288,12 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
val referencedDeclaration: KtSymbol
|
||||
}
|
||||
|
||||
interface NonPublicCallFromPublicInlineDeprecation : KtFirDiagnostic<KtElement> {
|
||||
override val diagnosticClass get() = NonPublicCallFromPublicInlineDeprecation::class
|
||||
val inlineDeclaration: KtSymbol
|
||||
val referencedDeclaration: KtSymbol
|
||||
}
|
||||
|
||||
interface ProtectedConstructorCallFromPublicInline : KtFirDiagnostic<KtElement> {
|
||||
override val diagnosticClass get() = ProtectedConstructorCallFromPublicInline::class
|
||||
val inlineDeclaration: KtSymbol
|
||||
|
||||
+7
@@ -3963,6 +3963,13 @@ internal class NonPublicCallFromPublicInlineImpl(
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.NonPublicCallFromPublicInline
|
||||
|
||||
internal class NonPublicCallFromPublicInlineDeprecationImpl(
|
||||
override val inlineDeclaration: KtSymbol,
|
||||
override val referencedDeclaration: KtSymbol,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.NonPublicCallFromPublicInlineDeprecation
|
||||
|
||||
internal class ProtectedConstructorCallFromPublicInlineImpl(
|
||||
override val inlineDeclaration: KtSymbol,
|
||||
override val referencedDeclaration: KtSymbol,
|
||||
|
||||
Reference in New Issue
Block a user