diff --git a/compiler/testData/diagnostics/tests/inference/regressions/kt3007.kt b/compiler/testData/diagnostics/tests/inference/regressions/kt3007.kt new file mode 100644 index 00000000000..aba9abbf526 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/regressions/kt3007.kt @@ -0,0 +1,43 @@ +//KT-3007 Kotlin plugin 0.4.126 does not compile KAnnotator revision ba0a93eb +package a + +enum class SomeEnum { + FIRST + SECOND +} + +// Doesn't work +fun Iterable.some() { + this.fold(SomeEnum.FIRST, {(res : SomeEnum, value) -> + if (res == SomeEnum.FIRST) SomeEnum.FIRST else SomeEnum.SECOND + }) +} + +fun tempFun() : SomeEnum { + return SomeEnum.FIRST +} + +// Doesn't work +fun Iterable.someSimpleWithFun() { + this.fold(SomeEnum.FIRST, {(res : SomeEnum, value) -> + tempFun() + }) +} + + +// Works +fun Iterable.someSimple() { + this.fold(SomeEnum.FIRST, {(res : SomeEnum, value) -> + SomeEnum.FIRST + }) +} + +// Works +fun Iterable.someInt() { + this.fold(0, {(res : Int, value) -> + if (res == 0) 1 else 0 + }) +} + +//from standard library +fun Iterable.fold(initial: R, operation: (R, T) -> R): R {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inference/regressions/kt3038.kt b/compiler/testData/diagnostics/tests/inference/regressions/kt3038.kt new file mode 100644 index 00000000000..d8201eb0872 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/regressions/kt3038.kt @@ -0,0 +1,22 @@ +//KT-3038 Wrong type inference for enum entry +package a + +enum class TestEnum { + FIRST + SECOND +} + +fun inferenceTest(a: T) : T = a + +fun hello() { + var enumElemFirst = inferenceTest(TestEnum.FIRST) + enumElemFirst = TestEnum.SECOND // Type mismatch: inferred type is testDebug.TestEnum..SECOND but testDebug.TestEnum..FIRST was expected + + var enumElemSecond : TestEnum = inferenceTest(TestEnum.FIRST) + enumElemSecond = TestEnum.SECOND // Ok + + use(enumElemFirst, enumElemSecond) +} + + +fun use(vararg a: Any?) = a \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 049e4422375..b5a8700f973 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -2222,6 +2222,16 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage doTest("compiler/testData/diagnostics/tests/inference/regressions/kt2842.kt"); } + @TestMetadata("kt3007.kt") + public void testKt3007() throws Exception { + doTest("compiler/testData/diagnostics/tests/inference/regressions/kt3007.kt"); + } + + @TestMetadata("kt3038.kt") + public void testKt3038() throws Exception { + doTest("compiler/testData/diagnostics/tests/inference/regressions/kt3038.kt"); + } + @TestMetadata("kt3150.kt") public void testKt3150() throws Exception { doTest("compiler/testData/diagnostics/tests/inference/regressions/kt3150.kt");