diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index d56041caac0..d03c95f07f1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -1019,6 +1019,9 @@ public class JetControlFlowProcessor { builder.returnValue(expression, returnValue, subroutine); } } + else { + createNonSyntheticValue(expression, MagicKind.UNSUPPORTED_ELEMENT, returnedExpression); + } } @Override diff --git a/compiler/testData/cfg/expressions/unsupportedReturns.instructions b/compiler/testData/cfg/expressions/unsupportedReturns.instructions new file mode 100644 index 00000000000..8b621f96024 --- /dev/null +++ b/compiler/testData/cfg/expressions/unsupportedReturns.instructions @@ -0,0 +1,34 @@ +== a == +val a: Int = return 1 +--------------------- +L0: + 1 + v(val a: Int = return 1) + r(1) -> + magic[UNSUPPORTED_ELEMENT](return 1|) -> + w(a|) +L1: + NEXT:[] +error: + PREV:[] +sink: + PREV:[, ] +===================== +== A == +class A { + val a: Int = return 1 +} +--------------------- +L0: + 1 + v(val a: Int = return 1) + r(1) -> + magic[UNSUPPORTED_ELEMENT](return 1|) -> + w(a|) +L1: + NEXT:[] +error: + PREV:[] +sink: + PREV:[, ] +===================== \ No newline at end of file diff --git a/compiler/testData/cfg/expressions/unsupportedReturns.kt b/compiler/testData/cfg/expressions/unsupportedReturns.kt new file mode 100644 index 00000000000..6db33a7faf4 --- /dev/null +++ b/compiler/testData/cfg/expressions/unsupportedReturns.kt @@ -0,0 +1,5 @@ +val a: Int = return 1 + +class A { + val a: Int = return 1 +} \ No newline at end of file diff --git a/compiler/testData/cfg/expressions/unsupportedReturns.values b/compiler/testData/cfg/expressions/unsupportedReturns.values new file mode 100644 index 00000000000..81c553bf20e --- /dev/null +++ b/compiler/testData/cfg/expressions/unsupportedReturns.values @@ -0,0 +1,14 @@ +== a == +val a: Int = return 1 +--------------------- +1 : * NEW: r(1) -> +return 1 : Int NEW: magic[UNSUPPORTED_ELEMENT](return 1|) -> +===================== +== A == +class A { + val a: Int = return 1 +} +--------------------- +1 : * NEW: r(1) -> +return 1 : Int NEW: magic[UNSUPPORTED_ELEMENT](return 1|) -> +===================== \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/cfg/ControlFlowTestGenerated.java b/compiler/tests/org/jetbrains/jet/cfg/ControlFlowTestGenerated.java index 8a8a6891e59..82c8864d700 100644 --- a/compiler/tests/org/jetbrains/jet/cfg/ControlFlowTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/cfg/ControlFlowTestGenerated.java @@ -439,6 +439,11 @@ public class ControlFlowTestGenerated extends AbstractControlFlowTest { doTest("compiler/testData/cfg/expressions/unresolvedWriteLHS.kt"); } + @TestMetadata("unsupportedReturns.kt") + public void testUnsupportedReturns() throws Exception { + doTest("compiler/testData/cfg/expressions/unsupportedReturns.kt"); + } + @TestMetadata("unusedExpressionSimpleName.kt") public void testUnusedExpressionSimpleName() throws Exception { doTest("compiler/testData/cfg/expressions/unusedExpressionSimpleName.kt"); diff --git a/compiler/tests/org/jetbrains/jet/cfg/PseudoValueTestGenerated.java b/compiler/tests/org/jetbrains/jet/cfg/PseudoValueTestGenerated.java index db48dbf0dfd..147ffb96e8e 100644 --- a/compiler/tests/org/jetbrains/jet/cfg/PseudoValueTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/cfg/PseudoValueTestGenerated.java @@ -443,6 +443,11 @@ public class PseudoValueTestGenerated extends AbstractPseudoValueTest { doTest("compiler/testData/cfg/expressions/unresolvedWriteLHS.kt"); } + @TestMetadata("unsupportedReturns.kt") + public void testUnsupportedReturns() throws Exception { + doTest("compiler/testData/cfg/expressions/unsupportedReturns.kt"); + } + @TestMetadata("unusedExpressionSimpleName.kt") public void testUnusedExpressionSimpleName() throws Exception { doTest("compiler/testData/cfg/expressions/unusedExpressionSimpleName.kt");