Reports warning on super calls in public-api inline functions
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
// !DIAGNOSTICS: -EXPOSED_PARAMETER_TYPE -NOTHING_TO_INLINE
|
||||
|
||||
// FILE: main.kt
|
||||
open class AndroidTargetConfigurator :
|
||||
Base(),
|
||||
ModuleConfiguratorWithTests,
|
||||
AndroidModuleConfigurator {
|
||||
|
||||
public inline fun inlineFun(): String {
|
||||
return super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}
|
||||
|
||||
@PublishedApi
|
||||
internal inline fun inlineFunPublished(): String {
|
||||
return super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}
|
||||
|
||||
public inline fun inlineFunAnonymousObjects(): String {
|
||||
{
|
||||
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}()
|
||||
|
||||
return object {
|
||||
fun run() = super@AndroidTargetConfigurator.classFun() + super<ModuleConfiguratorWithTests>@AndroidTargetConfigurator.getConfiguratorSettings() + super<AndroidModuleConfigurator>@AndroidTargetConfigurator.getConfiguratorSettings()
|
||||
}.run()
|
||||
}
|
||||
|
||||
public inline fun inlineFunAnonymousNoDiagnostics(): String {
|
||||
return object: AndroidTargetConfigurator(), ModuleConfiguratorWithTests, AndroidModuleConfigurator {
|
||||
|
||||
override fun getConfiguratorSettings(): String {
|
||||
return super<AndroidTargetConfigurator>.getConfiguratorSettings()
|
||||
}
|
||||
|
||||
inline fun anonymousInline() {
|
||||
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<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
|
||||
}.run()
|
||||
}
|
||||
|
||||
|
||||
|
||||
internal inline fun inlineInternal(): String {
|
||||
return super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}
|
||||
|
||||
private inline fun inlinePrivate(): String {
|
||||
return super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}
|
||||
|
||||
|
||||
//non-inline
|
||||
override fun getConfiguratorSettings() =
|
||||
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
|
||||
fun noInline() {
|
||||
{
|
||||
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}()
|
||||
|
||||
object {
|
||||
fun run() = super@AndroidTargetConfigurator.classFun() + super<ModuleConfiguratorWithTests>@AndroidTargetConfigurator.getConfiguratorSettings() + super<AndroidModuleConfigurator>@AndroidTargetConfigurator.getConfiguratorSettings()
|
||||
}.run()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
open class Base {
|
||||
fun classFun(): String = "Class"
|
||||
}
|
||||
|
||||
interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
||||
override fun getConfiguratorSettings() = "K"
|
||||
}
|
||||
|
||||
interface ModuleConfiguratorWithSettings {
|
||||
fun getConfiguratorSettings(): String = ""
|
||||
}
|
||||
|
||||
|
||||
interface AndroidModuleConfigurator :
|
||||
ModuleConfiguratorWithSettings {
|
||||
override fun getConfiguratorSettings(): String {
|
||||
return "O"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sealed class FooSealed : Base() {
|
||||
class A : FooSealed()
|
||||
|
||||
class B: FooSealed()
|
||||
|
||||
inline fun test() {
|
||||
super.classFun()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
enum class FooEmum {
|
||||
A, B {
|
||||
|
||||
inline fun test() {
|
||||
super.classFun()
|
||||
}
|
||||
};
|
||||
|
||||
fun classFun(): String = "Class"
|
||||
}
|
||||
|
||||
class FooOuter : Base() {
|
||||
|
||||
inner class FooInner: Base() {
|
||||
inline fun test() {
|
||||
super@FooOuter.classFun()
|
||||
super.classFun()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
// !DIAGNOSTICS: -EXPOSED_PARAMETER_TYPE -NOTHING_TO_INLINE
|
||||
|
||||
// FILE: main.kt
|
||||
open class AndroidTargetConfigurator :
|
||||
Base(),
|
||||
ModuleConfiguratorWithTests,
|
||||
AndroidModuleConfigurator {
|
||||
|
||||
public inline fun inlineFun(): String {
|
||||
return <!SUPER_CALL_FROM_PUBLIC_INLINE!>super.classFun()<!> + <!SUPER_CALL_FROM_PUBLIC_INLINE!>super<ModuleConfiguratorWithTests>.getConfiguratorSettings()<!> + <!SUPER_CALL_FROM_PUBLIC_INLINE!>super<AndroidModuleConfigurator>.getConfiguratorSettings()<!>
|
||||
}
|
||||
|
||||
@PublishedApi
|
||||
internal inline fun inlineFunPublished(): String {
|
||||
return <!SUPER_CALL_FROM_PUBLIC_INLINE!>super.classFun()<!> + <!SUPER_CALL_FROM_PUBLIC_INLINE!>super<ModuleConfiguratorWithTests>.getConfiguratorSettings()<!> + <!SUPER_CALL_FROM_PUBLIC_INLINE!>super<AndroidModuleConfigurator>.getConfiguratorSettings()<!>
|
||||
}
|
||||
|
||||
public inline fun inlineFunAnonymousObjects(): String {
|
||||
{
|
||||
<!SUPER_CALL_FROM_PUBLIC_INLINE!>super.classFun()<!> + <!SUPER_CALL_FROM_PUBLIC_INLINE!>super<ModuleConfiguratorWithTests>.getConfiguratorSettings()<!> + <!SUPER_CALL_FROM_PUBLIC_INLINE!>super<AndroidModuleConfigurator>.getConfiguratorSettings()<!>
|
||||
}()
|
||||
|
||||
return object {
|
||||
fun run() = <!SUPER_CALL_FROM_PUBLIC_INLINE!>super@AndroidTargetConfigurator.classFun()<!> + <!SUPER_CALL_FROM_PUBLIC_INLINE!>super<ModuleConfiguratorWithTests>@AndroidTargetConfigurator.getConfiguratorSettings()<!> + <!SUPER_CALL_FROM_PUBLIC_INLINE!>super<AndroidModuleConfigurator>@AndroidTargetConfigurator.getConfiguratorSettings()<!>
|
||||
}.run()
|
||||
}
|
||||
|
||||
public inline fun inlineFunAnonymousNoDiagnostics(): String {
|
||||
return object: AndroidTargetConfigurator(), ModuleConfiguratorWithTests, AndroidModuleConfigurator {
|
||||
|
||||
override fun getConfiguratorSettings(): String {
|
||||
return super<AndroidTargetConfigurator>.getConfiguratorSettings()
|
||||
}
|
||||
|
||||
inline fun anonymousInline() {
|
||||
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<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>ModuleConfiguratorWithTests<!>>.getConfiguratorSettings() + super<<!QUALIFIED_SUPERTYPE_EXTENDED_BY_OTHER_SUPERTYPE!>AndroidModuleConfigurator<!>>.getConfiguratorSettings()
|
||||
}.run()
|
||||
}
|
||||
|
||||
|
||||
|
||||
internal inline fun inlineInternal(): String {
|
||||
return super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}
|
||||
|
||||
private inline fun inlinePrivate(): String {
|
||||
return super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}
|
||||
|
||||
|
||||
//non-inline
|
||||
override fun getConfiguratorSettings() =
|
||||
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
|
||||
fun noInline() {
|
||||
{
|
||||
super.classFun() + super<ModuleConfiguratorWithTests>.getConfiguratorSettings() + super<AndroidModuleConfigurator>.getConfiguratorSettings()
|
||||
}()
|
||||
|
||||
object {
|
||||
fun run() = super@AndroidTargetConfigurator.classFun() + super<ModuleConfiguratorWithTests>@AndroidTargetConfigurator.getConfiguratorSettings() + super<AndroidModuleConfigurator>@AndroidTargetConfigurator.getConfiguratorSettings()
|
||||
}.run()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
open class Base {
|
||||
fun classFun(): String = "Class"
|
||||
}
|
||||
|
||||
interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
||||
override fun getConfiguratorSettings() = "K"
|
||||
}
|
||||
|
||||
interface ModuleConfiguratorWithSettings {
|
||||
fun getConfiguratorSettings(): String = ""
|
||||
}
|
||||
|
||||
|
||||
interface AndroidModuleConfigurator :
|
||||
ModuleConfiguratorWithSettings {
|
||||
override fun getConfiguratorSettings(): String {
|
||||
return "O"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sealed class FooSealed : Base() {
|
||||
class A : FooSealed()
|
||||
|
||||
class B: FooSealed()
|
||||
|
||||
inline fun test() {
|
||||
<!SUPER_CALL_FROM_PUBLIC_INLINE!>super.classFun()<!>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
enum class FooEmum {
|
||||
A, B {
|
||||
|
||||
inline fun test() {
|
||||
<!SUPER_CALL_FROM_PUBLIC_INLINE!>super.classFun()<!>
|
||||
}
|
||||
};
|
||||
|
||||
fun classFun(): String = "Class"
|
||||
}
|
||||
|
||||
class FooOuter : Base() {
|
||||
|
||||
inner class FooInner: Base() {
|
||||
inline fun test() {
|
||||
<!SUPER_CALL_FROM_PUBLIC_INLINE!>super@FooOuter.classFun()<!>
|
||||
<!SUPER_CALL_FROM_PUBLIC_INLINE!>super.classFun()<!>
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
package
|
||||
|
||||
public interface AndroidModuleConfigurator : ModuleConfiguratorWithSettings {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun getConfiguratorSettings(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class AndroidTargetConfigurator : Base, ModuleConfiguratorWithTests, AndroidModuleConfigurator {
|
||||
public constructor AndroidTargetConfigurator()
|
||||
public final override /*1*/ /*fake_override*/ fun classFun(): kotlin.String
|
||||
public open override /*3*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ fun getConfiguratorSettings(): kotlin.String
|
||||
public open override /*3*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final inline fun inlineFun(): kotlin.String
|
||||
public final inline fun inlineFunAnonymousNoDiagnostics(): kotlin.String
|
||||
public final inline fun inlineFunAnonymousObjects(): kotlin.String
|
||||
@kotlin.PublishedApi internal final inline fun inlineFunPublished(): kotlin.String
|
||||
internal final inline fun inlineInternal(): kotlin.String
|
||||
private final inline fun inlinePrivate(): kotlin.String
|
||||
public final fun noInline(): kotlin.Unit
|
||||
public open override /*3*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class Base {
|
||||
public constructor Base()
|
||||
public final fun classFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final enum class FooEmum : kotlin.Enum<FooEmum> {
|
||||
enum entry A
|
||||
|
||||
enum entry B
|
||||
|
||||
private constructor FooEmum()
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
public final fun classFun(): kotlin.String
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: FooEmum): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<FooEmum!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): FooEmum
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<FooEmum>
|
||||
}
|
||||
|
||||
public final class FooOuter : Base {
|
||||
public constructor FooOuter()
|
||||
public final override /*1*/ /*fake_override*/ fun classFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public final inner class FooInner : Base {
|
||||
public constructor FooInner()
|
||||
public final override /*1*/ /*fake_override*/ fun classFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final inline fun test(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class FooSealed : Base {
|
||||
protected constructor FooSealed()
|
||||
public final override /*1*/ /*fake_override*/ fun classFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final inline fun test(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public final class A : FooSealed {
|
||||
public constructor A()
|
||||
public final override /*1*/ /*fake_override*/ fun classFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final override /*1*/ inline /*fake_override*/ fun test(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class B : FooSealed {
|
||||
public constructor B()
|
||||
public final override /*1*/ /*fake_override*/ fun classFun(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public final override /*1*/ inline /*fake_override*/ fun test(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
public interface ModuleConfiguratorWithSettings {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun getConfiguratorSettings(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun getConfiguratorSettings(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user