Prohibit return type mismatch for delegation members
#KT-13952 Fixed #KT-13005 Fixed
This commit is contained in:
@@ -363,6 +363,10 @@ public interface Errors {
|
|||||||
DiagnosticFactory2.create(ERROR, DECLARATION_NAME);
|
DiagnosticFactory2.create(ERROR, DECLARATION_NAME);
|
||||||
DiagnosticFactory2<KtClassOrObject, CallableMemberDescriptor, CallableMemberDescriptor> VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION =
|
DiagnosticFactory2<KtClassOrObject, CallableMemberDescriptor, CallableMemberDescriptor> VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION =
|
||||||
DiagnosticFactory2.create(ERROR, DECLARATION_NAME);
|
DiagnosticFactory2.create(ERROR, DECLARATION_NAME);
|
||||||
|
DiagnosticFactory2<KtClassOrObject, CallableMemberDescriptor, CallableMemberDescriptor> RETURN_TYPE_MISMATCH_BY_DELEGATION =
|
||||||
|
DiagnosticFactory2.create(ERROR, DECLARATION_NAME);
|
||||||
|
DiagnosticFactory2<KtClassOrObject, CallableMemberDescriptor, CallableMemberDescriptor> PROPERTY_TYPE_MISMATCH_BY_DELEGATION =
|
||||||
|
DiagnosticFactory2.create(ERROR, DECLARATION_NAME);
|
||||||
|
|
||||||
DiagnosticFactory2<KtClassOrObject, ClassDescriptor, Collection<CallableMemberDescriptor>> CONFLICTING_INHERITED_MEMBERS =
|
DiagnosticFactory2<KtClassOrObject, ClassDescriptor, Collection<CallableMemberDescriptor>> CONFLICTING_INHERITED_MEMBERS =
|
||||||
DiagnosticFactory2.create(ERROR, DECLARATION_NAME);
|
DiagnosticFactory2.create(ERROR, DECLARATION_NAME);
|
||||||
|
|||||||
+4
@@ -613,6 +613,10 @@ public class DefaultErrorMessages {
|
|||||||
SHORT_NAMES_IN_TYPES, SHORT_NAMES_IN_TYPES);
|
SHORT_NAMES_IN_TYPES, SHORT_NAMES_IN_TYPES);
|
||||||
MAP.put(VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION, "Val-property ''{0}'' implicitly overrides a var-property ''{1}'' by delegation",
|
MAP.put(VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION, "Val-property ''{0}'' implicitly overrides a var-property ''{1}'' by delegation",
|
||||||
SHORT_NAMES_IN_TYPES, SHORT_NAMES_IN_TYPES);
|
SHORT_NAMES_IN_TYPES, SHORT_NAMES_IN_TYPES);
|
||||||
|
MAP.put(RETURN_TYPE_MISMATCH_BY_DELEGATION, "Type of ''{0}'' is not a subtype of overridden by delegation ''{1}''",
|
||||||
|
SHORT_NAMES_IN_TYPES, SHORT_NAMES_IN_TYPES);
|
||||||
|
MAP.put(PROPERTY_TYPE_MISMATCH_BY_DELEGATION, "Type of property ''{0}'' is not a subtype of overridden by delegation ''{1}''",
|
||||||
|
SHORT_NAMES_IN_TYPES, SHORT_NAMES_IN_TYPES);
|
||||||
|
|
||||||
MAP.put(VAR_OVERRIDDEN_BY_VAL, "Var-property {0} cannot be overridden by val-property {1}", FQ_NAMES_IN_TYPES, FQ_NAMES_IN_TYPES);
|
MAP.put(VAR_OVERRIDDEN_BY_VAL, "Var-property {0} cannot be overridden by val-property {1}", FQ_NAMES_IN_TYPES, FQ_NAMES_IN_TYPES);
|
||||||
|
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ public class OverrideResolver {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void overridingFinalMember(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor overridden) {
|
public void overridingFinalMember(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor overridden) {
|
||||||
reportDelegationProblemIfRequired(OVERRIDING_FINAL_MEMBER_BY_DELEGATION, overriding, overridden);
|
reportDelegationProblemIfRequired(OVERRIDING_FINAL_MEMBER_BY_DELEGATION, null, overriding, overridden);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -248,7 +248,8 @@ public class OverrideResolver {
|
|||||||
@NotNull CallableMemberDescriptor overriding,
|
@NotNull CallableMemberDescriptor overriding,
|
||||||
@NotNull CallableMemberDescriptor overridden
|
@NotNull CallableMemberDescriptor overridden
|
||||||
) {
|
) {
|
||||||
// Always reported as RETURN_TYPE_MISMATCH_ON_INHERITANCE
|
reportDelegationProblemIfRequired(
|
||||||
|
RETURN_TYPE_MISMATCH_BY_DELEGATION, RETURN_TYPE_MISMATCH_ON_INHERITANCE, overriding, overridden);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -256,22 +257,25 @@ public class OverrideResolver {
|
|||||||
@NotNull PropertyDescriptor overriding,
|
@NotNull PropertyDescriptor overriding,
|
||||||
@NotNull PropertyDescriptor overridden
|
@NotNull PropertyDescriptor overridden
|
||||||
) {
|
) {
|
||||||
// Always reported as PROPERTY_TYPE_MISMATCH_ON_INHERITANCE
|
reportDelegationProblemIfRequired(
|
||||||
|
PROPERTY_TYPE_MISMATCH_BY_DELEGATION, PROPERTY_TYPE_MISMATCH_ON_INHERITANCE, overriding, overridden);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void varOverriddenByVal(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor overridden) {
|
public void varOverriddenByVal(@NotNull CallableMemberDescriptor overriding, @NotNull CallableMemberDescriptor overridden) {
|
||||||
reportDelegationProblemIfRequired(VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION, overriding, overridden);
|
reportDelegationProblemIfRequired(VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION, null, overriding, overridden);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reportDelegationProblemIfRequired(
|
private void reportDelegationProblemIfRequired(
|
||||||
@NotNull DiagnosticFactory2<KtClassOrObject, CallableMemberDescriptor, CallableMemberDescriptor> diagnosticFactory,
|
@NotNull DiagnosticFactory2<KtClassOrObject, CallableMemberDescriptor, CallableMemberDescriptor> diagnosticFactory,
|
||||||
|
@Nullable DiagnosticFactoryWithPsiElement<?, ?> relevantDiagnosticFromInheritance,
|
||||||
@NotNull CallableMemberDescriptor delegate,
|
@NotNull CallableMemberDescriptor delegate,
|
||||||
@NotNull CallableMemberDescriptor overridden
|
@NotNull CallableMemberDescriptor overridden
|
||||||
) {
|
) {
|
||||||
assert delegate.getKind() == DELEGATION : "Delegate expected, got " + delegate + " of kind " + delegate.getKind();
|
assert delegate.getKind() == DELEGATION : "Delegate expected, got " + delegate + " of kind " + delegate.getKind();
|
||||||
|
|
||||||
if (!onceErrorsReported.contains(diagnosticFactory)) {
|
if (!onceErrorsReported.contains(diagnosticFactory) &&
|
||||||
|
(relevantDiagnosticFromInheritance == null || !onceErrorsReported.contains(relevantDiagnosticFromInheritance))) {
|
||||||
onceErrorsReported.add(diagnosticFactory);
|
onceErrorsReported.add(diagnosticFactory);
|
||||||
trace.report(diagnosticFactory.on(klass, delegate, overridden));
|
trace.report(diagnosticFactory.on(klass, delegate, overridden));
|
||||||
}
|
}
|
||||||
|
|||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
interface IBase1 {
|
||||||
|
fun foo(): Any
|
||||||
|
}
|
||||||
|
|
||||||
|
open class IDerived1 : IBase1 {
|
||||||
|
override fun foo(): String = "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
<!RETURN_TYPE_MISMATCH_BY_DELEGATION!>class Broken1<!>(val b: IBase1) : IBase1 by b, IDerived1()
|
||||||
|
|
||||||
|
interface IBase2 {
|
||||||
|
val foo: Any
|
||||||
|
}
|
||||||
|
|
||||||
|
open class IDerived2 : IBase2 {
|
||||||
|
override val foo: String = "2"
|
||||||
|
}
|
||||||
|
|
||||||
|
<!PROPERTY_TYPE_MISMATCH_BY_DELEGATION!>class Broken2<!>(val b: IBase2) : IBase2 by b, IDerived2()
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public final class Broken1 : IBase1, IDerived1 {
|
||||||
|
public constructor Broken1(/*0*/ b: IBase1)
|
||||||
|
public final val b: IBase1
|
||||||
|
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*2*/ /*delegation*/ fun foo(): kotlin.Any
|
||||||
|
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class Broken2 : IBase2, IDerived2 {
|
||||||
|
public constructor Broken2(/*0*/ b: IBase2)
|
||||||
|
public final val b: IBase2
|
||||||
|
public open override /*2*/ /*delegation*/ val foo: kotlin.Any
|
||||||
|
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IBase1 {
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public abstract fun foo(): kotlin.Any
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IBase2 {
|
||||||
|
public abstract val foo: kotlin.Any
|
||||||
|
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 open class IDerived1 : IBase1 {
|
||||||
|
public constructor IDerived1()
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ fun foo(): 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 IDerived2 : IBase2 {
|
||||||
|
public constructor IDerived2()
|
||||||
|
public open override /*1*/ val foo: kotlin.String = "2"
|
||||||
|
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
|
||||||
|
}
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
interface IBase1 {
|
||||||
|
fun foo(): Any
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IDerived1 {
|
||||||
|
fun foo(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
<!RETURN_TYPE_MISMATCH_ON_INHERITANCE!>class Broken1<!>(val b: IBase1) : IBase1 by b, IDerived1
|
||||||
|
|
||||||
|
interface IBase2 {
|
||||||
|
val foo: Any
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IDerived2 {
|
||||||
|
val foo: String
|
||||||
|
}
|
||||||
|
|
||||||
|
<!PROPERTY_TYPE_MISMATCH_ON_INHERITANCE!>class Broken2<!>(val b: IBase2) : IBase2 by b, IDerived2
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public final class Broken1 : IBase1, IDerived1 {
|
||||||
|
public constructor Broken1(/*0*/ b: IBase1)
|
||||||
|
public final val b: IBase1
|
||||||
|
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*2*/ /*delegation*/ fun foo(): kotlin.Any
|
||||||
|
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class Broken2 : IBase2, IDerived2 {
|
||||||
|
public constructor Broken2(/*0*/ b: IBase2)
|
||||||
|
public final val b: IBase2
|
||||||
|
public open override /*2*/ /*delegation*/ val foo: kotlin.Any
|
||||||
|
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IBase1 {
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public abstract fun foo(): kotlin.Any
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IBase2 {
|
||||||
|
public abstract val foo: kotlin.Any
|
||||||
|
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 interface IDerived1 {
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public abstract fun foo(): kotlin.String
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IDerived2 {
|
||||||
|
public abstract val foo: 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
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
interface IA {
|
||||||
|
fun foo(): Number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IB : IA {
|
||||||
|
override fun foo(): Int
|
||||||
|
}
|
||||||
|
|
||||||
|
object AImpl : IA {
|
||||||
|
override fun foo() = 42
|
||||||
|
}
|
||||||
|
|
||||||
|
open <!RETURN_TYPE_MISMATCH_BY_DELEGATION!>class C<!> : IA by AImpl, IB
|
||||||
|
|
||||||
|
class D : C() {
|
||||||
|
override fun foo(): Double = 3.14
|
||||||
|
}
|
||||||
+39
@@ -0,0 +1,39 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public object AImpl : IA {
|
||||||
|
private constructor AImpl()
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ fun foo(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public open class C : IA, IB {
|
||||||
|
public constructor C()
|
||||||
|
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*2*/ /*delegation*/ fun foo(): kotlin.Number
|
||||||
|
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class D : C {
|
||||||
|
public constructor D()
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ fun foo(): kotlin.Double
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IA {
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public abstract fun foo(): kotlin.Number
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IB : IA {
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public abstract override /*1*/ fun foo(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
interface IBase1 {
|
||||||
|
fun foo(): Any
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IDerived1 : IBase1 {
|
||||||
|
override fun foo(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
<!RETURN_TYPE_MISMATCH_BY_DELEGATION!>class Broken1<!>(val b: IBase1) : IBase1 by b, IDerived1
|
||||||
|
|
||||||
|
interface IBase2 {
|
||||||
|
val foo: Any
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IDerived2 : IBase2 {
|
||||||
|
override val foo: String
|
||||||
|
}
|
||||||
|
|
||||||
|
<!PROPERTY_TYPE_MISMATCH_BY_DELEGATION!>class Broken2<!>(val b: IBase2) : IBase2 by b, IDerived2
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public final class Broken1 : IBase1, IDerived1 {
|
||||||
|
public constructor Broken1(/*0*/ b: IBase1)
|
||||||
|
public final val b: IBase1
|
||||||
|
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*2*/ /*delegation*/ fun foo(): kotlin.Any
|
||||||
|
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class Broken2 : IBase2, IDerived2 {
|
||||||
|
public constructor Broken2(/*0*/ b: IBase2)
|
||||||
|
public final val b: IBase2
|
||||||
|
public open override /*2*/ /*delegation*/ val foo: kotlin.Any
|
||||||
|
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IBase1 {
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public abstract fun foo(): kotlin.Any
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IBase2 {
|
||||||
|
public abstract val foo: kotlin.Any
|
||||||
|
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 interface IDerived1 : IBase1 {
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public abstract override /*1*/ fun foo(): kotlin.String
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IDerived2 : IBase2 {
|
||||||
|
public abstract override /*1*/ val foo: 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
|
||||||
|
}
|
||||||
@@ -5780,6 +5780,39 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/diagnostics/tests/delegation/covariantOverrides")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class CovariantOverrides extends AbstractDiagnosticsTest {
|
||||||
|
public void testAllFilesPresentInCovariantOverrides() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/delegation/covariantOverrides"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("fromClass.kt")
|
||||||
|
public void testFromClass() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/delegation/covariantOverrides/fromClass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("irrelevant.kt")
|
||||||
|
public void testIrrelevant() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/delegation/covariantOverrides/irrelevant.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt13952.kt")
|
||||||
|
public void testKt13952() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/delegation/covariantOverrides/kt13952.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("simple.kt")
|
||||||
|
public void testSimple() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/delegation/covariantOverrides/simple.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/diagnostics/tests/deparenthesize")
|
@TestMetadata("compiler/testData/diagnostics/tests/deparenthesize")
|
||||||
|
|||||||
Reference in New Issue
Block a user