diff --git a/python/src/com/jetbrains/python/PythonFoldingBuilder.java b/python/src/com/jetbrains/python/PythonFoldingBuilder.java
index e89182cd1bcc..934df7061dc6 100644
--- a/python/src/com/jetbrains/python/PythonFoldingBuilder.java
+++ b/python/src/com/jetbrains/python/PythonFoldingBuilder.java
@@ -207,15 +207,16 @@ public class PythonFoldingBuilder extends CustomFoldingBuilder implements DumbAw
}
if (node.getElementType() == PyElementTypes.STRING_LITERAL_EXPRESSION) {
PyStringLiteralExpression stringLiteralExpression = (PyStringLiteralExpression)node.getPsi();
+ String prefix = stringLiteralExpression.getStringElements().get(0).getPrefix();
if (stringLiteralExpression.isDocString()) {
final String stringValue = stringLiteralExpression.getStringValue().trim();
final String[] lines = LineTokenizer.tokenize(stringValue, true);
if (lines.length > 2 && lines[1].trim().length() == 0) {
- return "\"\"\"" + lines[0].trim() + "...\"\"\"";
+ return prefix + "\"\"\"" + lines[0].trim() + "...\"\"\"";
}
- return "\"\"\"...\"\"\"";
+ return prefix + "\"\"\"...\"\"\"";
} else {
- return getLanguagePlaceholderForString(stringLiteralExpression);
+ return prefix + getLanguagePlaceholderForString(stringLiteralExpression);
}
}
return "...";
diff --git a/python/testData/folding/stringPrefixFolding.py b/python/testData/folding/stringPrefixFolding.py
new file mode 100644
index 000000000000..fccaa92251ab
--- /dev/null
+++ b/python/testData/folding/stringPrefixFolding.py
@@ -0,0 +1,8 @@
+def foo():
+ r"""
+ foo/bar
+ """
+ pass
+
+mline = u"\n\n\n\n\n\n\n\n" \
+ "\n\n\n\n\n\n\n\"
\ No newline at end of file
diff --git a/python/testSrc/com/jetbrains/python/PyFoldingTest.java b/python/testSrc/com/jetbrains/python/PyFoldingTest.java
index 149130b9aab1..698045ce4a70 100644
--- a/python/testSrc/com/jetbrains/python/PyFoldingTest.java
+++ b/python/testSrc/com/jetbrains/python/PyFoldingTest.java
@@ -112,4 +112,9 @@ public class PyFoldingTest extends PyTestCase {
}
}
}
+
+ // PY-39406
+ public void testStringPrefixFolding() {
+ doTest();
+ }
}