From 7f2ccb561361db1c7973d6edcc656fd745dea7af Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 23 Mar 2016 17:33:08 +0300 Subject: [PATCH] KT-11295 AssertionError in ConvertToStringTemplateIntention.fold #KT-11295 Fixed --- .../idea/intentions/ConvertToStringTemplateIntention.kt | 3 ++- idea/testData/intentions/convertToStringTemplate/kt11295.kt | 5 +++++ .../intentions/convertToStringTemplate/kt11295.kt.after | 5 +++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 6 ++++++ 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 idea/testData/intentions/convertToStringTemplate/kt11295.kt create mode 100644 idea/testData/intentions/convertToStringTemplate/kt11295.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt index 6622d26ebdd..a3988770a71 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertToStringTemplateIntention.kt @@ -99,7 +99,8 @@ class ConvertToStringTemplateIntention : SelfTargetingOffsetIndependentIntention val type = bindingContext.getType(expression)!! if (KotlinBuiltIns.isChar(type)) { - return expressionText.removePrefix("'").removeSuffix("'") + val value = expressionText.removePrefix("'").removeSuffix("'") + return if (value == "\"") "\\\"" else value } val constant = ConstantExpressionEvaluator.getConstant(expression, bindingContext) diff --git a/idea/testData/intentions/convertToStringTemplate/kt11295.kt b/idea/testData/intentions/convertToStringTemplate/kt11295.kt new file mode 100644 index 00000000000..166f8e517d4 --- /dev/null +++ b/idea/testData/intentions/convertToStringTemplate/kt11295.kt @@ -0,0 +1,5 @@ +val TABLE_PREFIX = "" + +fun test(): String { + return TABLE_PREFIX + '"' +} \ No newline at end of file diff --git a/idea/testData/intentions/convertToStringTemplate/kt11295.kt.after b/idea/testData/intentions/convertToStringTemplate/kt11295.kt.after new file mode 100644 index 00000000000..7b6dc15502f --- /dev/null +++ b/idea/testData/intentions/convertToStringTemplate/kt11295.kt.after @@ -0,0 +1,5 @@ +val TABLE_PREFIX = "" + +fun test(): String { + return "$TABLE_PREFIX\"" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 3af51371e3d..e201527ae0d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -4735,6 +4735,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("kt11295.kt") + public void testKt11295() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertToStringTemplate/kt11295.kt"); + doTest(fileName); + } + @TestMetadata("multilineString.kt") public void testMultilineString() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertToStringTemplate/multilineString.kt");