From b88a9025e000b4dc4bcc8054daa35b1c93270b0f Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Fri, 13 Jan 2017 13:03:12 +0100 Subject: [PATCH] Don't check DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE when compiling to 1.0 --- .../resolve/checkers/DelegationChecker.kt | 9 +++-- .../delegation/hiddenSuperOverrideIn1.0.kt | 20 +++++++++++ .../delegation/hiddenSuperOverrideIn1.0.txt | 34 +++++++++++++++++++ .../ir/IrBlackBoxCodegenTestGenerated.java | 6 ++++ .../codegen/BlackBoxCodegenTestGenerated.java | 6 ++++ ...LightAnalysisModeCodegenTestGenerated.java | 6 ++++ .../semantics/JsCodegenBoxTestGenerated.java | 6 ++++ 7 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/codegen/box/delegation/hiddenSuperOverrideIn1.0.kt create mode 100644 compiler/testData/codegen/light-analysis/delegation/hiddenSuperOverrideIn1.0.txt diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DelegationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DelegationChecker.kt index f0bbe0edbe4..ac1f70a0dc5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DelegationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DelegationChecker.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.resolve.checkers +import org.jetbrains.kotlin.config.LanguageVersion +import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -30,13 +32,16 @@ import org.jetbrains.kotlin.resolve.DelegationResolver import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.OverridingUtil -class DelegationChecker : SimpleDeclarationChecker { +class DelegationChecker : DeclarationChecker { override fun check( declaration: KtDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink, - bindingContext: BindingContext + bindingContext: BindingContext, + languageVersionSettings: LanguageVersionSettings ) { + if (languageVersionSettings.languageVersion == LanguageVersion.KOTLIN_1_0) return + if (descriptor !is ClassDescriptor) return if (declaration !is KtClassOrObject) return diff --git a/compiler/testData/codegen/box/delegation/hiddenSuperOverrideIn1.0.kt b/compiler/testData/codegen/box/delegation/hiddenSuperOverrideIn1.0.kt new file mode 100644 index 00000000000..52dd706636f --- /dev/null +++ b/compiler/testData/codegen/box/delegation/hiddenSuperOverrideIn1.0.kt @@ -0,0 +1,20 @@ +// LANGUAGE_VERSION: 1.0 + +public interface Base { + fun test() = "base fail" +} + +public interface Base2 : Base { + override fun test() = "base 2fail" +} + +class Delegate : Base { + override fun test(): String { + return "OK" + } +} + +fun box(): String { + return object : Base2, Base by Delegate() { + }.test() +} diff --git a/compiler/testData/codegen/light-analysis/delegation/hiddenSuperOverrideIn1.0.txt b/compiler/testData/codegen/light-analysis/delegation/hiddenSuperOverrideIn1.0.txt new file mode 100644 index 00000000000..32e3cb44304 --- /dev/null +++ b/compiler/testData/codegen/light-analysis/delegation/hiddenSuperOverrideIn1.0.txt @@ -0,0 +1,34 @@ +@kotlin.Metadata +public interface Base { + inner class Base/DefaultImpls + public abstract @org.jetbrains.annotations.NotNull method test(): java.lang.String +} + +@kotlin.Metadata +public final class Base/DefaultImpls { + inner class Base/DefaultImpls + public static @org.jetbrains.annotations.NotNull method test(p0: Base): java.lang.String +} + +@kotlin.Metadata +public interface Base2 { + inner class Base2/DefaultImpls + public abstract @org.jetbrains.annotations.NotNull method test(): java.lang.String +} + +@kotlin.Metadata +public final class Base2/DefaultImpls { + inner class Base2/DefaultImpls + public static @org.jetbrains.annotations.NotNull method test(p0: Base2): java.lang.String +} + +@kotlin.Metadata +public final class Delegate { + public method (): void + public @org.jetbrains.annotations.NotNull method test(): java.lang.String +} + +@kotlin.Metadata +public final class HiddenSuperOverrideIn1_0Kt { + public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String +} diff --git a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 1e4b45ca2cf..6e775e7e0e3 100644 --- a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -6251,6 +6251,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes doTest(fileName); } + @TestMetadata("hiddenSuperOverrideIn1.0.kt") + public void testHiddenSuperOverrideIn1_0() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegation/hiddenSuperOverrideIn1.0.kt"); + doTest(fileName); + } + @TestMetadata("kt8154.kt") public void testKt8154() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegation/kt8154.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index fa1f482c583..031ad5bb05a 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -6251,6 +6251,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("hiddenSuperOverrideIn1.0.kt") + public void testHiddenSuperOverrideIn1_0() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegation/hiddenSuperOverrideIn1.0.kt"); + doTest(fileName); + } + @TestMetadata("kt8154.kt") public void testKt8154() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegation/kt8154.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeCodegenTestGenerated.java index 1dd2c4d6894..afd471fed7b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeCodegenTestGenerated.java @@ -6251,6 +6251,12 @@ public class LightAnalysisModeCodegenTestGenerated extends AbstractLightAnalysis doTest(fileName); } + @TestMetadata("hiddenSuperOverrideIn1.0.kt") + public void testHiddenSuperOverrideIn1_0() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegation/hiddenSuperOverrideIn1.0.kt"); + doTest(fileName); + } + @TestMetadata("kt8154.kt") public void testKt8154() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegation/kt8154.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 2724c8fc4af..5c0f0de466f 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -7080,6 +7080,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { throw new AssertionError("Looks like this test can be unmuted. Remove IGNORE_BACKEND directive for that."); } + @TestMetadata("hiddenSuperOverrideIn1.0.kt") + public void testHiddenSuperOverrideIn1_0() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegation/hiddenSuperOverrideIn1.0.kt"); + doTest(fileName); + } + @TestMetadata("kt8154.kt") public void testKt8154() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/delegation/kt8154.kt");