Drop QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE diagnostic in 1.7.0

#KT-49016 Fixed
This commit is contained in:
Mikhail Glukhikh
2021-10-19 16:49:22 +03:00
committed by teamcity
parent f53cd22253
commit 0739925869
12 changed files with 28 additions and 15 deletions
@@ -1,3 +1,4 @@
// !LANGUAGE: -QualifiedSupertypeMayBeExtendedByOtherSupertype
interface IBase<T> {
fun foo() {}
fun bar() {}
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.analysis.checkers.expression
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.findClosestClassOrObject
import org.jetbrains.kotlin.fir.analysis.checkers.fullyExpandedClass
@@ -20,6 +21,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
object FirQualifiedSupertypeExtendedByOtherSupertypeChecker : FirQualifiedAccessExpressionChecker() {
override fun check(expression: FirQualifiedAccessExpression, context: CheckerContext, reporter: DiagnosticReporter) {
if (context.languageVersionSettings.supportsFeature(LanguageFeature.QualifiedSupertypeMayBeExtendedByOtherSupertype)) return
// require to be called over a super reference
val superReference = expression.calleeReference.safeAs<FirSuperReference>()
?.takeIf { it.hadExplicitTypeInSource() }
@@ -500,7 +500,10 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
context.trace.report(TYPE_ARGUMENTS_REDUNDANT_IN_SUPER_QUALIFIER.on(redundantTypeArguments));
}
if (result != null && (validClassifier || validType)) {
if (!components.languageVersionSettings.supportsFeature(LanguageFeature.QualifiedSupertypeMayBeExtendedByOtherSupertype) &&
result != null &&
(validClassifier || validType)
) {
checkResolvedExplicitlyQualifiedSupertype(context.trace, result, supertypes, superTypeQualifier);
}
}
@@ -1,4 +1,5 @@
// !DIAGNOSTICS: -EXPOSED_PARAMETER_TYPE -NOTHING_TO_INLINE
// !LANGUAGE: +QualifiedSupertypeMayBeExtendedByOtherSupertype
// FILE: main.kt
open class AndroidTargetConfigurator :
@@ -33,10 +34,10 @@ open class AndroidTargetConfigurator :
}
inline fun anonymousInline() {
super.classFun() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
}
fun run() = super.classFun() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
fun run() = super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
}.run()
}
@@ -1,4 +1,5 @@
// !DIAGNOSTICS: -EXPOSED_PARAMETER_TYPE -NOTHING_TO_INLINE
// !LANGUAGE: +QualifiedSupertypeMayBeExtendedByOtherSupertype
// FILE: main.kt
open class AndroidTargetConfigurator :
@@ -33,10 +34,10 @@ open class AndroidTargetConfigurator :
}
inline fun anonymousInline() {
super.classFun() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
}
fun run() = super.classFun() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
fun run() = super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
}.run()
}
@@ -1,4 +1,4 @@
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline +QualifiedSupertypeMayBeExtendedByOtherSupertype
// !DIAGNOSTICS: -EXPOSED_PARAMETER_TYPE -NOTHING_TO_INLINE
// FILE: main.kt
@@ -34,10 +34,10 @@ open class AndroidTargetConfigurator :
}
inline fun anonymousInline() {
super.classFun() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
}
fun run() = super.classFun() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
fun run() = super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
}.run()
}
@@ -1,4 +1,4 @@
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline
// !LANGUAGE: -ProhibitSuperCallsFromPublicInline +QualifiedSupertypeMayBeExtendedByOtherSupertype
// !DIAGNOSTICS: -EXPOSED_PARAMETER_TYPE -NOTHING_TO_INLINE
// FILE: main.kt
@@ -34,10 +34,10 @@ open class AndroidTargetConfigurator :
}
inline fun anonymousInline() {
super.classFun() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
}
fun run() = super.classFun() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
fun run() = super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
}.run()
}
@@ -1,4 +1,5 @@
// FIR_IDENTICAL
// !LANGUAGE: +QualifiedSupertypeMayBeExtendedByOtherSupertype
interface IBase<T> {
fun foo() {}
fun bar() {}
@@ -11,8 +12,8 @@ interface IDerived<T> : IBase<T> {
class Test : IDerived<String>, IBase<String> {
fun test() {
super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>IBase<!>>.foo()
super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>IBase<!>>.bar()
super<IBase>.foo()
super<IBase>.bar()
super<IDerived>.foo()
super<IDerived>.bar()
super<IDerived>.qux()
@@ -1,4 +1,5 @@
// FIR_IDENTICAL
// !LANGUAGE: +QualifiedSupertypeMayBeExtendedByOtherSupertype
interface IBase {
fun foo() {}
fun bar() {}
@@ -17,8 +18,8 @@ class Test : IDerived1, IBase, IDerived2 {
override fun foo() {}
fun test() {
super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>IBase<!>>.foo()
super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>IBase<!>>.bar()
super<IBase>.foo()
super<IBase>.bar()
super<IDerived1>.foo()
super<IDerived1>.bar()
@@ -1,4 +1,5 @@
// !JVM_TARGET: 1.8
// !LANGUAGE: -QualifiedSupertypeMayBeExtendedByOtherSupertype
// FILE: 1.kt
interface A {
<!JVM_DEFAULT_IN_DECLARATION!>@<!DEPRECATION!>JvmDefault<!><!>
@@ -1,4 +1,5 @@
// !JVM_TARGET: 1.8
// !LANGUAGE: -QualifiedSupertypeMayBeExtendedByOtherSupertype
// FILE: 1.kt
interface A {
<!JVM_DEFAULT_IN_DECLARATION!>@<!DEPRECATION!>JvmDefault<!>
@@ -244,6 +244,7 @@ enum class LanguageFeature(
ConsiderExtensionReceiverFromConstrainsInLambda(KOTLIN_1_7, kind = BUG_FIX), // KT-49832
ProperInternalVisibilityCheckInImportingScope(KOTLIN_1_7, kind = BUG_FIX),
InlineClassImplementationByDelegation(KOTLIN_1_7),
QualifiedSupertypeMayBeExtendedByOtherSupertype(KOTLIN_1_7),
// 1.8