Fix reference resolution on suspension calls

This commit is contained in:
Denis Zharkov
2016-06-09 14:37:39 +03:00
parent f1b0204ffe
commit d2bf4cbfa0
3 changed files with 23 additions and 0 deletions
@@ -40,6 +40,7 @@ fun SimpleFunctionDescriptor.createCoroutineSuspensionFunctionView(): SimpleFunc
setOriginal(newOriginal)
setValueParameters(valueParameters.subList(0, valueParameters.size - 1))
setSignatureChange()
setPreserveSourceElement()
putUserData(SUSPENSION_POINT_KEY, true)
}.build()!!
}
@@ -0,0 +1,16 @@
class Controller {
suspend fun suspendHere(x: Continuation<Unit>) {
}
}
fun builder(coroutine c: Controller.() -> Continuation<Unit>) {
}
fun foo() {
builder {
<caret>suspendHere()
}
}
// REF: (in Controller).suspendHere(Continuation<Unit>)
@@ -107,6 +107,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest
doTest(fileName);
}
@TestMetadata("CoroutineSuspensionPoint.kt")
public void testCoroutineSuspensionPoint() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/resolve/references/CoroutineSuspensionPoint.kt");
doTest(fileName);
}
@TestMetadata("CtrlClickResolve.kt")
public void testCtrlClickResolve() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/resolve/references/CtrlClickResolve.kt");