From 74b7c06a68e46391556da9bd55006ad4c707343a Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 21 Feb 2011 20:04:53 +0100 Subject: [PATCH] allow dangling metacharacters in Python regexps (PY-2430) --- .../codeInsight/regexp/PythonRegexpParserDefinition.java | 9 +++++++++ python/testData/regexp/danglingMetacharacters.py | 3 +++ python/testSrc/com/jetbrains/python/PyRegexpTest.java | 4 ++++ 3 files changed, 16 insertions(+) create mode 100644 python/testData/regexp/danglingMetacharacters.py diff --git a/python/src/com/jetbrains/python/codeInsight/regexp/PythonRegexpParserDefinition.java b/python/src/com/jetbrains/python/codeInsight/regexp/PythonRegexpParserDefinition.java index c74ff6a41628..bd8ec250dc37 100644 --- a/python/src/com/jetbrains/python/codeInsight/regexp/PythonRegexpParserDefinition.java +++ b/python/src/com/jetbrains/python/codeInsight/regexp/PythonRegexpParserDefinition.java @@ -1,5 +1,6 @@ package com.jetbrains.python.codeInsight.regexp; +import com.intellij.lang.PsiParser; import com.intellij.lexer.Lexer; import com.intellij.openapi.project.Project; import com.intellij.psi.FileViewProvider; @@ -7,6 +8,7 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.tree.IFileElementType; import org.intellij.lang.regexp.RegExpFile; import org.intellij.lang.regexp.RegExpLexer; +import org.intellij.lang.regexp.RegExpParser; import org.intellij.lang.regexp.RegExpParserDefinition; import org.jetbrains.annotations.NotNull; @@ -21,6 +23,13 @@ public class PythonRegexpParserDefinition extends RegExpParserDefinition { return new RegExpLexer(false, true, false, true); } + @Override + public PsiParser createParser(Project project) { + RegExpParser regExpParser = new RegExpParser(); + regExpParser.setAllowDanglingMetacharacters(true); + return regExpParser; + } + @Override public IFileElementType getFileNodeType() { return PYTHON_REGEXP_FILE; diff --git a/python/testData/regexp/danglingMetacharacters.py b/python/testData/regexp/danglingMetacharacters.py new file mode 100644 index 000000000000..e025c0ca2f47 --- /dev/null +++ b/python/testData/regexp/danglingMetacharacters.py @@ -0,0 +1,3 @@ +import re + +re.compile('{\w+}') diff --git a/python/testSrc/com/jetbrains/python/PyRegexpTest.java b/python/testSrc/com/jetbrains/python/PyRegexpTest.java index ea39fef4aedc..4625d2744544 100644 --- a/python/testSrc/com/jetbrains/python/PyRegexpTest.java +++ b/python/testSrc/com/jetbrains/python/PyRegexpTest.java @@ -33,6 +33,10 @@ public class PyRegexpTest extends PyLightFixtureTestCase { doTestLexer("[^][]", "CLASS_BEGIN", "CARET", "CHARACTER", "CHARACTER", "CLASS_END"); } + public void testDanglingMetacharacters() { // PY-2430 + doTestHighlighting(); + } + private void doTestHighlighting() { myFixture.testHighlighting(true, false, false, "regexp/" + getTestName(true) + ".py"); }