KT-12100 related: convert try / finally to use() call inspection introduced

This commit is contained in:
Mikhail Glukhikh
2016-11-25 14:45:33 +03:00
parent 59b2608354
commit 468e975580
4 changed files with 26 additions and 0 deletions
@@ -17,9 +17,11 @@
package org.jetbrains.kotlin.psi;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.KtNodeTypes;
import org.jetbrains.kotlin.lexer.KtTokens;
import java.util.List;
@@ -48,4 +50,8 @@ public class KtTryExpression extends KtExpressionImpl {
return (KtFinallySection) findChildByType(KtNodeTypes.FINALLY);
}
@Nullable
public PsiElement getTryKeyword() {
return findChildByType(KtTokens.TRY_KEYWORD);
}
}
@@ -0,0 +1,5 @@
<html>
<body>
This inspection reports a try-finally block with resource.close() in finally which can be converted into the resource.use() call
</body>
</html>
+8
View File
@@ -1957,6 +1957,14 @@
language="kotlin"
/>
<localInspection implementationClass="org.jetbrains.kotlin.idea.intentions.ConvertTryFinallyToUseCallInspection"
displayName="Convert try / finally to use() call"
groupName="Kotlin"
enabledByDefault="true"
level="WEAK WARNING"
language="kotlin"
/>
<referenceImporter implementation="org.jetbrains.kotlin.idea.quickfix.KotlinReferenceImporter"/>
<fileType.fileViewProviderFactory filetype="KJSM" implementationClass="com.intellij.psi.ClassFileViewProviderFactory"/>
@@ -17,10 +17,13 @@
package org.jetbrains.kotlin.idea.intentions
import com.intellij.openapi.editor.Editor
import com.intellij.psi.PsiElement
import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.searches.ReferencesSearch
import org.jetbrains.kotlin.descriptors.VariableDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.allChildren
import org.jetbrains.kotlin.psi.psiUtil.contentRange
@@ -29,6 +32,10 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.types.typeUtil.supertypes
class ConvertTryFinallyToUseCallInspection : IntentionBasedInspection<KtTryExpression>(ConvertTryFinallyToUseCallIntention::class) {
override fun inspectionTarget(element: KtTryExpression) = element.tryKeyword ?: element.tryBlock
}
class ConvertTryFinallyToUseCallIntention : SelfTargetingOffsetIndependentIntention<KtTryExpression>(
KtTryExpression::class.java, "Convert try-finally to .use()"
) {