KT-11594 "Add non-null asserted (!!) call" applied to unsafe cast to nullable type causes AE at KtPsiFactory.createExpression()
#KT-11594 Fixed
This commit is contained in:
@@ -31,10 +31,7 @@ import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtPostfixExpression
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
@@ -85,7 +82,7 @@ class AddExclExclCallFix(val psiElement: PsiElement) : ExclExclCallFix() {
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, file: PsiFile?) {
|
||||
val modifiedExpression = getExpressionForIntroduceCall() ?: return
|
||||
val exclExclExpression = KtPsiFactory(project).createExpression(modifiedExpression.text + "!!")
|
||||
val exclExclExpression = KtPsiFactory(project).createExpressionByPattern("$0!!", modifiedExpression)
|
||||
modifiedExpression.replace(exclExclExpression)
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
// "Add non-null asserted (!!) call" "true"
|
||||
|
||||
fun callMe(p: String) {}
|
||||
|
||||
fun callIt(p: Any) {
|
||||
callMe(<caret>p as String?)
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
// "Add non-null asserted (!!) call" "true"
|
||||
|
||||
fun callMe(p: String) {}
|
||||
|
||||
fun callIt(p: Any) {
|
||||
callMe(<caret>(p as String?)!!)
|
||||
}
|
||||
@@ -4473,6 +4473,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("kt11594.kt")
|
||||
public void testKt11594() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/expressions/kt11594.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("removeUselessCast.kt")
|
||||
public void testRemoveUselessCast() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/expressions/removeUselessCast.kt");
|
||||
|
||||
Reference in New Issue
Block a user