diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java index 5650f02a4e3e..5c19b4736a8b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java @@ -46,6 +46,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrAnonymousC import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrGdkMethod; import org.jetbrains.plugins.groovy.lang.psi.api.types.*; import org.jetbrains.plugins.groovy.lang.psi.expectedTypes.GroovyExpectedTypesProvider; +import org.jetbrains.plugins.groovy.lang.psi.expectedTypes.SubtypeConstraint; import org.jetbrains.plugins.groovy.lang.psi.expectedTypes.TypeConstraint; import org.jetbrains.plugins.groovy.lang.psi.impl.GrLiteralClassType; import org.jetbrains.plugins.groovy.lang.psi.impl.GrRangeType; @@ -536,7 +537,17 @@ public class ExpressionGenerator extends Generator { else { value = literal.getValue(); } - if (value instanceof String) { + + boolean isChar = false; + for (TypeConstraint constraint : constraints) { + if (constraint instanceof SubtypeConstraint && TypesUtil.unboxPrimitiveTypeWrapper(constraint.getDefaultType()) == PsiType.CHAR) { + isChar = true; + } + } + if (isChar) { + builder.append('\'').append(StringUtil.escapeQuotes(String.valueOf(value))).append('\''); + } + else if (value instanceof String) { builder.append('"').append(StringUtil.escapeQuotes((String)value)).append('"'); } else { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy index ea8330cc90a1..702bc27a71e6 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy @@ -171,4 +171,5 @@ final class Matcher { } void testAsBoolean() {doTest()} + void testCharInitializer() {doTest()} } diff --git a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/charInitializer.java b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/charInitializer.java new file mode 100644 index 000000000000..51fa02b7de5d --- /dev/null +++ b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/charInitializer.java @@ -0,0 +1,2 @@ +char c = 'a'; +print(c);