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 21d0bb0f0fd..0384b8a32cd 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -875,8 +875,9 @@ public class JetControlFlowProcessor { @Override public void visitArrayAccessExpression(@NotNull JetArrayAccessExpression expression) { mark(expression); - if (!generateCall(expression)) { - generateArrayAccess(expression, getResolvedCall(expression)); + ResolvedCall getMethodResolvedCall = trace.get(BindingContext.INDEXED_LVALUE_GET, expression); + if (!checkAndGenerateCall(expression, getMethodResolvedCall)) { + generateArrayAccess(expression, getMethodResolvedCall); } } diff --git a/compiler/testData/cfg/ArrayOfFunctions.instructions b/compiler/testData/cfg/ArrayOfFunctions.instructions new file mode 100644 index 00000000000..0b58bf71437 --- /dev/null +++ b/compiler/testData/cfg/ArrayOfFunctions.instructions @@ -0,0 +1,24 @@ +== test == +fun test(array: Array<(Int)->Unit>) { + array[11](3) +} +--------------------- +L0: + + v(array: Array<(Int)->Unit>) + w(array) + mark({ array[11](3) }) + mark(array[11](3)) + mark(array[11]) + r(array) + r(11) + call(array[11], get) + r(3) + call(array[11], ) +L1: + NEXT:[] +error: + PREV:[] +sink: + PREV:[, ] +===================== diff --git a/compiler/testData/cfg/ArrayOfFunctions.kt b/compiler/testData/cfg/ArrayOfFunctions.kt new file mode 100644 index 00000000000..d05ffb79e6d --- /dev/null +++ b/compiler/testData/cfg/ArrayOfFunctions.kt @@ -0,0 +1,3 @@ +fun test(array: Array<(Int)->Unit>) { + array[11](3) +} \ 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 d8b81c294e2..d7516f0d8a0 100644 --- a/compiler/tests/org/jetbrains/jet/cfg/ControlFlowTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/cfg/ControlFlowTestGenerated.java @@ -52,6 +52,11 @@ public class ControlFlowTestGenerated extends AbstractControlFlowTest { doTest("compiler/testData/cfg/arrayAccessExpression.kt"); } + @TestMetadata("ArrayOfFunctions.kt") + public void testArrayOfFunctions() throws Exception { + doTest("compiler/testData/cfg/ArrayOfFunctions.kt"); + } + @TestMetadata("arraySet.kt") public void testArraySet() throws Exception { doTest("compiler/testData/cfg/arraySet.kt");