From a736551c2a8b360565bab8c28506a05ada950f09 Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Tue, 4 Feb 2020 17:46:24 +0300 Subject: [PATCH] Add test checking that `fun` isn't inherited from base interface --- ...irOldFrontendDiagnosticsTestGenerated.java | 5 ++++ .../funIsNotInheritedFromBaseInterface.fir.kt | 19 +++++++++++++ .../funIsNotInheritedFromBaseInterface.kt | 19 +++++++++++++ .../funIsNotInheritedFromBaseInterface.txt | 27 +++++++++++++++++++ .../checkers/DiagnosticsTestGenerated.java | 5 ++++ .../DiagnosticsUsingJavacTestGenerated.java | 5 ++++ 6 files changed, 80 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.fir.kt create mode 100644 compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.kt create mode 100644 compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.txt diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java index d75c50f22b5..d1c01d3c1fe 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java @@ -7934,6 +7934,11 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirOldFronte runTest("compiler/testData/diagnostics/tests/funInterface/funInterfaceSyntheticConstructors.kt"); } + @TestMetadata("funIsNotInheritedFromBaseInterface.kt") + public void testFunIsNotInheritedFromBaseInterface() throws Exception { + runTest("compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.kt"); + } + @TestMetadata("genericSubstitutionForFunInterface.kt") public void testGenericSubstitutionForFunInterface() throws Exception { runTest("compiler/testData/diagnostics/tests/funInterface/genericSubstitutionForFunInterface.kt"); diff --git a/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.fir.kt b/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.fir.kt new file mode 100644 index 00000000000..aceec92281d --- /dev/null +++ b/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.fir.kt @@ -0,0 +1,19 @@ +// !LANGUAGE: +NewInference +FunctionalInterfaceConversion +SamConversionPerArgument +SamConversionForKotlinFunctions +// !DIAGNOSTICS: -UNUSED_PARAMETER + +fun interface Base { + fun invoke() +} + +interface WithoutFun : Base +fun interface WithFun : Base + +fun takeBase(b: Base) {} +fun takeWithoutFun(a: WithoutFun) {} +fun takeWithFun(a: WithFun) {} + +fun test() { + takeBase {} + takeWithoutFun({}) + takeWithFun {} +} diff --git a/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.kt b/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.kt new file mode 100644 index 00000000000..3c3f2b6178b --- /dev/null +++ b/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.kt @@ -0,0 +1,19 @@ +// !LANGUAGE: +NewInference +FunctionalInterfaceConversion +SamConversionPerArgument +SamConversionForKotlinFunctions +// !DIAGNOSTICS: -UNUSED_PARAMETER + +fun interface Base { + fun invoke() +} + +interface WithoutFun : Base +fun interface WithFun : Base + +fun takeBase(b: Base) {} +fun takeWithoutFun(a: WithoutFun) {} +fun takeWithFun(a: WithFun) {} + +fun test() { + takeBase {} + takeWithoutFun({}) + takeWithFun {} +} diff --git a/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.txt b/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.txt new file mode 100644 index 00000000000..91c2000aaa0 --- /dev/null +++ b/compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.txt @@ -0,0 +1,27 @@ +package + +public fun takeBase(/*0*/ b: Base): kotlin.Unit +public fun takeWithFun(/*0*/ a: WithFun): kotlin.Unit +public fun takeWithoutFun(/*0*/ a: WithoutFun): kotlin.Unit +public fun test(): kotlin.Unit + +public fun interface Base { + 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 abstract fun invoke(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public fun interface WithFun : Base { + 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 abstract override /*1*/ /*fake_override*/ fun invoke(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public interface WithoutFun : Base { + 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 abstract override /*1*/ /*fake_override*/ fun invoke(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index 13cd0dcdc1f..1dd1b7eb251 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -7941,6 +7941,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { runTest("compiler/testData/diagnostics/tests/funInterface/funInterfaceSyntheticConstructors.kt"); } + @TestMetadata("funIsNotInheritedFromBaseInterface.kt") + public void testFunIsNotInheritedFromBaseInterface() throws Exception { + runTest("compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.kt"); + } + @TestMetadata("genericSubstitutionForFunInterface.kt") public void testGenericSubstitutionForFunInterface() throws Exception { runTest("compiler/testData/diagnostics/tests/funInterface/genericSubstitutionForFunInterface.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index 7b3758729cd..e1dd1da2081 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -7936,6 +7936,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing runTest("compiler/testData/diagnostics/tests/funInterface/funInterfaceSyntheticConstructors.kt"); } + @TestMetadata("funIsNotInheritedFromBaseInterface.kt") + public void testFunIsNotInheritedFromBaseInterface() throws Exception { + runTest("compiler/testData/diagnostics/tests/funInterface/funIsNotInheritedFromBaseInterface.kt"); + } + @TestMetadata("genericSubstitutionForFunInterface.kt") public void testGenericSubstitutionForFunInterface() throws Exception { runTest("compiler/testData/diagnostics/tests/funInterface/genericSubstitutionForFunInterface.kt");