KT-12100 convert try / finally to use: select use parameter after application

This commit is contained in:
Mikhail Glukhikh
2016-12-01 19:53:54 +03:00
parent 9ea326870d
commit 4af9b274a1
3 changed files with 11 additions and 3 deletions
@@ -69,7 +69,15 @@ class ConvertTryFinallyToUseCallIntention : SelfTargetingRangeIntention<KtTryExp
appendFixedText("\n}")
}
element.replace(useCallExpression)
val result = element.replace(useCallExpression) as KtExpression
val call = when (result) {
is KtQualifiedExpression -> result.selectorExpression as? KtCallExpression ?: return
is KtCallExpression -> result
else -> return
}
val lambda = call.lambdaArguments.firstOrNull() ?: return
val lambdaParameter = lambda.getLambdaExpression().valueParameters.firstOrNull() ?: return
editor?.selectionModel?.setSelection(lambdaParameter.startOffset, lambdaParameter.endOffset)
}
override fun applicabilityRange(element: KtTryExpression): TextRange? {
@@ -3,7 +3,7 @@ import java.io.File
fun main(args: Array<String>) {
val reader = File("hello-world.txt").bufferedReader()
reader.use { reader ->
reader.use { <selection>reader</selection> ->
reader.readLine()
}
}
@@ -3,7 +3,7 @@ import java.io.File
fun main(args: Array<String>) {
val writer = File("hello-world.txt").bufferedWriter()
writer.use { writer ->
writer.use { <selection>writer</selection> ->
writer.write("123")
writer.newLine()
writer.write("456")