Added escaping/unescaping signatures when saving/loading from annotations.

This commit is contained in:
Evgeny Gerashchenko
2012-08-21 20:09:03 +04:00
parent 04431b2fa4
commit 7efbd44d63
3 changed files with 7 additions and 4 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.jet.lang.resolve.java.kt;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiMethod;
import org.jetbrains.annotations.NotNull;
@@ -36,7 +37,7 @@ public class KotlinSignatureAnnotation extends PsiAnnotationWrapper {
public String signature() {
if (signature == null) {
signature = getStringAttribute(JvmStdlibNames.KOTLIN_SIGNATURE_VALUE_METHOD, "");
signature = StringUtil.unescapeStringCharacters(getStringAttribute(JvmStdlibNames.KOTLIN_SIGNATURE_VALUE_METHOD, ""));
}
return signature;
}
@@ -29,6 +29,7 @@ import com.intellij.openapi.ui.popup.JBPopupAdapter;
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.ui.popup.LightweightWindowEvent;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiDocumentManager;
@@ -223,7 +224,7 @@ class EditSignatureBalloon {
static PsiNameValuePair[] signatureToNameValuePairs(@NotNull Project project, @NotNull String signature) {
return JavaPsiFacade.getElementFactory(project).createAnnotationFromText(
"@" + KotlinSignatureInJavaMarkerProvider.KOTLIN_SIGNATURE_ANNOTATION + "(value=\"" + signature + "\")", null)
.getParameterList().getAttributes();
"@" + KotlinSignatureInJavaMarkerProvider.KOTLIN_SIGNATURE_ANNOTATION
+ "(value=\"" + StringUtil.escapeStringCharacters(signature) + "\")", null).getParameterList().getAttributes();
}
}
@@ -28,6 +28,7 @@ import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.util.Function;
@@ -93,7 +94,7 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
PsiNameValuePair pair = kotlinSignatureAnnotation.getParameterList().getAttributes()[0];
PsiAnnotationMemberValue value = pair.getValue();
return value == null ? "null" : value instanceof PsiLiteralExpression
? ((PsiLiteralExpression) value).getValue().toString()
? StringUtil.unescapeStringCharacters(((PsiLiteralExpression) value).getValue().toString())
: value.getText();
}