[K2] Make CONFLICTING_OVERLOADS + HIDDEN ignore work only for finals

When fixing KT-22004, the analysis was incomplete, the details are
available at KT-63540. This change restricts the ignore of conflicting
overloads on hidden callables only for final ones.

^KT-63540 Fixed
This commit is contained in:
marat.akhin
2023-11-16 20:37:30 +01:00
committed by Space Team
parent e4e4af4d3d
commit 0bc79fe69d
10 changed files with 487 additions and 32 deletions
@@ -27297,6 +27297,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/NoHiddenTransitivityFromClassifierToConstructor.kt");
}
@Test
@TestMetadata("OpenFunctionsInMemberScope.kt")
public void testOpenFunctionsInMemberScope() throws Exception {
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/OpenFunctionsInMemberScope.kt");
}
@Test
@TestMetadata("TypeParameterMultipleBounds.kt")
public void testTypeParameterMultipleBounds() throws Exception {
@@ -27297,6 +27297,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/NoHiddenTransitivityFromClassifierToConstructor.kt");
}
@Test
@TestMetadata("OpenFunctionsInMemberScope.kt")
public void testOpenFunctionsInMemberScope() throws Exception {
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/OpenFunctionsInMemberScope.kt");
}
@Test
@TestMetadata("TypeParameterMultipleBounds.kt")
public void testTypeParameterMultipleBounds() throws Exception {
@@ -25231,6 +25231,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/NoHiddenTransitivityFromClassifierToConstructor.kt");
}
@Test
@TestMetadata("OpenFunctionsInMemberScope.kt")
public void testOpenFunctionsInMemberScope() throws Exception {
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/OpenFunctionsInMemberScope.kt");
}
@Test
@TestMetadata("TypeParameterMultipleBounds.kt")
public void testTypeParameterMultipleBounds() throws Exception {
@@ -25237,6 +25237,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/NoHiddenTransitivityFromClassifierToConstructor.kt");
}
@Test
@TestMetadata("OpenFunctionsInMemberScope.kt")
public void testOpenFunctionsInMemberScope() throws Exception {
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/OpenFunctionsInMemberScope.kt");
}
@Test
@TestMetadata("TypeParameterMultipleBounds.kt")
public void testTypeParameterMultipleBounds() throws Exception {
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirNameConflictsTracker
import org.jetbrains.kotlin.fir.analysis.checkers.declaration.isEffectivelyFinal
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl.Companion.DEFAULT_STATUS_FOR_STATUSLESS_DECLARATIONS
@@ -289,7 +290,7 @@ private fun <D : FirBasedSymbol<*>, S : D> FirDeclarationCollector<D>.collect(
val conflicts = SmartSet.create<FirBasedSymbol<*>>()
for (otherDeclaration in it) {
if (otherDeclaration != declaration && !areNonConflictingCallables(declaration, otherDeclaration, session)) {
if (otherDeclaration != declaration && !areNonConflictingCallables(declaration, otherDeclaration)) {
conflicts.add(otherDeclaration)
declarationConflictingSymbols.getOrPut(otherDeclaration) { SmartSet.create() }.add(declaration)
}
@@ -460,7 +461,7 @@ private fun FirDeclarationCollector<FirBasedSymbol<*>>.collectTopLevelConflict(
conflicting is FirMemberDeclaration &&
!session.visibilityChecker.isVisible(conflicting, session, containingFile, emptyList(), dispatchReceiver = null)
) return
if (areNonConflictingCallables(declaration, conflictingSymbol, session)) return
if (areNonConflictingCallables(declaration, conflictingSymbol)) return
declarationConflictingSymbols.getOrPut(declaration) { SmartSet.create() }.add(conflictingSymbol)
}
@@ -487,10 +488,9 @@ private fun areCompatibleMainFunctions(
&& declaration1.representsMainFunctionAllowingConflictingOverloads(session)
&& declaration2.representsMainFunctionAllowingConflictingOverloads(session)
private fun areNonConflictingCallables(
private fun FirDeclarationCollector<*>.areNonConflictingCallables(
declaration: FirBasedSymbol<*>,
conflicting: FirBasedSymbol<*>,
session: FirSession,
): Boolean {
if (isExpectAndActual(declaration, conflicting)) return true
@@ -498,15 +498,20 @@ private fun areNonConflictingCallables(
val conflictingIsLowPriority = hasLowPriorityAnnotation(conflicting.annotations)
if (declarationIsLowPriority != conflictingIsLowPriority) return true
val declarationIsHidden = declaration.isDeprecationLevelHidden(session.languageVersionSettings)
if (declarationIsHidden) return true
if (declaration !is FirCallableSymbol<*> || conflicting !is FirCallableSymbol<*>) return false
val conflictingIsHidden = conflicting.isDeprecationLevelHidden(session.languageVersionSettings)
if (conflictingIsHidden) return true
val declarationIsFinal = declaration.isEffectivelyFinal(session)
val conflictingIsFinal = conflicting.isEffectivelyFinal(session)
return declaration is FirCallableSymbol<*> &&
conflicting is FirCallableSymbol<*> &&
session.declarationOverloadabilityHelper.isOverloadable(declaration, conflicting)
if (declarationIsFinal && conflictingIsFinal) {
val declarationIsHidden = declaration.isDeprecationLevelHidden(session.languageVersionSettings)
if (declarationIsHidden) return true
val conflictingIsHidden = conflicting.isDeprecationLevelHidden(session.languageVersionSettings)
if (conflictingIsHidden) return true
}
return session.declarationOverloadabilityHelper.isOverloadable(declaration, conflicting)
}
/** Checks for redeclarations of value and type parameters, and local variables. */
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
import org.jetbrains.kotlin.fir.analysis.checkers.modality
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.*
@@ -36,16 +37,31 @@ private inline fun isInsideSpecificClass(
context.containingDeclarations.asReversed().any { it is FirRegularClass && predicate.invoke(it) }
}
internal fun FirMemberDeclaration.isEffectivelyFinal(context: CheckerContext): Boolean {
if (this.isFinal) return true
val containingClass = context.containingDeclarations.lastOrNull() as? FirRegularClass ?: return true
internal fun FirMemberDeclaration.isEffectivelyFinal(context: CheckerContext): Boolean =
this.symbol.isEffectivelyFinal(context.session)
internal fun FirBasedSymbol<*>.isEffectivelyFinal(session: FirSession): Boolean {
if (this.isFinal()) return true
val containingClass = this.getContainingClassSymbol(session) as? FirClassSymbol<*> ?: return true
if (containingClass.isEnumClass) {
// Enum class has enum entries and hence is not considered final.
// Enum class has enum entries and hence is not considered final
return false
}
return containingClass.isFinal
}
private fun FirBasedSymbol<*>.isFinal(): Boolean {
when (this) {
is FirCallableSymbol<*> -> if (this.isFinal) return true
is FirClassLikeSymbol<*> -> if (this.isFinal) return true
else -> return true
}
return false
}
internal fun FirMemberDeclaration.isEffectivelyExpect(
containingClass: FirClass?,
context: CheckerContext,
@@ -0,0 +1,419 @@
// DIAGNOSTICS: -MISPLACED_TYPE_PARAMETER_CONSTRAINTS
// FIR_IDENTICAL
open class MemberScope {
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testBasic()<!> {}
<!CONFLICTING_OVERLOADS!>open fun testBasic()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testIdenticalReturnTypes(): UserKlass<!> = UserKlass()
<!CONFLICTING_OVERLOADS!>open fun testIdenticalReturnTypes(): UserKlass<!> = UserKlass()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testDifferencesInReturnTypePresence(): Unit<!> {}
<!CONFLICTING_OVERLOADS!>open fun testDifferencesInReturnTypePresence()<!> {}
<!CONFLICTING_OVERLOADS!>open fun testDifferencesInReturnTypePresenceReverse(): Unit<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testDifferencesInReturnTypePresenceReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testDifferentReturnTypes(): UserKlassA<!> = UserKlassA()
<!CONFLICTING_OVERLOADS!>open fun testDifferentReturnTypes(): UserKlassB<!> = UserKlassB()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesA(): Invariant<UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesA(): Invariant<out UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesAReverse(): Invariant<UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesAReverse(): Invariant<out UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesB(): Invariant<UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesB(): Invariant<in UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesBReverse(): Invariant<UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesBReverse(): Invariant<in UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesC(): Invariant<UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesC(): Invariant<*><!> = Invariant<UserKlass>()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesCReverse(): Invariant<UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesCReverse(): Invariant<*><!> = Invariant<UserKlass>()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesD(): Invariant<out UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesD(): Invariant<*><!> = Invariant<UserKlass>()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesDReverse(): Invariant<out UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesDReverse(): Invariant<*><!> = Invariant<UserKlass>()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesE(): Invariant<in UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesE(): Invariant<*><!> = Invariant<UserKlass>()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesEReverse(): Invariant<in UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesEReverse(): Invariant<*><!> = Invariant<UserKlass>()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesF(): Invariant<out UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesF(): Invariant<in UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>open fun testVarianceDifferentReturnTypesFReverse(): Invariant<out UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testVarianceDifferentReturnTypesFReverse(): Invariant<in UserKlass><!> = Invariant()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testTypeAliasedReturnTypes(): UserKlass<!> = UserKlass()
<!CONFLICTING_OVERLOADS!>open fun testTypeAliasedReturnTypes(): SameUserKlass<!> = UserKlass()
<!CONFLICTING_OVERLOADS!>open fun testTypeAliasedReturnTypesReverse(): UserKlass<!> = UserKlass()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testTypeAliasedReturnTypesReverse(): SameUserKlass<!> = UserKlass()
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun UserKlass.testIdenticalExtensionReceivers()<!> {}
<!CONFLICTING_OVERLOADS!>open fun UserKlass.testIdenticalExtensionReceivers()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun UserKlass.testTypeAliasedExtensionReceivers()<!> {}
<!CONFLICTING_OVERLOADS!>open fun SameUserKlass.testTypeAliasedExtensionReceivers()<!> {}
<!CONFLICTING_OVERLOADS!>open fun UserKlass.testTypeAliasedExtensionReceiversReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun SameUserKlass.testTypeAliasedExtensionReceiversReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testIdenticalValueParameters(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testIdenticalValueParameters(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testDifferentlyNamedValueParameters(argA: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testDifferentlyNamedValueParameters(argB: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testTypeAliasedValueParameterTypes(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testTypeAliasedValueParameterTypes(arg: SameUserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testTypeAliasedValueParameterTypesReverse(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testTypeAliasedValueParameterTypesReverse(arg: SameUserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testMultipleIdenticalValueParameters(arg1: UserKlassA, arg2: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testMultipleIdenticalValueParameters(arg1: UserKlassA, arg2: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testMultipleDifferentlyNamedValueParametersA(arg1: UserKlassA, arg2A: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testMultipleDifferentlyNamedValueParametersA(arg1: UserKlassA, arg2B: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testMultipleDifferentlyNamedValueParametersB(arg1A: UserKlassA, arg2A: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testMultipleDifferentlyNamedValueParametersB(arg1B: UserKlassA, arg2B: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testMultipleTypeAliasedValueParameterTypesA(arg1: UserKlassA, arg2: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testMultipleTypeAliasedValueParameterTypesA(arg1: UserKlassA, arg2: SameUserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testMultipleTypeAliasedValueParameterTypesAReverse(arg1: UserKlassA, arg2: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testMultipleTypeAliasedValueParameterTypesAReverse(arg1: UserKlassA, arg2: SameUserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testMultipleTypeAliasedValueParameterTypesB(arg1: UserKlassA, arg2: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testMultipleTypeAliasedValueParameterTypesB(arg1: SameUserKlassA, arg2: SameUserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testMultipleTypeAliasedValueParameterTypesBReverse(arg1: UserKlassA, arg2: UserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testMultipleTypeAliasedValueParameterTypesBReverse(arg1: SameUserKlassA, arg2: SameUserKlassB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testValueParameterWithIdenticalDefaultArguments(arg: UserKlass = defaultArgument)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testValueParameterWithIdenticalDefaultArguments(arg: UserKlass = defaultArgument)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testDifferencesInValueParameterDefaultArgumentsPresence(arg: UserKlass = defaultArgument)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testDifferencesInValueParameterDefaultArgumentsPresence(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testDifferencesInValueParameterDefaultArgumentsPresenceReverse(arg: UserKlass = defaultArgument)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testDifferencesInValueParameterDefaultArgumentsPresenceReverse(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testValueParameterWithDifferentDefaultArguments(arg: UserKlass = defaultArgumentA)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testValueParameterWithDifferentDefaultArguments(arg: UserKlass = defaultArgumentB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testValueParameterWithAliasedDefaultArguments(arg: UserKlass = defaultArgument)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testValueParameterWithAliasedDefaultArguments(arg: UserKlass = sameDefaultArgument)<!> {}
<!CONFLICTING_OVERLOADS!>open fun testValueParameterWithAliasedDefaultArgumentsReverse(arg: UserKlass = defaultArgument)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun testValueParameterWithAliasedDefaultArgumentsReverse(arg: UserKlass = sameDefaultArgument)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testIdenticalTypeParametersA()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T> testIdenticalTypeParametersA()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testIdenticalTypeParametersB(arg: T)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T> testIdenticalTypeParametersB(arg: T)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testIdenticalTypeParametersC(arg: Invariant<T>)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T> testIdenticalTypeParametersC(arg: Invariant<T>)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <TA> testDifferentlyNamedTypeParametersA()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <TB> testDifferentlyNamedTypeParametersA()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <TA> testDifferentlyNamedTypeParametersB(arg: TA)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <TB> testDifferentlyNamedTypeParametersB(arg: TB)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <TA> testDifferentlyNamedTypeParametersC(arg: Invariant<TA>)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <TB> testDifferentlyNamedTypeParametersC(arg: Invariant<TB>)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T1, T2> testMultipleIdenticalTypeParameters()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T1, T2> testMultipleIdenticalTypeParameters()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T1, T2A> testMultipleDifferentlyNamedTypeParametersA()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T1, T2B> testMultipleDifferentlyNamedTypeParametersA()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T1A, T2A> testMultipleDifferentlyNamedTypeParametersB()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T1B, T2B> testMultipleDifferentlyNamedTypeParametersB()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterface> testTypeParameterWithIdenticalUpperBoundsA()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterface> testTypeParameterWithIdenticalUpperBoundsA()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterface> testTypeParameterWithIdenticalUpperBoundsB(arg: T)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterface> testTypeParameterWithIdenticalUpperBoundsB(arg: T)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterface> testTypeParameterWithIdenticalUpperBoundsC(arg: Invariant<T>)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterface> testTypeParameterWithIdenticalUpperBoundsC(arg: Invariant<T>)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterface> testDifferencesInTypeParameterUpperBoundsPresence()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T> testDifferencesInTypeParameterUpperBoundsPresence()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterface> testDifferencesInTypeParameterUpperBoundsPresenceReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testDifferencesInTypeParameterUpperBoundsPresenceReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithDifferentUpperBounds()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceB> testTypeParameterWithDifferentUpperBounds()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsA()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<out UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsA()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsAReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<out UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsAReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsB()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<in UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsB()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsBReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<in UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsBReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsC()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<*>> testTypeParameterWithVarianceDifferentUpperBoundsC()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsCReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<*>> testTypeParameterWithVarianceDifferentUpperBoundsCReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<out UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsD()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<*>> testTypeParameterWithVarianceDifferentUpperBoundsD()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<out UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsDReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<*>> testTypeParameterWithVarianceDifferentUpperBoundsDReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<in UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsE()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<*>> testTypeParameterWithVarianceDifferentUpperBoundsE()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<in UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsEReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<*>> testTypeParameterWithVarianceDifferentUpperBoundsEReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<out UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsF()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<in UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsF()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: Invariant<out UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsFReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: Invariant<in UserInterface>> testTypeParameterWithVarianceDifferentUpperBoundsFReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterface> testTypeParameterWithTypeAliasedUpperBoundsA()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterface> testTypeParameterWithTypeAliasedUpperBoundsA()<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterface> testTypeParameterWithTypeAliasedUpperBoundsAReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterface> testTypeParameterWithTypeAliasedUpperBoundsAReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterface> testTypeParameterWithTypeAliasedUpperBoundsB(arg: T)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterface> testTypeParameterWithTypeAliasedUpperBoundsB(arg: T)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterface> testTypeParameterWithTypeAliasedUpperBoundsBReverse(arg: T)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterface> testTypeParameterWithTypeAliasedUpperBoundsBReverse(arg: T)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterface> testTypeParameterWithTypeAliasedUpperBoundsC(arg: Invariant<T>)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterface> testTypeParameterWithTypeAliasedUpperBoundsC(arg: Invariant<T>)<!> {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterface> testTypeParameterWithTypeAliasedUpperBoundsCReverse(arg: Invariant<T>)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterface> testTypeParameterWithTypeAliasedUpperBoundsCReverse(arg: Invariant<T>)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleIdenticalUpperBoundsAA()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleIdenticalUpperBoundsAA()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleIdenticalUpperBoundsAB(arg: T)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleIdenticalUpperBoundsAB(arg: T)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleIdenticalUpperBoundsAC(arg: Invariant<T>)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleIdenticalUpperBoundsAC(arg: Invariant<T>)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleIdenticalUpperBoundsBA()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleIdenticalUpperBoundsBA()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleIdenticalUpperBoundsBB(arg: T)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleIdenticalUpperBoundsBB(arg: T)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleIdenticalUpperBoundsBC(arg: Invariant<T>)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleIdenticalUpperBoundsBC(arg: Invariant<T>)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testDifferencesInTypeParameterMultipleUpperBoundsPresenceA()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testDifferencesInTypeParameterMultipleUpperBoundsPresenceA()<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testDifferencesInTypeParameterMultipleUpperBoundsPresenceB()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testDifferencesInTypeParameterMultipleUpperBoundsPresenceB()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleDifferentUpperBoundsAA()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleDifferentUpperBoundsAA()<!> where T: UserInterfaceA, T: UserInterfaceC {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleDifferentUpperBoundsAB()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleDifferentUpperBoundsAB()<!> where T: UserInterfaceC {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceB> testTypeParameterWithMultipleDifferentUpperBoundsAC()<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceC> testTypeParameterWithMultipleDifferentUpperBoundsAC()<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleDifferentUpperBoundsBA()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleDifferentUpperBoundsBA()<!> where T: UserInterfaceC, T: UserInterfaceD {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleDifferentUpperBoundsBB()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceC> testTypeParameterWithMultipleDifferentUpperBoundsBB()<!> where T: UserInterfaceD {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAAA()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAAA()<!> where T: UserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAAAReverse()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAAAReverse()<!> where T: UserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAAB(arg: T)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAAB(arg: T)<!> where T: UserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAABReverse(arg: T)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAABReverse(arg: T)<!> where T: UserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAAC(arg: Invariant<T>)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAAC(arg: Invariant<T>)<!> where T: UserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAACReverse(arg: Invariant<T>)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsAACReverse(arg: Invariant<T>)<!> where T: UserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABA()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABA()<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABAReverse()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABAReverse()<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABB(arg: T)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABB(arg: T)<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABBReverse(arg: T)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABBReverse(arg: T)<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABC(arg: Invariant<T>)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABC(arg: Invariant<T>)<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABCReverse(arg: Invariant<T>)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsABCReverse(arg: Invariant<T>)<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACA()<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACA()<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACAReverse()<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACAReverse()<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACB(arg: T)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACB(arg: T)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACBReverse(arg: T)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACBReverse(arg: T)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACC(arg: Invariant<T>)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACC(arg: Invariant<T>)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACCReverse(arg: Invariant<T>)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterfaceB> testTypeParameterWithMultipleTypeAliasedUpperBoundsACCReverse(arg: Invariant<T>)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBAA()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBAA()<!> where T: SameUserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBAAReverse()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBAAReverse()<!> where T: SameUserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBAB(arg: T)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBAB(arg: T)<!> where T: SameUserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBABReverse(arg: T)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBABReverse(arg: T)<!> where T: SameUserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBAC(arg: Invariant<T>)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBAC(arg: Invariant<T>)<!> where T: SameUserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBACReverse(arg: Invariant<T>)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleTypeAliasedUpperBoundsBACReverse(arg: Invariant<T>)<!> where T: SameUserInterfaceA, T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBA()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBA()<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBAReverse()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBAReverse()<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBB(arg: T)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBB(arg: T)<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBBReverse(arg: T)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBBReverse(arg: T)<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBC(arg: Invariant<T>)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: SameUserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBC(arg: Invariant<T>)<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBCReverse(arg: Invariant<T>)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: SameUserInterfaceA> testTypeParameterWithMultipleTypeAliasedUpperBoundsBBCReverse(arg: Invariant<T>)<!> where T: SameUserInterfaceB {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleShuffledUpperBoundsAA()<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleShuffledUpperBoundsAA()<!> where T: UserInterfaceB, T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleShuffledUpperBoundsAB(arg: T)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleShuffledUpperBoundsAB(arg: T)<!> where T: UserInterfaceB, T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T> testTypeParameterWithMultipleShuffledUpperBoundsAC(arg: Invariant<T>)<!> where T: UserInterfaceA, T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T> testTypeParameterWithMultipleShuffledUpperBoundsAC(arg: Invariant<T>)<!> where T: UserInterfaceB, T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleShuffledUpperBoundsBA()<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceB> testTypeParameterWithMultipleShuffledUpperBoundsBA()<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleShuffledUpperBoundsBB(arg: T)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceB> testTypeParameterWithMultipleShuffledUpperBoundsBB(arg: T)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun <T: UserInterfaceA> testTypeParameterWithMultipleShuffledUpperBoundsBC(arg: Invariant<T>)<!> where T: UserInterfaceB {}
<!CONFLICTING_OVERLOADS!>open fun <T: UserInterfaceB> testTypeParameterWithMultipleShuffledUpperBoundsBC(arg: Invariant<T>)<!> where T: UserInterfaceA {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) infix open fun UserKlass.testIdenticalPresenceOfInfixModifier(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>infix open fun UserKlass.testIdenticalPresenceOfInfixModifier(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) infix open fun UserKlass.testDifferencesInInfixModifierPresence(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>open fun UserKlass.testDifferencesInInfixModifierPresence(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>infix open fun UserKlass.testDifferencesInInfixModifierPresenceReverse(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun UserKlass.testDifferencesInInfixModifierPresenceReverse(arg: UserKlass)<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) operator open fun UserKlassA.unaryPlus()<!> {}
<!CONFLICTING_OVERLOADS!>operator open fun UserKlassA.unaryPlus()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) operator open fun UserKlassB.unaryPlus()<!> {}
<!CONFLICTING_OVERLOADS!>open fun UserKlassB.unaryPlus()<!> {}
<!CONFLICTING_OVERLOADS!>operator open fun UserKlassB.unaryMinus()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) open fun UserKlassB.unaryMinus()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) internal open fun testIdenticalInternalVisibility()<!> {}
<!CONFLICTING_OVERLOADS!>internal open fun testIdenticalInternalVisibility()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) internal open fun testDifferencesInInternalAndPublicVisibilities()<!> {}
<!CONFLICTING_OVERLOADS!>public open fun testDifferencesInInternalAndPublicVisibilities()<!> {}
<!CONFLICTING_OVERLOADS!>internal open fun testDifferencesInInternalAndPublicVisibilitiesReverse()<!> {}
<!CONFLICTING_OVERLOADS!>@Deprecated(message = "", level = DeprecationLevel.HIDDEN) public open fun testDifferencesInInternalAndPublicVisibilitiesReverse()<!> {}
}
open class Invariant<T>
class UserKlass
class UserKlassA
class UserKlassB
typealias SameUserKlass = UserKlass
typealias SameUserKlassA = UserKlassA
typealias SameUserKlassB = UserKlassB
val defaultArgument = UserKlass()
val defaultArgumentA = UserKlass()
val defaultArgumentB = UserKlass()
val sameDefaultArgument = defaultArgument
interface UserInterface
interface UserInterfaceA
interface UserInterfaceB
interface UserInterfaceC
interface UserInterfaceD
typealias SameUserInterface = UserInterface
typealias SameUserInterfaceA = UserInterfaceA
typealias SameUserInterfaceB = UserInterfaceB
@@ -1,17 +0,0 @@
import java.io.Serializable
interface Test1 {
fun <T> foo(t: T) where T : Cloneable, T : Serializable
@Deprecated("foo", level = DeprecationLevel.HIDDEN)
fun <T> foo(t: T) where T : Serializable, T : Cloneable
}
interface I1
interface I2 : I1
interface Test2 {
fun <T> foo(t: T) where T : I1, T : I2
@Deprecated("foo", level = DeprecationLevel.HIDDEN)
fun <T> foo(t: T) where T : I2, T : I1
}
@@ -1,3 +1,5 @@
// FIR_IDENTICAL
import java.io.Serializable
interface Test1 {
@@ -27297,6 +27297,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/NoHiddenTransitivityFromClassifierToConstructor.kt");
}
@Test
@TestMetadata("OpenFunctionsInMemberScope.kt")
public void testOpenFunctionsInMemberScope() throws Exception {
runTest("compiler/testData/diagnostics/tests/overload/noConflictingOverloadsWithDeprecatedHidden/OpenFunctionsInMemberScope.kt");
}
@Test
@TestMetadata("TypeParameterMultipleBounds.kt")
public void testTypeParameterMultipleBounds() throws Exception {