// DIAGNOSTICS: -NOTHING_TO_INLINE, -NO_TAIL_CALLS_FOUND, -MISPLACED_TYPE_PARAMETER_CONSTRAINTS package pkg class TestBasic { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } fun TestBasic() {} class TestBasicReverse { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestBasicReverse() {} class TestIdenticalReturnTypes { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } fun TestIdenticalReturnTypes(): TestIdenticalReturnTypes = TestIdenticalReturnTypes() class TestIdenticalReturnTypesReverse { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestIdenticalReturnTypesReverse(): TestIdenticalReturnTypesReverse = TestIdenticalReturnTypesReverse() class TestFunctionWithReifiedTypeParameterVsConstructorA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } inline fun TestFunctionWithReifiedTypeParameterVsConstructorA() {} class TestFunctionWithReifiedTypeParameterVsConstructorAReverse { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) inline fun TestFunctionWithReifiedTypeParameterVsConstructorAReverse() {} class TestFunctionWithReifiedTypeParameterVsConstructorB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: T) } inline fun TestFunctionWithReifiedTypeParameterVsConstructorB(arg: T) {} class TestFunctionWithReifiedTypeParameterVsConstructorBReverse { constructor(arg: T) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) inline fun TestFunctionWithReifiedTypeParameterVsConstructorBReverse(arg: T) {} class TestFunctionWithReifiedTypeParameterVsConstructorC { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: Invariant) } inline fun TestFunctionWithReifiedTypeParameterVsConstructorC(arg: Invariant) {} class TestFunctionWithReifiedTypeParameterVsConstructorCReverse { constructor(arg: Invariant) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) inline fun TestFunctionWithReifiedTypeParameterVsConstructorCReverse(arg: Invariant) {} class TestInlineFunctionVsConstructor { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } inline fun TestInlineFunctionVsConstructor() {} class TestInlineFunctionVsConstructorReverse { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) inline fun TestInlineFunctionVsConstructorReverse() {} class TestTailrecFunctionVsConstructor { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } tailrec fun TestTailrecFunctionVsConstructor() {} class TestTailrecFunctionVsConstructorReverse { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) tailrec fun TestTailrecFunctionVsConstructorReverse() {} class TestFunctionVsPrimaryConstructor @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() fun TestFunctionVsPrimaryConstructor() {} class TestFunctionVsPrimaryConstructorReverse constructor() {} @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestFunctionVsPrimaryConstructorReverse() {} class TestFunctionVsDelegatedPrimaryConstructorCall constructor(placeholder: UserKlass) { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() : this(UserKlass()) } fun TestFunctionVsDelegatedPrimaryConstructorCall() {} class TestFunctionVsDelegatedPrimaryConstructorCallReverse constructor(placeholder: UserKlass) { constructor() : this(UserKlass()) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestFunctionVsDelegatedPrimaryConstructorCallReverse() {} open class SuperConstructorSource constructor(placeholder: UserKlass) class TestFunctionVsDelegatedSuperConstructorCall: SuperConstructorSource { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() : super(UserKlass()) } fun TestFunctionVsDelegatedSuperConstructorCall() {} class TestFunctionVsDelegatedSuperConstructorCallReverse: SuperConstructorSource { constructor() : super(UserKlass()) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestFunctionVsDelegatedSuperConstructorCallReverse() {} class TestIdenticalValueParameters { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: UserKlass) } fun TestIdenticalValueParameters(arg: UserKlass) {} class TestIdenticalValueParametersReverse { constructor(arg: UserKlass) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestIdenticalValueParametersReverse(arg: UserKlass) {} class TestDifferentlyNamedValueParameters { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(argA: UserKlass) } fun TestDifferentlyNamedValueParameters(argB: UserKlass) {} class TestDifferentlyNamedValueParametersReverse { constructor(argA: UserKlass) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestDifferentlyNamedValueParametersReverse(argB: UserKlass) {} class TestTypeAliasedValueParameterTypesA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: UserKlass) } fun TestTypeAliasedValueParameterTypesA(arg: SameUserKlass) {} class TestTypeAliasedValueParameterTypesAReverse { constructor(arg: UserKlass) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeAliasedValueParameterTypesAReverse(arg: SameUserKlass) {} class TestTypeAliasedValueParameterTypesB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: SameUserKlass) } fun TestTypeAliasedValueParameterTypesB(arg: UserKlass) {} class TestTypeAliasedValueParameterTypesBReverse { constructor(arg: SameUserKlass) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeAliasedValueParameterTypesBReverse(arg: UserKlass) {} class TestMultipleIdenticalValueParameters { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg1: UserKlassA, arg2: UserKlassB) } fun TestMultipleIdenticalValueParameters(arg1: UserKlassA, arg2: UserKlassB) {} class TestMultipleIdenticalValueParametersReverse { constructor(arg1: UserKlassA, arg2: UserKlassB) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestMultipleIdenticalValueParametersReverse(arg1: UserKlassA, arg2: UserKlassB) {} class TestMultipleDifferentlyNamedValueParametersA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg1: UserKlassA, arg2A: UserKlassB) } fun TestMultipleDifferentlyNamedValueParametersA(arg1: UserKlassA, arg2B: UserKlassB) {} class TestMultipleDifferentlyNamedValueParametersAReverse { constructor(arg1: UserKlassA, arg2A: UserKlassB) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestMultipleDifferentlyNamedValueParametersAReverse(arg1: UserKlassA, arg2B: UserKlassB) {} class TestMultipleDifferentlyNamedValueParametersB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg1A: UserKlassA, arg2A: UserKlassB) } fun TestMultipleDifferentlyNamedValueParametersB(arg1B: UserKlassA, arg2B: UserKlassB) {} class TestMultipleDifferentlyNamedValueParametersBReverse { constructor(arg1A: UserKlassA, arg2A: UserKlassB) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestMultipleDifferentlyNamedValueParametersBReverse(arg1B: UserKlassA, arg2B: UserKlassB) {} class TestMultipleTypeAliasedValueParameterTypesA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg1: UserKlassA, arg2: SameUserKlassB) } fun TestMultipleTypeAliasedValueParameterTypesA(arg1: UserKlassA, arg2: SameUserKlassB) {} class TestMultipleTypeAliasedValueParameterTypesAReverse { constructor(arg1: UserKlassA, arg2: SameUserKlassB) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestMultipleTypeAliasedValueParameterTypesAReverse(arg1: UserKlassA, arg2: SameUserKlassB) {} class TestMultipleTypeAliasedValueParameterTypesB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg1: SameUserKlassA, arg2: SameUserKlassB) } fun TestMultipleTypeAliasedValueParameterTypesB(arg1: SameUserKlassA, arg2: SameUserKlassB) {} class TestMultipleTypeAliasedValueParameterTypesBReverse { constructor(arg1: SameUserKlassA, arg2: SameUserKlassB) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestMultipleTypeAliasedValueParameterTypesBReverse(arg1: SameUserKlassA, arg2: SameUserKlassB) {} class TestIdenticalTypeParametersA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } fun TestIdenticalTypeParametersA() {} class TestIdenticalTypeParametersAReverse { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestIdenticalTypeParametersAReverse() {} class TestIdenticalTypeParametersB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: T) } fun TestIdenticalTypeParametersB(arg: T) {} class TestIdenticalTypeParametersBReverse { constructor(arg: T) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestIdenticalTypeParametersBReverse(arg: T) {} class TestIdenticalTypeParametersC { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: Invariant) } fun TestIdenticalTypeParametersC(arg: Invariant) {} class TestIdenticalTypeParametersCReverse { constructor(arg: Invariant) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestIdenticalTypeParametersCReverse(arg: Invariant) {} class TestMultipleIdenticalTypeParameters { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } fun TestMultipleIdenticalTypeParameters() {} class TestMultipleIdenticalTypeParametersReverse { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestMultipleIdenticalTypeParametersReverse() {} class TestTypeParameterWithIdenticalUpperBoundsA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } fun TestTypeParameterWithIdenticalUpperBoundsA() {} class TestTypeParameterWithIdenticalUpperBoundsAReverse { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithIdenticalUpperBoundsAReverse() {} class TestTypeParameterWithIdenticalUpperBoundsB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: T) } fun TestTypeParameterWithIdenticalUpperBoundsB(arg: T) {} class TestTypeParameterWithIdenticalUpperBoundsBReverse { constructor(arg: T) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithIdenticalUpperBoundsBReverse(arg: T) {} class TestTypeParameterWithIdenticalUpperBoundsC { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: Invariant) } fun TestTypeParameterWithIdenticalUpperBoundsC(arg: Invariant) {} class TestTypeParameterWithIdenticalUpperBoundsCReverse { constructor(arg: Invariant) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithIdenticalUpperBoundsCReverse(arg: Invariant) {} class TestTypeParameterWithMultipleIdenticalUpperBoundsAA where T: UserInterfaceA, T: UserInterfaceB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } fun TestTypeParameterWithMultipleIdenticalUpperBoundsAA() where T: UserInterfaceA, T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsAAReverse where T: UserInterfaceA, T: UserInterfaceB { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithMultipleIdenticalUpperBoundsAAReverse() where T: UserInterfaceA, T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsAB where T: UserInterfaceA, T: UserInterfaceB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: T) } fun TestTypeParameterWithMultipleIdenticalUpperBoundsAB(arg: T) where T: UserInterfaceA, T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsABReverse where T: UserInterfaceA, T: UserInterfaceB { constructor(arg: T) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithMultipleIdenticalUpperBoundsABReverse(arg: T) where T: UserInterfaceA, T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsAC where T: UserInterfaceA, T: UserInterfaceB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: Invariant) } fun TestTypeParameterWithMultipleIdenticalUpperBoundsAC(arg: Invariant) where T: UserInterfaceA, T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsACReverse where T: UserInterfaceA, T: UserInterfaceB { constructor(arg: Invariant) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithMultipleIdenticalUpperBoundsACReverse(arg: Invariant) where T: UserInterfaceA, T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsBA where T: UserInterfaceB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor() } fun TestTypeParameterWithMultipleIdenticalUpperBoundsBA() where T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsBAReverse where T: UserInterfaceB { constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithMultipleIdenticalUpperBoundsBAReverse() where T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsBB where T: UserInterfaceB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: T) } fun TestTypeParameterWithMultipleIdenticalUpperBoundsBB(arg: T) where T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsBBReverse where T: UserInterfaceB { constructor(arg: T) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithMultipleIdenticalUpperBoundsBBReverse(arg: T) where T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsBC where T: UserInterfaceB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) constructor(arg: Invariant) } fun TestTypeParameterWithMultipleIdenticalUpperBoundsBC(arg: Invariant) where T: UserInterfaceB {} class TestTypeParameterWithMultipleIdenticalUpperBoundsBCReverse where T: UserInterfaceB { constructor(arg: Invariant) } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) fun TestTypeParameterWithMultipleIdenticalUpperBoundsBCReverse(arg: Invariant) where T: UserInterfaceB {} class TestIdenticalPrivateVisibility { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) private constructor() } private fun TestIdenticalPrivateVisibility() {} class TestIdenticalPrivateVisibilityReverse { private constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) private fun TestIdenticalPrivateVisibilityReverse() {} class TestIdenticalInternalVisibility { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) internal constructor() } internal fun TestIdenticalInternalVisibility() {} class TestIdenticalInternalVisibilityReverse { internal constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) internal fun TestIdenticalInternalVisibilityReverse() {} class TestDifferencesInPrivateAndPublicVisibilitiesA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) private constructor() } public fun TestDifferencesInPrivateAndPublicVisibilitiesA() {} class TestDifferencesInPrivateAndPublicVisibilitiesAReverse { private constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) public fun TestDifferencesInPrivateAndPublicVisibilitiesAReverse() {} class TestDifferencesInPrivateAndPublicVisibilitiesB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) public constructor() } private fun TestDifferencesInPrivateAndPublicVisibilitiesB() {} class TestDifferencesInPrivateAndPublicVisibilitiesBReverse { public constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) private fun TestDifferencesInPrivateAndPublicVisibilitiesBReverse() {} class TestDifferencesInInternalAndPublicVisibilitiesA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) internal constructor() } public fun TestDifferencesInInternalAndPublicVisibilitiesA() {} class TestDifferencesInInternalAndPublicVisibilitiesAReverse { internal constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) public fun TestDifferencesInInternalAndPublicVisibilitiesAReverse() {} class TestDifferencesInInternalAndPublicVisibilitiesB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) public constructor() } internal fun TestDifferencesInInternalAndPublicVisibilitiesB() {} class TestDifferencesInInternalAndPublicVisibilitiesBReverse { public constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) internal fun TestDifferencesInInternalAndPublicVisibilitiesBReverse() {} class TestDifferencesInPrivateAndInternalVisibilitiesA { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) private constructor() } internal fun TestDifferencesInPrivateAndInternalVisibilitiesA() {} class TestDifferencesInPrivateAndInternalVisibilitiesAReverse { private constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) internal fun TestDifferencesInPrivateAndInternalVisibilitiesAReverse() {} class TestDifferencesInPrivateAndInternalVisibilitiesB { @Deprecated(message = "", level = DeprecationLevel.HIDDEN) internal constructor() } private fun TestDifferencesInPrivateAndInternalVisibilitiesB() {} class TestDifferencesInPrivateAndInternalVisibilitiesBReverse { internal constructor() } @Deprecated(message = "", level = DeprecationLevel.HIDDEN) private fun TestDifferencesInPrivateAndInternalVisibilitiesBReverse() {} open class Invariant class UserKlass class UserKlassA class UserKlassB typealias SameUserKlass = UserKlass typealias SameUserKlassA = UserKlassA typealias SameUserKlassB = UserKlassB interface UserInterface interface UserInterfaceA interface UserInterfaceB