correctly detect verbose syntax when flags is passed as keyword argument (PY-8143)

This commit is contained in:
Dmitry Jemerov
2013-01-30 13:41:23 +01:00
parent ef65985dff
commit 9e57727004
3 changed files with 20 additions and 1 deletions

View File

@@ -75,8 +75,15 @@ public class PythonRegexpInjector implements LanguageInjector {
}
private static boolean isVerbose(PyExpression expr) {
if (expr instanceof PyKeywordArgument) {
PyKeywordArgument keywordArgument = (PyKeywordArgument)expr;
if (!"flags".equals(keywordArgument.getName())) {
return false;
}
return isVerbose(keywordArgument.getValueExpression());
}
if (expr instanceof PyReferenceExpression) {
return "VERBOSE".equals(((PyReferenceExpression) expr).getReferencedName());
return "VERBOSE".equals(((PyReferenceExpression)expr).getReferencedName());
}
if (expr instanceof PyBinaryExpression) {
return isVerbose(((PyBinaryExpression)expr).getLeftExpression()) || isVerbose(((PyBinaryExpression)expr).getRightExpression());

View File

@@ -0,0 +1,8 @@
import re
linkfinder = re.compile(r"""\[ # ein link beginnt mit eckiger klammer, escaped da [ sonst re-zeichen ist
( # nur der INHALT der [inhalt] Links ist gefragt
[^\[]+ # akzeptiere alles ausser oeffnender Klammer [ damit die Greediness umgangen wird.
)
\]
""", flags=re.VERBOSE)

View File

@@ -51,6 +51,10 @@ public class PyRegexpTest extends PyTestCase {
doTestHighlighting();
}
public void testVerboseAsKwArg() { // PY-8143
doTestHighlighting();
}
private void doTestHighlighting() {
myFixture.testHighlighting(true, false, true, "regexp/" + getTestName(true) + ".py");
}