[FIR] Add diagnostic when annotation argument is resolved ambiguously
Annotation arguments that are resolved in COMPILER_REQUIRED_ANNOTATIONS phase are resolved again in ANNOTATION_ARGUMENTS phase. If they resolve to a different symbol, report an error. KT-56177
This commit is contained in:
committed by
Space Team
parent
9dda5e4fcd
commit
2139914061
+1
@@ -31,6 +31,7 @@ abstract class FirErrorResolvedQualifier : FirResolvedQualifier(), FirDiagnostic
|
||||
abstract override val symbol: FirClassLikeSymbol<*>?
|
||||
abstract override val isNullableLHSForCallableReference: Boolean
|
||||
abstract override val resolvedToCompanionObject: Boolean
|
||||
abstract override val isFullyQualified: Boolean
|
||||
abstract override val nonFatalDiagnostics: List<ConeDiagnostic>
|
||||
abstract override val typeArguments: List<FirTypeProjection>
|
||||
abstract override val diagnostic: ConeDiagnostic
|
||||
|
||||
@@ -30,6 +30,7 @@ abstract class FirResolvedQualifier : FirExpression() {
|
||||
abstract val symbol: FirClassLikeSymbol<*>?
|
||||
abstract val isNullableLHSForCallableReference: Boolean
|
||||
abstract val resolvedToCompanionObject: Boolean
|
||||
abstract val isFullyQualified: Boolean
|
||||
abstract val nonFatalDiagnostics: List<ConeDiagnostic>
|
||||
abstract val typeArguments: List<FirTypeProjection>
|
||||
|
||||
|
||||
+1
@@ -35,6 +35,7 @@ interface FirAbstractResolvedQualifierBuilder {
|
||||
abstract var symbol: FirClassLikeSymbol<*>?
|
||||
abstract var isNullableLHSForCallableReference: Boolean
|
||||
abstract var resolvedToCompanionObject: Boolean
|
||||
abstract var isFullyQualified: Boolean
|
||||
abstract val nonFatalDiagnostics: MutableList<ConeDiagnostic>
|
||||
abstract val typeArguments: MutableList<FirTypeProjection>
|
||||
|
||||
|
||||
+2
@@ -39,6 +39,7 @@ class FirErrorResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, Fi
|
||||
override var relativeClassFqName: FqName? = null
|
||||
override var symbol: FirClassLikeSymbol<*>? = null
|
||||
override var isNullableLHSForCallableReference: Boolean = false
|
||||
override var isFullyQualified: Boolean = false
|
||||
override val nonFatalDiagnostics: MutableList<ConeDiagnostic> = mutableListOf()
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
lateinit var diagnostic: ConeDiagnostic
|
||||
@@ -51,6 +52,7 @@ class FirErrorResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, Fi
|
||||
relativeClassFqName,
|
||||
symbol,
|
||||
isNullableLHSForCallableReference,
|
||||
isFullyQualified,
|
||||
nonFatalDiagnostics.toMutableOrEmpty(),
|
||||
typeArguments.toMutableOrEmpty(),
|
||||
diagnostic,
|
||||
|
||||
+2
@@ -41,6 +41,7 @@ class FirResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, FirAnno
|
||||
override var relativeClassFqName: FqName? = null
|
||||
override var symbol: FirClassLikeSymbol<*>? = null
|
||||
override var isNullableLHSForCallableReference: Boolean = false
|
||||
override var isFullyQualified: Boolean = false
|
||||
override val nonFatalDiagnostics: MutableList<ConeDiagnostic> = mutableListOf()
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
|
||||
@@ -53,6 +54,7 @@ class FirResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, FirAnno
|
||||
relativeClassFqName,
|
||||
symbol,
|
||||
isNullableLHSForCallableReference,
|
||||
isFullyQualified,
|
||||
nonFatalDiagnostics.toMutableOrEmpty(),
|
||||
typeArguments.toMutableOrEmpty(),
|
||||
)
|
||||
|
||||
+1
@@ -33,6 +33,7 @@ internal class FirErrorResolvedQualifierImpl(
|
||||
override val relativeClassFqName: FqName?,
|
||||
override val symbol: FirClassLikeSymbol<*>?,
|
||||
override var isNullableLHSForCallableReference: Boolean,
|
||||
override val isFullyQualified: Boolean,
|
||||
override var nonFatalDiagnostics: MutableOrEmptyList<ConeDiagnostic>,
|
||||
override var typeArguments: MutableOrEmptyList<FirTypeProjection>,
|
||||
override val diagnostic: ConeDiagnostic,
|
||||
|
||||
+1
@@ -34,6 +34,7 @@ internal class FirResolvedQualifierImpl(
|
||||
override var relativeClassFqName: FqName?,
|
||||
override val symbol: FirClassLikeSymbol<*>?,
|
||||
override var isNullableLHSForCallableReference: Boolean,
|
||||
override val isFullyQualified: Boolean,
|
||||
override var nonFatalDiagnostics: MutableOrEmptyList<ConeDiagnostic>,
|
||||
override var typeArguments: MutableOrEmptyList<FirTypeProjection>,
|
||||
) : FirResolvedQualifier() {
|
||||
|
||||
+2
-2
@@ -354,12 +354,12 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
|
||||
builder(resolvedQualifier) {
|
||||
parents += abstractResolvedQualifierBuilder
|
||||
defaultFalse("isNullableLHSForCallableReference")
|
||||
defaultFalse("isNullableLHSForCallableReference", "isFullyQualified")
|
||||
}
|
||||
|
||||
builder(errorResolvedQualifier) {
|
||||
parents += abstractResolvedQualifierBuilder
|
||||
defaultFalse("isNullableLHSForCallableReference")
|
||||
defaultFalse("isNullableLHSForCallableReference", "isFullyQualified")
|
||||
}
|
||||
|
||||
// builder(safeCallExpression) {
|
||||
|
||||
+1
@@ -595,6 +595,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+field("symbol", classLikeSymbolType, nullable = true)
|
||||
+booleanField("isNullableLHSForCallableReference", withReplace = true)
|
||||
+booleanField("resolvedToCompanionObject", withReplace = true)
|
||||
+booleanField("isFullyQualified")
|
||||
+fieldList("nonFatalDiagnostics", coneDiagnosticType, useMutableOrEmpty = true)
|
||||
+typeArguments.withTransform()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user