diff --git a/RegExpSupport/test/org/intellij/lang/regexp/BaseParseTestCase.java b/RegExpSupport/test/org/intellij/lang/regexp/BaseParseTestCase.java deleted file mode 100644 index d7881a5b748a..000000000000 --- a/RegExpSupport/test/org/intellij/lang/regexp/BaseParseTestCase.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2006 Sascha Weinreuter - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.intellij.lang.regexp; - -import com.intellij.openapi.application.PathManager; -import com.intellij.openapi.application.Result; -import com.intellij.openapi.command.WriteCommandAction; -import com.intellij.openapi.fileTypes.FileTypeManager; -import com.intellij.openapi.project.Project; -import com.intellij.testFramework.UsefulTestCase; -import com.intellij.testFramework.fixtures.CodeInsightTestFixture; -import com.intellij.testFramework.fixtures.IdeaProjectTestFixture; -import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory; -import com.intellij.testFramework.fixtures.TestFixtureBuilder; -import org.jetbrains.annotations.NotNull; - -import java.io.File; - -public abstract class BaseParseTestCase extends UsefulTestCase { - protected CodeInsightTestFixture myFixture; - - @Override - protected void setUp() throws Exception { - super.setUp(); - final IdeaTestFixtureFactory fixtureFactory = IdeaTestFixtureFactory.getFixtureFactory(); - final TestFixtureBuilder builder = fixtureFactory.createFixtureBuilder(getName()); - - myFixture = fixtureFactory.createCodeInsightFixture(builder.getFixture()); - myFixture.setTestDataPath(getTestDataPath()); - myFixture.setUp(); - - final Project project = myFixture.getProject(); - - new WriteCommandAction(project) { - @Override - protected void run(@NotNull Result result) throws Throwable { - FileTypeManager.getInstance().registerFileType(RegExpFileType.INSTANCE, new String[]{"regexp"}); - } - }.execute(); - } - - @Override - protected void tearDown() throws Exception { - try { - myFixture.tearDown(); - } - finally { - myFixture = null; - super.tearDown(); - } - } - - public static String getTestDataRoot() { - String homePath = PathManager.getHomePath(); - File candidate = new File(homePath, "community/RegExpSupport"); - if (candidate.isDirectory()) { - return new File(candidate, "testData").getPath(); - } - return new File(homePath, "RegExpSupport/testData").getPath(); - } - - protected String getTestDataPath() { - return getTestDataRoot() + "/psi"; - } -} diff --git a/RegExpSupport/test/org/intellij/lang/regexp/ParseTest.java b/RegExpSupport/test/org/intellij/lang/regexp/ParseTest.java deleted file mode 100644 index 4ceccc03f2cc..000000000000 --- a/RegExpSupport/test/org/intellij/lang/regexp/ParseTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2006 Sascha Weinreuter - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.intellij.lang.regexp; - -public class ParseTest extends BaseParseTestCase { - - //public void test0() throws Throwable { - // myFixture.testHighlighting("test0.regexp"); - //} - public void test1() throws Throwable { - myFixture.testHighlighting("test1.regexp"); - } - public void test2() throws Throwable { - myFixture.testHighlighting("test2.regexp"); - } - public void test3() throws Throwable { - myFixture.testHighlighting("test3.regexp"); - } - public void test4() throws Throwable { - myFixture.testHighlighting("test4.regexp"); - } -} diff --git a/RegExpSupport/test/org/intellij/lang/regexp/RegExpParseTest.java b/RegExpSupport/test/org/intellij/lang/regexp/RegExpHighlightingTest.java similarity index 63% rename from RegExpSupport/test/org/intellij/lang/regexp/RegExpParseTest.java rename to RegExpSupport/test/org/intellij/lang/regexp/RegExpHighlightingTest.java index d9a06ed1fb33..204ee63edba4 100644 --- a/RegExpSupport/test/org/intellij/lang/regexp/RegExpParseTest.java +++ b/RegExpSupport/test/org/intellij/lang/regexp/RegExpHighlightingTest.java @@ -15,8 +15,11 @@ */ package org.intellij.lang.regexp; +import com.intellij.openapi.application.PathManager; +import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; import org.jdom.Document; import org.jdom.Element; +import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.xpath.XPath; @@ -27,19 +30,19 @@ import java.util.Map; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; -public class RegExpParseTest extends BaseParseTestCase { +public class RegExpHighlightingTest extends LightPlatformCodeInsightFixtureTestCase { - private ByteArrayOutputStream myOut; + private static final ByteArrayOutputStream myOut; enum Result { OK, ERR } static class Test { - String pattern; + final String pattern; + final Result expectedResult; boolean showWarnings = true; boolean showInfo = false; - Result expectedResult; String regExpHost = null; Test(String pattern, Result result, boolean warn, boolean info, String host) { @@ -51,56 +54,52 @@ public class RegExpParseTest extends BaseParseTestCase { } } - private final Map myMap = new LinkedHashMap(); + private static final Map myMap = new LinkedHashMap(); + static { + try { + final Document document = new SAXBuilder().build(new File(PathManager.getHomePath(),"community/RegExpSupport/testData/RETest.xml")); + final List list = XPath.selectNodes(document.getRootElement(), "//test"); - @Override - protected void setUp() throws Exception { - final Document document = new SAXBuilder().build(new File(getTestDataRoot(), "/RETest.xml")); - final List list = XPath.selectNodes(document.getRootElement(), "//test"); - - int i = 0; - for (Element element : list) { - final String name; - final Element parent = (Element)element.getParent(); - final String s = parent.getName(); - final String t = parent.getAttribute("id") == null ? "" : parent.getAttribute("id").getValue() + "-"; - if (!"tests".equals(s)) { - name = s + "/test-" + t + ++i + ".regexp"; - } - else { - name = "test-" + t + ++i + ".regexp"; - } - final Result result = Result.valueOf((String)XPath.selectSingleNode(element, "string(expected)")); - final boolean warn = !"false".equals(element.getAttributeValue("warning")); - final boolean info = "true".equals(element.getAttributeValue("info")); - final String host = element.getAttributeValue("host"); - - final String pattern = (String)XPath.selectSingleNode(element, "string(pattern)"); - myMap.put(name, new Test(pattern, result, warn, info, host)); - if (!"false".equals(element.getAttributeValue("verify")) && host == null) { - try { - Pattern.compile(pattern); - if (result == Result.ERR) { - System.out.println("Incorrect FAIL value for " + pattern); - } + int i = 0; + for (Element element : list) { + final String name; + final Element parent = (Element)element.getParent(); + final String s = parent.getName(); + final String t = parent.getAttribute("id") == null ? "" : parent.getAttribute("id").getValue() + "-"; + if (!"tests".equals(s)) { + name = s + "/test-" + t + ++i + ".regexp"; } - catch (PatternSyntaxException e) { - if (result == Result.OK) { - System.out.println("Incorrect OK value for " + pattern); + else { + name = "test-" + t + ++i + ".regexp"; + } + final Result result = Result.valueOf((String)XPath.selectSingleNode(element, "string(expected)")); + final boolean warn = !"false".equals(element.getAttributeValue("warning")); + final boolean info = "true".equals(element.getAttributeValue("info")); + final String host = element.getAttributeValue("host"); + + final String pattern = (String)XPath.selectSingleNode(element, "string(pattern)"); + myMap.put(name, new Test(pattern, result, warn, info, host)); + if (!"false".equals(element.getAttributeValue("verify")) && host == null) { + try { + Pattern.compile(pattern); + if (result == Result.ERR) { + System.out.println("Incorrect FAIL value for " + pattern); + } + } + catch (PatternSyntaxException e) { + if (result == Result.OK) { + System.out.println("Incorrect OK value for " + pattern); + } } } } + + myOut = new ByteArrayOutputStream(); + System.setErr(new PrintStream(myOut)); + } + catch (JDOMException | IOException e) { + throw new RuntimeException(e); } - - super.setUp(); - - myOut = new ByteArrayOutputStream(); - System.setErr(new PrintStream(myOut)); - } - - @Override - protected String getTestDataPath() { - return super.getTestDataPath() + "/gen/"; } public void testOptions() throws Exception { @@ -127,10 +126,6 @@ public class RegExpParseTest extends BaseParseTestCase { doTest("escapes/"); } - public void testAnchors() throws Exception { - doTest("anchors/"); - } - public void testNamedchars() throws Exception { doTest("namedchars/"); } @@ -139,18 +134,6 @@ public class RegExpParseTest extends BaseParseTestCase { doTest("backrefs/"); } - public void testComplex() throws Exception { - doTest("complex/"); - } - - public void testIncomplete() throws Exception { - doTest("incomplete/"); - } - - public void testRealLife() throws Exception { - doTest("real-life/"); - } - public void testRegressions() throws Exception { doTest("regressions/"); } @@ -159,10 +142,6 @@ public class RegExpParseTest extends BaseParseTestCase { doTest("bug/"); } - public void testFromXML() throws Exception { - doTest(null); - } - private void doTest(String prefix) throws IOException { int n = 0; int failed = 0; @@ -176,7 +155,7 @@ public class RegExpParseTest extends BaseParseTestCase { System.out.print("filename = " + name); n++; - final RegExpParseTest.Test test = myMap.get(name); + final Test test = myMap.get(name); try { if (test.regExpHost != null) { final Class aClass = (Class)Class.forName(test.regExpHost); @@ -218,7 +197,7 @@ public class RegExpParseTest extends BaseParseTestCase { } } else { - System.out.println("ERROR: " + myOut.toString()); + System.out.println("ERROR: " + myOut); } } failed++; diff --git a/RegExpSupport/test/org/intellij/lang/regexp/RegExpParsingTest.java b/RegExpSupport/test/org/intellij/lang/regexp/RegExpParsingTest.java new file mode 100644 index 000000000000..71992809744d --- /dev/null +++ b/RegExpSupport/test/org/intellij/lang/regexp/RegExpParsingTest.java @@ -0,0 +1,326 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.intellij.lang.regexp; + +import com.intellij.openapi.application.PathManager; +import com.intellij.testFramework.ParsingTestCase; + +import java.io.IOException; + +/** + * @author Bas Leijdekkers + */ +public class RegExpParsingTest extends ParsingTestCase { + + public RegExpParsingTest() { + super("psi", "regexp", new RegExpParserDefinition()); + } + + @Override + protected String getTestDataPath() { + return PathManager.getHomePath() + "/community/RegExpSupport/testData/"; + } + + public void testSimple1() throws IOException { doCodeTest("|"); } + public void testSimple2() throws IOException { doCodeTest("(|\\$.*)\\.class"); } + public void testSimple3() throws IOException { doCodeTest("abc"); } + public void testSimple4() throws IOException { doCodeTest("multiple words of text"); } + public void testSimple5() throws IOException { doCodeTest("ab|cd"); } + public void testSimple6() throws IOException { doCodeTest("a*"); } + public void testSimple7() throws IOException { doCodeTest("ab*c"); } + public void testSimple8() throws IOException { doCodeTest("ab*bc"); } + public void testSimple9() throws IOException { doCodeTest("ab+bc"); } + public void testSimple10() throws IOException { doCodeTest("ab?bc"); } + public void testSimple11() throws IOException { doCodeTest("ab?c"); } + public void testSimple12() throws IOException { doCodeTest("a.c"); } + public void testSimple13() throws IOException { doCodeTest("a.*c"); } + public void testSimple14() throws IOException { doCodeTest("*a"); } + public void testSimple15() throws IOException { doCodeTest("a{1}"); } + public void testSimple16() throws IOException { doCodeTest("a{}"); } + public void testSimple17() throws IOException { doCodeTest("a{"); } + public void testSimple18() throws IOException { doCodeTest("a}"); } + public void testSimple19() throws IOException { doCodeTest("a{1,}"); } + public void testSimple20() throws IOException { doCodeTest("a{1,2}"); } + public void testSimple21() throws IOException { doCodeTest("a{1,foo}"); } + public void testSimple22() throws IOException { doCodeTest("\\;"); } + + public void testQuantifiers1() throws IOException { doCodeTest("a?"); } + public void testQuantifiers2() throws IOException { doCodeTest("a+"); } + public void testQuantifiers3() throws IOException { doCodeTest("a*"); } + public void testQuantifiers4() throws IOException { doCodeTest("a??"); } + public void testQuantifiers5() throws IOException { doCodeTest("a+?"); } + public void testQuantifiers6() throws IOException { doCodeTest("a*?"); } + public void testQuantifiers7() throws IOException { doCodeTest("a?+"); } + public void testQuantifiers8() throws IOException { doCodeTest("a++"); } + public void testQuantifiers9() throws IOException { doCodeTest("a*+"); } + public void testQuantifiers10() throws IOException { doCodeTest("a**"); } + public void testQuantifiers11() throws IOException { doCodeTest("a{2}"); } + public void testQuantifiers12() throws IOException { doCodeTest("a{1,2}"); } + public void testQuantifiers13() throws IOException { doCodeTest("a{2,1}"); } + public void testQuantifiers14() throws IOException { doCodeTest("a{0,1}"); } + public void testQuantifiers15() throws IOException { doCodeTest("a{1,}"); } + public void testQuantifiers16() throws IOException { doCodeTest("a{0,}"); } + public void testQuantifiers17() throws IOException { doCodeTest("a{1}"); } + public void testQuantifiers18() throws IOException { doCodeTest("a{3,3}"); } + public void testQuantifiers19() throws IOException { doCodeTest("a{"); } + public void testQuantifiers20() throws IOException { doCodeTest("a}"); } + public void testQuantifiers21() throws IOException { doCodeTest("a{}"); } + + public void testCharclasses1() throws IOException { doCodeTest("a[bc]d"); } + public void testCharclasses2() throws IOException { doCodeTest("a[b-d]e"); } + public void testCharclasses3() throws IOException { doCodeTest("a[b-d]"); } + public void testCharclasses4() throws IOException { doCodeTest("a[b-a]"); } + public void testCharclasses5() throws IOException { doCodeTest("a[-b]"); } + public void testCharclasses6() throws IOException { doCodeTest("a[b-]"); } + public void testCharclasses7() throws IOException { doCodeTest("[a-[b]]"); } + public void testCharclasses8() throws IOException { doCodeTest("a[b&&[cd]]"); } + public void testCharclasses9() throws IOException { doCodeTest("a[b-&&[cd]]"); } + public void testCharclasses10() throws IOException { doCodeTest("a[b&&-]"); } + public void testCharclasses11() throws IOException { doCodeTest("a[b&&-b]"); } + public void testCharclasses12() throws IOException { doCodeTest("[&&]"); } + public void testCharclasses13() throws IOException { doCodeTest("[&&[^\\d]]"); } + public void testCharclasses14() throws IOException { doCodeTest("[a&&]"); } + public void testCharclasses15() throws IOException { doCodeTest("a[b&&c&&d]"); } + public void testCharclasses16() throws IOException { doCodeTest("a[b&&c&&d-e&&f]"); } + public void testCharclasses17() throws IOException { doCodeTest("[a&&]"); } + public void testCharclasses18() throws IOException { doCodeTest("a[a[b][c]]"); } + public void testCharclasses19() throws IOException { doCodeTest("[a-[]]"); } + public void testCharclasses20() throws IOException { doCodeTest("[a-[b"); } + public void testCharclasses21() throws IOException { doCodeTest("[a[^b]]"); } + public void testCharclasses22() throws IOException { doCodeTest("a[a[b[c]][d]]"); } + public void testCharclasses23() throws IOException { doCodeTest("a[\\t--]"); } + public void testCharclasses24() throws IOException { doCodeTest("a[\\t--]"); } + public void testCharclasses25() throws IOException { doCodeTest("a[\\t---]"); } + public void testCharclasses26() throws IOException { doCodeTest("a[-]?c"); } + public void testCharclasses27() throws IOException { doCodeTest("a["); } + public void testCharclasses28() throws IOException { doCodeTest("a]"); } + public void testCharclasses29() throws IOException { doCodeTest("[a-["); } + public void testCharclasses30() throws IOException { doCodeTest("a[]]"); } + public void testCharclasses31() throws IOException { doCodeTest("a[^bc]d"); } + public void testCharclasses32() throws IOException { doCodeTest("a[^bc]"); } + public void testCharclasses33() throws IOException { doCodeTest("a[]b"); } + public void testCharclasses34() throws IOException { doCodeTest("[^]"); } + public void testCharclasses35() throws IOException { doCodeTest("[abhgefdc]ij"); } + public void testCharclasses36() throws IOException { doCodeTest("[a-zA-Z_][a-zA-Z0-9_]*"); } + public void testCharclasses37() throws IOException { doCodeTest("([a-c]+?)c"); } + public void testCharclasses38() throws IOException { doCodeTest("([ab]*?)b"); } + public void testCharclasses39() throws IOException { doCodeTest("([ab]*)b"); } + public void testCharclasses40() throws IOException { doCodeTest("([ab]??)b"); } + public void testCharclasses41() throws IOException { doCodeTest("(c[ab]?)b"); } + public void testCharclasses42() throws IOException { doCodeTest("(c[ab]??)b"); } + public void testCharclasses43() throws IOException { doCodeTest("(c[ab]*?)b"); } + public void testCharclasses44() throws IOException { doCodeTest("a[bcd]+dcdcde"); } + public void testCharclasses45() throws IOException { doCodeTest("[k]"); } + public void testCharclasses46() throws IOException { doCodeTest("a[bcd]*dcdcde"); } + public void testCharclasses47() throws IOException { doCodeTest("[^ab]*"); } + public void testCharclasses48() throws IOException { doCodeTest("a[.]b"); } + public void testCharclasses49() throws IOException { doCodeTest("a[+*?]b"); } + public void testCharclasses50() throws IOException { doCodeTest("a[\\p{IsDigit}\\p{IsAlpha}]b"); } + public void testCharclasses51() throws IOException { doCodeTest("[\\p{L}&&[^\\p{Lu}]]"); } + public void testCharclasses52() throws IOException { doCodeTest("\\pL\\pM\\pZ\\pS\\pN\\pP\\pC\\PL\\PM\\PZ\\PS\\PN\\PP\\PC"); } + public void testCharclasses53() throws IOException { doCodeTest("\\pA"); } + public void testCharclasses54() throws IOException { doCodeTest("\\pl"); } + public void testCharclasses55() throws IOException { doCodeTest("a\\p"); } + public void testCharclasses56() throws IOException { doCodeTest("a\\p{}"); } + public void testCharclasses57() throws IOException { doCodeTest("a\\p}"); } + public void testCharclasses58() throws IOException { doCodeTest("a\\p{123}"); } + public void testCharclasses59() throws IOException { doCodeTest("[\\p{nothing}]"); } + public void testCharclasses60() throws IOException { doCodeTest("a\\p{*}b"); } + public void testCharclasses61() throws IOException { doCodeTest("[\\w-\\w]"); } + public void testCharclasses62() throws IOException { doCodeTest("[a-\\w]"); } + public void testCharclasses63() throws IOException { doCodeTest("(?x)abc #foo \\q bar\n# foo\n(?-xi)xyz(?i:ABC)"); } + public void testCharclasses64() throws IOException { doCodeTest("[\\ud800\\udc00-\\udbff\\udfff]"); } + public void testCharclasses65() throws IOException { doCodeTest("\\R"); } + public void testCharclasses66() throws IOException { doCodeTest("\\X"); } + public void testCharclasses67() throws IOException { doCodeTest("\\-[\\*\\-\\[\\]\\\\\\+]"); } + public void testCharclasses68() throws IOException { doCodeTest("[\\b]"); } + + public void testGroups1() throws IOException { doCodeTest("()ef"); } + public void testGroups2() throws IOException { doCodeTest("()*"); } + public void testGroups3() throws IOException { doCodeTest("()"); } + public void testGroups4() throws IOException { doCodeTest("(|)"); } + public void testGroups5() throws IOException { doCodeTest("(*)b"); } + public void testGroups6() throws IOException { doCodeTest("((a))"); } + public void testGroups7() throws IOException { doCodeTest("(a)b(c)"); } + public void testGroups8() throws IOException { doCodeTest("(a*)*"); } + public void testGroups9() throws IOException { doCodeTest("(a*)+"); } + public void testGroups10() throws IOException { doCodeTest("(a|)*"); } + public void testGroups11() throws IOException { doCodeTest("(ab|cd)e"); } + public void testGroups12() throws IOException { doCodeTest("(.*)c(.*)"); } + public void testGroups13() throws IOException { doCodeTest("\\((.*), (.*)\\)"); } + public void testGroups14() throws IOException { doCodeTest("a(bc)d"); } + public void testGroups15() throws IOException { doCodeTest("([abc])*d"); } + public void testGroups16() throws IOException { doCodeTest("((((((((((a)))))))))"); } + public void testGroups17() throws IOException { doCodeTest("([abc])*bcd"); } + public void testGroups18() throws IOException { doCodeTest("(a|b)c*d"); } + public void testGroups19() throws IOException { doCodeTest("a([bc]*)c*"); } + public void testGroups20() throws IOException { doCodeTest("((a)(b)c)(d)"); } + public void testGroups21() throws IOException { doCodeTest("(ab|a)b*c"); } + public void testGroups22() throws IOException { doCodeTest("(ab|ab*)bc"); } + public void testGroups23() throws IOException { doCodeTest("(a|b|c|d|e)f"); } + public void testGroups24() throws IOException { doCodeTest("a([bc]*)(c*d)"); } + public void testGroups25() throws IOException { doCodeTest("a([bc]+)(c*d)"); } + public void testGroups26() throws IOException { doCodeTest("a([bc]*)(c+d)"); } + public void testGroups27() throws IOException { doCodeTest("(a+|b)*"); } + public void testGroups28() throws IOException { doCodeTest("(a+|b)+"); } + public void testGroups29() throws IOException { doCodeTest("(a+|b)?"); } + public void testGroups30() throws IOException { doCodeTest("(^*"); } + public void testGroups31() throws IOException { doCodeTest(")("); } + public void testGroups32() throws IOException { doCodeTest("(?i:*)"); } + public void testGroups33() throws IOException { doCodeTest("(?[a-c])\\1"); } + public void testGroups34() throws IOException { doCodeTest("(?[a-c])\\k"); } + public void testGroups35() throws IOException { doCodeTest("\\k"); } + + public void testEscapes1() throws IOException { doCodeTest("\\q"); } + public void testEscapes2() throws IOException { doCodeTest("\\#"); } + public void testEscapes3() throws IOException { doCodeTest("a\\"); } + public void testEscapes4() throws IOException { doCodeTest("a\\(b"); } + public void testEscapes5() throws IOException { doCodeTest("a\\(*b"); } + public void testEscapes6() throws IOException { doCodeTest("a\\\\b"); } + public void testEscapes7() throws IOException { doCodeTest("\\u004a"); } + public void testEscapes8() throws IOException { doCodeTest("\\0123"); } + public void testEscapes9() throws IOException { doCodeTest("\\0"); } + public void testEscapes10() throws IOException { doCodeTest("\\x4a"); } + public void testEscapes11() throws IOException { doCodeTest("\\x{0}"); } + public void testEscapes12() throws IOException { doCodeTest("\\x{2011F}"); } + public void testEscapes13() throws IOException { doCodeTest("[\\x4a-\\x4b]"); } + public void testEscapes14() throws IOException { doCodeTest("[a-a]"); } + public void testEscapes15() throws IOException { doCodeTest("[\\x4a-\\x3f]"); } + public void testEscapes16() throws IOException { doCodeTest("[\\udbff\\udfff-\\ud800\\udc00]"); } + public void testEscapes17() throws IOException { doCodeTest("[\\ud800\\udc00-\\udbff\\udfff]"); } + public void testEscapes18() throws IOException { doCodeTest("[z-a]"); } + public void testEscapes19() throws IOException { doCodeTest("[a-z]"); } + public void testEscapes20() throws IOException { doCodeTest("a\\Qabc?*+.))]][]\\Eb"); } + public void testEscapes21() throws IOException { doCodeTest("(a\\Qabc?*+.))]][]\\Eb)"); } + public void testEscapes22() throws IOException { doCodeTest("[\\Qabc?*+.))]][]\\E]"); } + public void testEscapes23() throws IOException { doCodeTest("a\\Qabc?*+.))]][]\\E)"); } + public void testEscapes24() throws IOException { doCodeTest("\\Q\\j\\E"); } + public void testEscapes25() throws IOException { doCodeTest("\\c0"); } + + public void testAnchors1() throws IOException { doCodeTest("^*"); } + public void testAnchors2() throws IOException { doCodeTest("$*"); } + public void testAnchors3() throws IOException { doCodeTest("^abc"); } + public void testAnchors4() throws IOException { doCodeTest("^abc$"); } + public void testAnchors5() throws IOException { doCodeTest("abc$"); } + public void testAnchors6() throws IOException { doCodeTest("^"); } + public void testAnchors7() throws IOException { doCodeTest("$"); } + public void testAnchors8() throws IOException { doCodeTest("$b"); } + public void testAnchors9() throws IOException { doCodeTest("^(ab|cd)e"); } + public void testAnchors10() throws IOException { doCodeTest("^a(bc+|b[eh])g|.h$"); } + + public void testNamedchars1() throws IOException { doCodeTest("a*b\\s+c"); } + public void testNamedchars2() throws IOException { doCodeTest("\\d+"); } + public void testNamedchars3() throws IOException { doCodeTest("^\\p{javaJavaIdentifierStart}+\\p{javaJavaIdentifierPart}+$"); } + public void testNamedchars4() throws IOException { doCodeTest("\\p{IsDigit}\\p{IsAlpha}"); } + public void testNamedchars5() throws IOException { doCodeTest("\\p{InLATIN_1_SUPPLEMENT}"); } + public void testNamedchars6() throws IOException { doCodeTest("[a-e]?d\\\\e"); } + public void testNamedchars7() throws IOException { doCodeTest("((\\w+)/)*(\\w+)"); } + public void testNamedchars8() throws IOException { doCodeTest("\\p{Digit}+"); } + public void testNamedchars9() throws IOException { doCodeTest("[:xdigit:]+"); } + public void testNamedchars10() throws IOException { doCodeTest("\\p{unknown}+"); } + + public void testBackrefs1() throws IOException { doCodeTest("(ac*)c*d[ac]*\\1"); } + public void testBackrefs2() throws IOException { doCodeTest("(.)=\\1"); } + public void testBackrefs3() throws IOException { doCodeTest("([ab])=\\1"); } + public void testBackrefs4() throws IOException { doCodeTest("([ab]+)=\\1"); } + public void testBackrefs5() throws IOException { doCodeTest("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)\\105"); } + public void testBackrefs6() throws IOException { doCodeTest("(.)\\11"); } + public void testBackrefs7() throws IOException { doCodeTest("([ab]+)=\\2"); } + public void testBackrefs8() throws IOException { doCodeTest("([ab]+)=\\3"); } + public void testBackrefs9() throws IOException { doCodeTest("([ab]+=\\1)"); } + + public void testComplex1() throws IOException { doCodeTest("z(\\w\\s+(?:\\w\\s+\\w)+)z"); } + public void testComplex2() throws IOException { doCodeTest("(([hH][tT]{2}[pP]|[fF][tT][pP]):\\/\\/)?[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*"); } + public void testComplex3() throws IOException { doCodeTest("((?:[hH][tT]{2}[pP]|[fF][tT][pP]):\\/\\/)?[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*"); } + public void testComplex4() throws IOException { doCodeTest("(([hH][tT]{2}[pP]|[fF][tT][pP]):\\/\\/)?[a-zA-Z0-9\\-]+(?:\\.[a-zA-Z0-9\\-]+)*"); } + public void testComplex5() throws IOException { doCodeTest("(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\\/\\/)?[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*"); } + public void testComplex6() throws IOException { doCodeTest("^(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\\/\\/)?[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*$"); } + public void testComplex7() throws IOException { doCodeTest("^(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\\/\\/)?[a-zA-Z0-9\\-]+(?:\\.[a-zA-Z0-9\\-]+)*$"); } + + public void testIncomplete1() throws IOException { doCodeTest("abc\\"); } + public void testIncomplete2() throws IOException { doCodeTest("abc[\\"); } + public void testIncomplete3() throws IOException { doCodeTest("abc\\x"); } + public void testIncomplete4() throws IOException { doCodeTest("abc\\x1"); } + public void testIncomplete5() throws IOException { doCodeTest("abc\\x{"); } + public void testIncomplete6() throws IOException { doCodeTest("abc\\x{}"); } + public void testIncomplete7() throws IOException { doCodeTest("abc\\x{0"); } + public void testIncomplete8() throws IOException { doCodeTest("abc\\u"); } + public void testIncomplete9() throws IOException { doCodeTest("abc\\u22"); } + public void testIncomplete10() throws IOException { doCodeTest("\\Qabc"); } + public void testIncomplete11() throws IOException { doCodeTest("\\Q"); } + public void testIncomplete12() throws IOException { doCodeTest("\\E"); } + public void testIncomplete13() throws IOException { doCodeTest("a|*"); } + + public void testRegressions1() throws IOException { doCodeTest("("); } + public void testRegressions2() throws IOException { doCodeTest("[^^]"); } + public void testRegressions3() throws IOException { doCodeTest("a)b"); } + public void testRegressions4() throws IOException { doCodeTest("\\s*@return(?:s)?\\s*(?:(?:\\{|:)?\\s*(?([^\\s\\}]+)\\s*\\}?\\s*)?(.*)"); } + + public void testOptions1() throws IOException { doCodeTest("(?iZm)abc"); } + public void testOptions2() throws IOException { doCodeTest("(?idmsuxU)nice"); } + public void testOptions3() throws IOException { doCodeTest("(?idm-suxU)one(?suxU-idm)two"); } + + public void testTests1() throws IOException { doCodeTest("abc)"); } + public void testTests2() throws IOException { doCodeTest("(abc"); } + public void testTests3() throws IOException { doCodeTest("a+b+c"); } + public void testTests4() throws IOException { doCodeTest("a**"); } + public void testTests5() throws IOException { doCodeTest("a++"); } + public void testTests6() throws IOException { doCodeTest("ab*"); } + public void testTests7() throws IOException { doCodeTest("abcd*efg"); } + public void testTests8() throws IOException { doCodeTest("a|b|c|d|e"); } + public void testTests9() throws IOException { doCodeTest("(bc+d$|ef*g.|h?i(j|k))"); } + public void testTests10() throws IOException { doCodeTest("a*(b*c*)"); } + public void testTests11() throws IOException { doCodeTest("a?b+c*"); } + public void testTests12() throws IOException { doCodeTest("i am a green (giant|man|martian)"); } + public void testTests13() throws IOException { doCodeTest("(wee|week)(knights|knight)"); } + public void testTests14() throws IOException { doCodeTest("(a.*b)(a.*b)"); } + public void testTests15() throws IOException { doCodeTest("(\\s*\\w+)?"); } + public void testTests16() throws IOException { doCodeTest("(?:a)"); } + public void testTests17() throws IOException { doCodeTest("(?:\\w)"); } + public void testTests18() throws IOException { doCodeTest("(?:\\w\\s\\w)+"); } + public void testTests19() throws IOException { doCodeTest("(a\\w)(?:,(a\\w))+"); } + public void testTests20() throws IOException { doCodeTest("abc.*?x+yz"); } + public void testTests21() throws IOException { doCodeTest("abc.+?x+yz"); } + public void testTests22() throws IOException { doCodeTest("a.+?(c|d)"); } + public void testTests23() throws IOException { doCodeTest("a.+(c|d)"); } + public void testTests24() throws IOException { doCodeTest("a+?b+?c+?"); } + + public void testRealLife1() throws IOException { doCodeTest("x:found=\"(true|false)\""); } + public void testRealLife2() throws IOException { doCodeTest("(?:\\s)|(?:/\\*.*\\*/)|(?://[^\\n]*)"); } + public void testRealLife3() throws IOException { doCodeTest("((?:\\p{Alpha}\\:)?[0-9 a-z_A-Z\\-\\\\./]+)"); } + public void testRealLife4() throws IOException { doCodeTest("^[\\w\\+\\.\\-]{2,}:"); } + public void testRealLife5() throws IOException { doCodeTest("#(.*)$"); } + public void testRealLife6() throws IOException { doCodeTest("^(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)"); } + public void testRealLife7() throws IOException { doCodeTest("(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)"); } + public void testRealLife8() throws IOException { doCodeTest("usd [+-]?[0-9]+.[0-9][0-9]"); } + public void testRealLife9() throws IOException { doCodeTest("\\b(\\w+)(\\s+\\1)+\\b"); } + public void testRealLife10() throws IOException { doCodeTest(".*?(<(error|warning|info)(?: descr=\"((?:[^\"\\\\]|\\\\\")*)\")?(?: type=\"([0-9A-Z_]+)\")?(?: foreground=\"([0-9xa-f]+)\")?(?: background=\"([0-9xa-f]+)\")?(?: effectcolor=\"([0-9xa-f]+)\")?(?: effecttype=\"([A-Z]+)\")?(?: fonttype=\"([0-9]+)\")?(/)?>)(.*)"); } + + public void testBug1() throws IOException { doCodeTest("[{][\\w\\.]*[}]"); } + public void testBug2() throws IOException { doCodeTest("[a-z0-9!\\#$%&'*+/=?^_`{|}~-]+"); } + public void testBug3() throws IOException { doCodeTest("[\\{]"); } + public void testBug4() throws IOException { doCodeTest("{"); } + public void testBug5() throws IOException { doCodeTest("\\{"); } + public void testBug6() throws IOException { doCodeTest("(<=\\s)-{3,}(?>\\s)"); } + public void testBug7() throws IOException { doCodeTest("(?x)a\\ b\\ c"); } + public void testBug8() throws IOException { doCodeTest("a\\ b"); } + public void testBug9() throws IOException { doCodeTest("(^|\\.)\\*(?=(\\.|$))"); } + public void testBug10() throws IOException { doCodeTest("\\h \\H \\v \\V"); } + + public void testParse1() throws IOException { doCodeTest("123 | 456"); } + public void testParse2() throws IOException { doCodeTest("1**"); } + public void testParse3() throws IOException { doCodeTest("(([hH][tT]{2}[pP]|[fF][tT][pP])://)?[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*"); } +} diff --git a/RegExpSupport/testData/RETest.xml b/RegExpSupport/testData/RETest.xml index ab17374717c6..b3f0539494f5 100644 --- a/RegExpSupport/testData/RETest.xml +++ b/RegExpSupport/testData/RETest.xml @@ -1,147 +1,15 @@ - - | - OK - - - (|\$.*)\.class - OK - - - abc - OK - - - multiple words of text - OK - - - ab|cd - OK - - - a* - OK - - - ab*c - OK - - - ab*bc - OK - - - ab+bc - OK - - - ab?bc - OK - - - ab?c - OK - - - a.c - OK - - - a.*c - OK - - - *a - ERR - {1}]]> OK - - a{} - ERR - - - a{ - ERR - - - a} - OK - - - a{1,} - OK - - - a{1,2} - OK - - - a{1,foo} - ERR - \;]]> OK - - a? - OK - - - a+ - OK - - - a* - OK - - - a?? - OK - - - a+? - OK - - - a*? - OK - - - a?+ - OK - - - a++ - OK - - - a*+ - OK - - - a** - ERR - - - a{2} - OK - - - a{1,2} - OK - - - a{2,1} - ERR - {0,1}]]> OK @@ -162,282 +30,12 @@ {3,3}]]> OK - - a{ - ERR - - - a} - OK - - - a{} - ERR - - - a[bc]d - OK - - - a[b-d]e - OK - - - a[b-d] - OK - - - a[b-a] - ERR - - - a[-b] - OK - - - a[b-] - OK - - - [a-[b]] - OK - - - a[b&&[cd]] - OK - - - a[b-&&[cd]] - ERR - - - a[b&&-] - OK - - - a[b&&-b] - OK - - - [&&] - ERR - - - [&&[^\d]] - OK - - - [a&&] - OK - - - a[b&&c&&d] - OK - - - a[b&&c&&d-e&&f] - OK - - - [a&&] - OK - - - a[a[b][c]] - OK - - - [a-[]] - ERR - - - [a-[b - ERR - - - [a[^b]] - OK - - - a[a[b[c]][d]] - OK - - - a[\t--] - OK - - - a[\t--] - OK - - - a[\t---] - OK - - - a[-]?c - OK - - - a[ - ERR - - - a] - OK - - - [a-[ - ERR - - - a[]] - OK - - - a[^bc]d - OK - - - a[^bc] - OK - - - a[]b - ERR - - - [^] - ERR - - - [abhgefdc]ij - OK - - - [a-zA-Z_][a-zA-Z0-9_]* - OK - - - ([a-c]+?)c - OK - - - ([ab]*?)b - OK - - - ([ab]*)b - OK - - - ([ab]??)b - OK - - - (c[ab]?)b - OK - - - (c[ab]??)b - OK - - - (c[ab]*?)b - OK - - - a[bcd]+dcdcde - OK - - - [k] - OK - - - a[bcd]*dcdcde - OK - - - [^ab]* - OK - - - a[.]b - OK - - - a[+*?]b - OK - - - a[\p{IsDigit}\p{IsAlpha}]b - OK - - - [\p{L}&&[^\p{Lu}]] - OK - - - \pL\pM\pZ\pS\pN\pP\pC\PL\PM\PZ\PS\PN\PP\PC - OK - - - \pA - ERR - - - \pl - ERR - - - a\p - ERR - - - a\p{} - ERR - - - a\p} - ERR - - - a\p{123} - ERR - - - [\p{nothing}] - ERR - - - *}b]]> - OK - \w-\w]]]> OK - - [a-\w] - ERR - - - (?x)abc #foo \q bar -# foo -(?-xi)xyz(?i:ABC) - OK - - - [\ud800\udc00-\udbff\udfff] - OK - - - \R - OK - \X ERR @@ -453,14 +51,6 @@ - - ()ef - OK - - - ()* - OK - ()]]> OK @@ -469,118 +59,10 @@ (|)]]> OK - - (*)b - ERR - ((a))]]> OK - - (a)b(c) - OK - - - (a*)* - OK - - - (a*)+ - OK - - - (a|)* - OK - - - (ab|cd)e - OK - - - (.*)c(.*) - OK - - - \((.*), (.*)\) - OK - - - a(bc)d - OK - - - ([abc])*d - OK - - - ((((((((((a))))))))) - ERR - - - ([abc])*bcd - OK - - - (a|b)c*d - OK - - - a([bc]*)c* - OK - - - ((a)(b)c)(d) - OK - - - (ab|a)b*c - OK - - - (ab|ab*)bc - OK - - - (a|b|c|d|e)f - OK - - - a([bc]*)(c*d) - OK - - - a([bc]+)(c*d) - OK - - - a([bc]*)(c+d) - OK - - - (a+|b)* - OK - - - (a+|b)+ - OK - - - (a+|b)? - OK - - - (^* - ERR - - - )( - ERR - - - (?i:*) - ERR - (?<asdf>[a-c])\1 OK @@ -595,315 +77,44 @@ - - \q - ERR - - - \# - OK - - - a\ - ERR - - - a\(b - OK - - - a\(*b - OK - - - a\\b - OK - - - \u004a - OK - - - \0123 - OK - - - \0 - ERR - - - \x4a - OK - - - \x{0} - OK - - - \x{2011F} - OK - - - [\x4a-\x4b] - OK - a-a]]]> OK - [\x4a-\x3f] - ERR + \x4a-\x3f]]]> + OK \udbff\udfff-\ud800\udc00]]]> OK - - [\ud800\udc00-\udbff\udfff] - OK - z-a]]]> OK - - [a-z] - OK - - - a\Qabc?*+.))]][]\Eb - OK - - - (a\Qabc?*+.))]][]\Eb) - OK - )]][]\E]]]> OK - - a\Qabc?*+.))]][]\E) - ERR - - - \Q\j\E - OK - - - \c0 - OK - - - - ^* - OK - - - $* - OK - - - ^abc - OK - - - ^abc$ - OK - - - abc$ - OK - - - ^ - OK - - - $ - OK - - - $b - OK - - - ^(ab|cd)e - OK - - - ^a(bc+|b[eh])g|.h$ - OK - - - - a*b\s+c - OK - - - \d+ - OK - ^\p{javaJavaIdentifierStart}+\p{javaJavaIdentifierPart}+$ OK - - \p{IsDigit}\p{IsAlpha} - OK - - - \p{InLATIN_1_SUPPLEMENT} - OK - - - [a-e]?d\\e - OK - - - ((\w+)/)*(\w+) - OK - - - \p{Digit}+ - OK - it:]+]]> OK - - \p{unknown}+ - ERR - - - (ac*)c*d[ac]*\1 - OK - - - (.)=\1 - OK - - - ([ab])=\1 - OK - - - ([ab]+)=\1 - OK - - - (a)(b)(c)(d)(e)(f)(g)(h)(i)(j)\105 - OK - - - (.)\11 - OK - - - ([ab]+)=\2 - ERR - - - ([ab]+)=\3 - ERR - \1)]]> OK - - - z(\w\s+(?:\w\s+\w)+)z - OK - - - (([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)* - OK - - - ((?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)* - OK - - - (([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)* - OK - - - (?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)* - OK - - - ^(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*$ - OK - - - ^(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$ - OK - - - - - - abc\ - ERR - - - abc[\ - ERR - - - abc\x - ERR - - - abc\x1 - ERR - - - abc\x{ - ERR - - - abc\x{} - ERR - - - abc\x{0 - ERR - - - abc\u - ERR - - - abc\u22 - ERR - - - \Qabc - OK - - - \Q - OK - - - \E - ERR - - - a|* - ERR - - @@ -911,20 +122,6 @@ ( ERR - - - [^^] - OK - - - - )b]]> - OK - - - [^\s\}]+)\s*\}?\s*)?(.*)]]> - OK - @@ -932,207 +129,13 @@ Zm)abc]]> OK - - (?idmsuxU)nice - OK - - - (?idm-suxU)one(?suxU-idm)two - OK - - - abc) - ERR - - - (abc - ERR - - - a+b+c - OK - - - a** - ERR - - - a++ - OK - - - ab* - OK - - - abcd*efg - OK - - - a|b|c|d|e - OK - - - (bc+d$|ef*g.|h?i(j|k)) - OK - - - a*(b*c*) - OK - - - a?b+c* - OK - - - i am a green (giant|man|martian) - OK - - - (wee|week)(knights|knight) - OK - - - (a.*b)(a.*b) - OK - - - (\s*\w+)? - OK - - - (?:a) - OK - - - (?:\w) - OK - - - (?:\w\s\w)+ - OK - - - (a\w)(?:,(a\w))+ - OK - - - abc.*?x+yz - OK - - - abc.+?x+yz - OK - - - a.+?(c|d) - OK - - - a.+(c|d) - OK - - - a+?b+?c+? - OK - - - - x:found="(true|false)" - OK - - - (?:\s)|(?:/\*.*\*/)|(?://[^\n]*) - OK - - - ((?:\p{Alpha}\:)?[0-9 a-z_A-Z\-\\./]+) - OK - - - ^[\w\+\.\-]{2,}: - OK - - - #(.*)$ - OK - - - ^(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*) - OK - - - (([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*) - OK - - - usd [+-]?[0-9]+.[0-9][0-9] - OK - - - \b(\w+)(\s+\1)+\b - OK - - - .*?(<(error|warning|info)(?: descr="((?:[^"\\]|\\")*)")?(?: type="([0-9A-Z_]+)")?(?: foreground="([0-9xa-f]+)")?(?: background="([0-9xa-f]+)")?(?: effectcolor="([0-9xa-f]+)")?(?: effecttype="([A-Z]+)")?(?: fonttype="([0-9]+)")?(/)?>)(.*) - OK - - - - - - [{][\w\.]*[}] - OK - - - [a-z0-9!\#$%&'*+/=?^_`{|}~-]+ - OK - - - [\{] - OK - - - { - ERR - - - \{ - OK - - - - - - \s)]]> - OK - - - - (?x)a\ b\ c - OK - \ b]]> OK - - - - (^|\.)\*(?=(\.|$)) - OK - - - - - - \h \H \v \V - OK - - diff --git a/RegExpSupport/testData/psi/Anchors1.txt b/RegExpSupport/testData/psi/Anchors1.txt new file mode 100644 index 000000000000..d09bf87bab15 --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors1.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: <^*> + RegExpBranchImpl: <^*> + RegExpClosureImpl: <^*> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors10.txt b/RegExpSupport/testData/psi/Anchors10.txt new file mode 100644 index 000000000000..0045d14a80c7 --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors10.txt @@ -0,0 +1,41 @@ +REGEXP_FILE + RegExpPatternImpl: <^a(bc+|b[eh])g|.h$> + RegExpBranchImpl: <^a(bc+|b[eh])g> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpGroupImpl: <(bc+|b[eh])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpClassImpl: <[eh]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('h') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + PsiElement(UNION)('|') + RegExpBranchImpl: <.h$> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors2.txt b/RegExpSupport/testData/psi/Anchors2.txt new file mode 100644 index 000000000000..dfcae8a73631 --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors2.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: <$*> + RegExpBranchImpl: <$*> + RegExpClosureImpl: <$*> + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors3.txt b/RegExpSupport/testData/psi/Anchors3.txt new file mode 100644 index 000000000000..0fbf9491a104 --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors3.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: <^abc> + RegExpBranchImpl: <^abc> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors4.txt b/RegExpSupport/testData/psi/Anchors4.txt new file mode 100644 index 000000000000..59616fe44ddf --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors4.txt @@ -0,0 +1,13 @@ +REGEXP_FILE + RegExpPatternImpl: <^abc$> + RegExpBranchImpl: <^abc$> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors5.txt b/RegExpSupport/testData/psi/Anchors5.txt new file mode 100644 index 000000000000..3db657b224ad --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors5.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors6.txt b/RegExpSupport/testData/psi/Anchors6.txt new file mode 100644 index 000000000000..25634fe228c4 --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors6.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <^> + RegExpBranchImpl: <^> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors7.txt b/RegExpSupport/testData/psi/Anchors7.txt new file mode 100644 index 000000000000..0edae4cfda1c --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors7.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <$> + RegExpBranchImpl: <$> + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors8.txt b/RegExpSupport/testData/psi/Anchors8.txt new file mode 100644 index 000000000000..84380ce5dda1 --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors8.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + RegExpPatternImpl: <$b> + RegExpBranchImpl: <$b> + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Anchors9.txt b/RegExpSupport/testData/psi/Anchors9.txt new file mode 100644 index 000000000000..60b18ccdec19 --- /dev/null +++ b/RegExpSupport/testData/psi/Anchors9.txt @@ -0,0 +1,22 @@ +REGEXP_FILE + RegExpPatternImpl: <^(ab|cd)e> + RegExpBranchImpl: <^(ab|cd)e> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpGroupImpl: <(ab|cd)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('e') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs1.txt b/RegExpSupport/testData/psi/Backrefs1.txt new file mode 100644 index 000000000000..2ef3ab0da07e --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs1.txt @@ -0,0 +1,35 @@ +REGEXP_FILE + RegExpPatternImpl: <(ac*)c*d[ac]*\1> + RegExpBranchImpl: <(ac*)c*d[ac]*\1> + RegExpGroupImpl: <(ac*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpClosureImpl: <[ac]*> + RegExpClassImpl: <[ac]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpBackrefImpl: <\1> + PsiElement(BACKREF)('\1') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs2.txt b/RegExpSupport/testData/psi/Backrefs2.txt new file mode 100644 index 000000000000..f0b81da340d6 --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs2.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: <(.)=\1> + RegExpBranchImpl: <(.)=\1> + RegExpGroupImpl: <(.)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <.> + RegExpBranchImpl: <.> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpBackrefImpl: <\1> + PsiElement(BACKREF)('\1') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs3.txt b/RegExpSupport/testData/psi/Backrefs3.txt new file mode 100644 index 000000000000..32dd48f0ead7 --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs3.txt @@ -0,0 +1,20 @@ +REGEXP_FILE + RegExpPatternImpl: <([ab])=\1> + RegExpBranchImpl: <([ab])=\1> + RegExpGroupImpl: <([ab])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[ab]> + RegExpBranchImpl: <[ab]> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpBackrefImpl: <\1> + PsiElement(BACKREF)('\1') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs4.txt b/RegExpSupport/testData/psi/Backrefs4.txt new file mode 100644 index 000000000000..7d8232de4bd0 --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs4.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <([ab]+)=\1> + RegExpBranchImpl: <([ab]+)=\1> + RegExpGroupImpl: <([ab]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[ab]+> + RegExpBranchImpl: <[ab]+> + RegExpClosureImpl: <[ab]+> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpBackrefImpl: <\1> + PsiElement(BACKREF)('\1') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs5.txt b/RegExpSupport/testData/psi/Backrefs5.txt new file mode 100644 index 000000000000..210d5130a13e --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs5.txt @@ -0,0 +1,77 @@ +REGEXP_FILE + RegExpPatternImpl: <(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)\105> + RegExpBranchImpl: <(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)\105> + RegExpGroupImpl: <(a)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(b)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(c)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(d)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(e)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('e') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(f)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(g)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('g') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(h)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(i)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('i') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(j)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('j') + PsiElement(GROUP_END)(')') + RegExpBackrefImpl: <\10> + PsiElement(BACKREF)('\10') + RegExpCharImpl: <5> + PsiElement(CHARACTER)('5') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs6.txt b/RegExpSupport/testData/psi/Backrefs6.txt new file mode 100644 index 000000000000..017deff0e1e5 --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs6.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: <(.)\11> + RegExpBranchImpl: <(.)\11> + RegExpGroupImpl: <(.)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <.> + RegExpBranchImpl: <.> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + PsiElement(GROUP_END)(')') + RegExpBackrefImpl: <\1> + PsiElement(BACKREF)('\1') + RegExpCharImpl: <1> + PsiElement(CHARACTER)('1') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs7.txt b/RegExpSupport/testData/psi/Backrefs7.txt new file mode 100644 index 000000000000..05e0ce5bbe06 --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs7.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <([ab]+)=\2> + RegExpBranchImpl: <([ab]+)=\2> + RegExpGroupImpl: <([ab]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[ab]+> + RegExpBranchImpl: <[ab]+> + RegExpClosureImpl: <[ab]+> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpBackrefImpl: <\2> + PsiElement(BACKREF)('\2') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs8.txt b/RegExpSupport/testData/psi/Backrefs8.txt new file mode 100644 index 000000000000..2fe01686083c --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs8.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <([ab]+)=\3> + RegExpBranchImpl: <([ab]+)=\3> + RegExpGroupImpl: <([ab]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[ab]+> + RegExpBranchImpl: <[ab]+> + RegExpClosureImpl: <[ab]+> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpBackrefImpl: <\3> + PsiElement(BACKREF)('\3') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Backrefs9.txt b/RegExpSupport/testData/psi/Backrefs9.txt new file mode 100644 index 000000000000..764ff94828b6 --- /dev/null +++ b/RegExpSupport/testData/psi/Backrefs9.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <([ab]+=\1)> + RegExpBranchImpl: <([ab]+=\1)> + RegExpGroupImpl: <([ab]+=\1)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[ab]+=\1> + RegExpBranchImpl: <[ab]+=\1> + RegExpClosureImpl: <[ab]+> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpBackrefImpl: <\1> + PsiElement(BACKREF)('\1') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug1.txt b/RegExpSupport/testData/psi/Bug1.txt new file mode 100644 index 000000000000..5a8a60d15294 --- /dev/null +++ b/RegExpSupport/testData/psi/Bug1.txt @@ -0,0 +1,24 @@ +REGEXP_FILE + RegExpPatternImpl: <[{][\w\.]*[}]> + RegExpBranchImpl: <[{][\w\.]*[}]> + RegExpClassImpl: <[{]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <{> + PsiElement(LBRACE)('{') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[\w\.]*> + RegExpClassImpl: <[\w\.]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <\w\.> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpCharImpl: <\.> + PsiElement(REDUNDANT_ESCAPE)('\.') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpClassImpl: <[}]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <}> + PsiElement(CHARACTER)('}') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug10.txt b/RegExpSupport/testData/psi/Bug10.txt new file mode 100644 index 000000000000..6031e9ced829 --- /dev/null +++ b/RegExpSupport/testData/psi/Bug10.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: <\h \H \v \V> + RegExpBranchImpl: <\h \H \v \V> + RegExpSimpleClassImpl: <\h> + PsiElement(CHAR_CLASS)('\h') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpSimpleClassImpl: <\H> + PsiElement(CHAR_CLASS)('\H') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpSimpleClassImpl: <\v> + PsiElement(CHAR_CLASS)('\v') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpSimpleClassImpl: <\V> + PsiElement(CHAR_CLASS)('\V') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug2.txt b/RegExpSupport/testData/psi/Bug2.txt new file mode 100644 index 000000000000..904675e0d78e --- /dev/null +++ b/RegExpSupport/testData/psi/Bug2.txt @@ -0,0 +1,60 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-z0-9!\#$%&'*+/=?^_`{|}~-]+> + RegExpBranchImpl: <[a-z0-9!\#$%&'*+/=?^_`{|}~-]+> + RegExpClosureImpl: <[a-z0-9!\#$%&'*+/=?^_`{|}~-]+> + RegExpClassImpl: <[a-z0-9!\#$%&'*+/=?^_`{|}~-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: + PsiElement(CHARACTER)('!') + RegExpCharImpl: <\#> + PsiElement(REDUNDANT_ESCAPE)('\#') + RegExpCharImpl: <$> + PsiElement(CHARACTER)('$') + RegExpCharImpl: <%> + PsiElement(CHARACTER)('%') + RegExpCharImpl: <&> + PsiElement(CHARACTER)('&') + RegExpCharImpl: <'> + PsiElement(CHARACTER)(''') + RegExpCharImpl: <*> + PsiElement(CHARACTER)('*') + RegExpCharImpl: <+> + PsiElement(CHARACTER)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: + PsiElement(CHARACTER)('?') + RegExpCharImpl: <^> + PsiElement(CARET)('^') + RegExpCharImpl: <_> + PsiElement(CHARACTER)('_') + RegExpCharImpl: <`> + PsiElement(CHARACTER)('`') + RegExpCharImpl: <{> + PsiElement(LBRACE)('{') + RegExpCharImpl: <|> + PsiElement(CHARACTER)('|') + RegExpCharImpl: <}> + PsiElement(CHARACTER)('}') + RegExpCharImpl: <~> + PsiElement(CHARACTER)('~') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug3.txt b/RegExpSupport/testData/psi/Bug3.txt new file mode 100644 index 000000000000..ed2a106315b0 --- /dev/null +++ b/RegExpSupport/testData/psi/Bug3.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: <[\{]> + RegExpBranchImpl: <[\{]> + RegExpClassImpl: <[\{]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <\{> + PsiElement(REDUNDANT_ESCAPE)('\{') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug4.txt b/RegExpSupport/testData/psi/Bug4.txt new file mode 100644 index 000000000000..ca7de507d76c --- /dev/null +++ b/RegExpSupport/testData/psi/Bug4.txt @@ -0,0 +1,4 @@ +REGEXP_FILE + PsiErrorElement:Dangling metacharacter + + PsiElement(LBRACE)('{') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug5.txt b/RegExpSupport/testData/psi/Bug5.txt new file mode 100644 index 000000000000..1cf60d4a9383 --- /dev/null +++ b/RegExpSupport/testData/psi/Bug5.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\{> + RegExpBranchImpl: <\{> + RegExpCharImpl: <\{> + PsiElement(ESC_CHARACTER)('\{') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug6.txt b/RegExpSupport/testData/psi/Bug6.txt new file mode 100644 index 000000000000..fe490b74182d --- /dev/null +++ b/RegExpSupport/testData/psi/Bug6.txt @@ -0,0 +1,29 @@ +REGEXP_FILE + RegExpPatternImpl: <(<=\s)-{3,}(?>\s)> + RegExpBranchImpl: <(<=\s)-{3,}(?>\s)> + RegExpGroupImpl: <(<=\s)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <<=\s> + RegExpBranchImpl: <<=\s> + RegExpCharImpl: <<> + PsiElement(CHARACTER)('<') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: <-{3,}> + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + RegExpQuantifierImpl: <{3,}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('3') + PsiElement(COMMA)(',') + PsiElement(RBRACE)('}') + RegExpGroupImpl: <(?>\s)> + PsiElement(NON_CAPT_GROUP)('(?>') + RegExpPatternImpl: <\s> + RegExpBranchImpl: <\s> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug7.txt b/RegExpSupport/testData/psi/Bug7.txt new file mode 100644 index 000000000000..79230871ff42 --- /dev/null +++ b/RegExpSupport/testData/psi/Bug7.txt @@ -0,0 +1,18 @@ +REGEXP_FILE + RegExpPatternImpl: <(?x)a\ b\ c> + RegExpBranchImpl: <(?x)a\ b\ c> + RegExpSetOptionsImpl: <(?x)> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: + PsiElement(OPTIONS_ON)('x') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <\ > + PsiElement(CHARACTER)('\ ') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: <\ > + PsiElement(CHARACTER)('\ ') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug8.txt b/RegExpSupport/testData/psi/Bug8.txt new file mode 100644 index 000000000000..6ac64b049f8b --- /dev/null +++ b/RegExpSupport/testData/psi/Bug8.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <\ > + PsiElement(REDUNDANT_ESCAPE)('\ ') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Bug9.txt b/RegExpSupport/testData/psi/Bug9.txt new file mode 100644 index 000000000000..35bf17b931a1 --- /dev/null +++ b/RegExpSupport/testData/psi/Bug9.txt @@ -0,0 +1,32 @@ +REGEXP_FILE + RegExpPatternImpl: <(^|\.)\*(?=(\.|$))> + RegExpBranchImpl: <(^|\.)\*(?=(\.|$))> + RegExpGroupImpl: <(^|\.)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <^|\.> + RegExpBranchImpl: <^> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + PsiElement(UNION)('|') + RegExpBranchImpl: <\.> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <\*> + PsiElement(ESC_CHARACTER)('\*') + RegExpGroupImpl: <(?=(\.|$))> + PsiElement(POS_LOOKAHEAD)('(?=') + RegExpPatternImpl: <(\.|$)> + RegExpBranchImpl: <(\.|$)> + RegExpGroupImpl: <(\.|$)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\.|$> + RegExpBranchImpl: <\.> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + PsiElement(UNION)('|') + RegExpBranchImpl: <$> + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses1.txt b/RegExpSupport/testData/psi/Charclasses1.txt new file mode 100644 index 000000000000..82ab2547804c --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses1.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[bc]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpCharImpl: + PsiElement(CHARACTER)('d') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses10.txt b/RegExpSupport/testData/psi/Charclasses10.txt new file mode 100644 index 000000000000..4afc1e58f52f --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses10.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b&&-]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(ANDAND)('&&') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses11.txt b/RegExpSupport/testData/psi/Charclasses11.txt new file mode 100644 index 000000000000..e91dcd2e0c0b --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses11.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b&&-b]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(ANDAND)('&&') + RegExpUnionImpl: <-b> + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses12.txt b/RegExpSupport/testData/psi/Charclasses12.txt new file mode 100644 index 000000000000..31d006657c64 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses12.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: <[&&]> + RegExpBranchImpl: <[&&]> + RegExpClassImpl: <[&&]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: <&&> + PsiElement(ANDAND)('&&') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses13.txt b/RegExpSupport/testData/psi/Charclasses13.txt new file mode 100644 index 000000000000..01c7f2789161 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses13.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: <[&&[^\d]]> + RegExpBranchImpl: <[&&[^\d]]> + RegExpClassImpl: <[&&[^\d]]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: <&&[^\d]> + PsiElement(ANDAND)('&&') + RegExpClassImpl: <[^\d]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpSimpleClassImpl: <\d> + PsiElement(CHAR_CLASS)('\d') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses14.txt b/RegExpSupport/testData/psi/Charclasses14.txt new file mode 100644 index 000000000000..85a66ba2f4d8 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses14.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <[a&&]> + RegExpBranchImpl: <[a&&]> + RegExpClassImpl: <[a&&]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(ANDAND)('&&') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses15.txt b/RegExpSupport/testData/psi/Charclasses15.txt new file mode 100644 index 000000000000..d9723a318e8e --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses15.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b&&c&&d]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(ANDAND)('&&') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(ANDAND)('&&') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses16.txt b/RegExpSupport/testData/psi/Charclasses16.txt new file mode 100644 index 000000000000..717220c4c5e2 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses16.txt @@ -0,0 +1,24 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b&&c&&d-e&&f]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(ANDAND)('&&') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(ANDAND)('&&') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + PsiElement(ANDAND)('&&') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses17.txt b/RegExpSupport/testData/psi/Charclasses17.txt new file mode 100644 index 000000000000..85a66ba2f4d8 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses17.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <[a&&]> + RegExpBranchImpl: <[a&&]> + RegExpClassImpl: <[a&&]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(ANDAND)('&&') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses18.txt b/RegExpSupport/testData/psi/Charclasses18.txt new file mode 100644 index 000000000000..7bbc99f361d7 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses18.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[a[b][c]]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[c]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses19.txt b/RegExpSupport/testData/psi/Charclasses19.txt new file mode 100644 index 000000000000..c50dc2e10420 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses19.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-[]]> + RegExpBranchImpl: <[a-[]]> + RegExpClassImpl: <[a-[]]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + RegExpClassImpl: <[]]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + PsiElement(CLASS_END)(']') + PsiErrorElement:Unclosed character class + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses2.txt b/RegExpSupport/testData/psi/Charclasses2.txt new file mode 100644 index 000000000000..c2f6db289f7f --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses2.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b-d]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(CLASS_END)(']') + RegExpCharImpl: + PsiElement(CHARACTER)('e') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses20.txt b/RegExpSupport/testData/psi/Charclasses20.txt new file mode 100644 index 000000000000..20afd78046ab --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses20.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-[b> + RegExpBranchImpl: <[a-[b> + RegExpClassImpl: <[a-[b> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + RegExpClassImpl: <[b> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiErrorElement:Unclosed character class + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses21.txt b/RegExpSupport/testData/psi/Charclasses21.txt new file mode 100644 index 000000000000..03cdac1f63a8 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses21.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: <[a[^b]]> + RegExpBranchImpl: <[a[^b]]> + RegExpClassImpl: <[a[^b]]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[^b]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses22.txt b/RegExpSupport/testData/psi/Charclasses22.txt new file mode 100644 index 000000000000..f26f00c6536c --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses22.txt @@ -0,0 +1,27 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[a[b[c]][d]]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b[c]]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpClassImpl: <[c]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[d]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses23.txt b/RegExpSupport/testData/psi/Charclasses23.txt new file mode 100644 index 000000000000..01cdfcc59d2f --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses23.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[\t--]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <\t--> + RegExpCharImpl: <\t> + PsiElement(ESC_CTRL_CHARACTER)('\t') + PsiElement(MINUS)('-') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses24.txt b/RegExpSupport/testData/psi/Charclasses24.txt new file mode 100644 index 000000000000..01cdfcc59d2f --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses24.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[\t--]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <\t--> + RegExpCharImpl: <\t> + PsiElement(ESC_CTRL_CHARACTER)('\t') + PsiElement(MINUS)('-') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses25.txt b/RegExpSupport/testData/psi/Charclasses25.txt new file mode 100644 index 000000000000..6045dd9a2e50 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses25.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[\t---]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <\t---> + RegExpCharRangeImpl: <\t--> + RegExpCharImpl: <\t> + PsiElement(ESC_CTRL_CHARACTER)('\t') + PsiElement(MINUS)('-') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses26.txt b/RegExpSupport/testData/psi/Charclasses26.txt new file mode 100644 index 000000000000..5ecaf07b94f1 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses26.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <[-]?> + RegExpClassImpl: <[-]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses27.txt b/RegExpSupport/testData/psi/Charclasses27.txt new file mode 100644 index 000000000000..4ba25cbf155c --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses27.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[> + PsiElement(CLASS_BEGIN)('[') + PsiErrorElement:Unclosed character class + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses28.txt b/RegExpSupport/testData/psi/Charclasses28.txt new file mode 100644 index 000000000000..ae455a78e7c7 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses28.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses29.txt b/RegExpSupport/testData/psi/Charclasses29.txt new file mode 100644 index 000000000000..6a12a7d9ff13 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses29.txt @@ -0,0 +1,13 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-[> + RegExpBranchImpl: <[a-[> + RegExpClassImpl: <[a-[> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + RegExpClassImpl: <[> + PsiElement(CLASS_BEGIN)('[') + PsiErrorElement:Unclosed character class + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses3.txt b/RegExpSupport/testData/psi/Charclasses3.txt new file mode 100644 index 000000000000..bea955ea4973 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses3.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b-d]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses30.txt b/RegExpSupport/testData/psi/Charclasses30.txt new file mode 100644 index 000000000000..5738dcad71af --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses30.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[]]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses31.txt b/RegExpSupport/testData/psi/Charclasses31.txt new file mode 100644 index 000000000000..c0a7aae71b47 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses31.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[^bc]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpCharImpl: + PsiElement(CHARACTER)('d') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses32.txt b/RegExpSupport/testData/psi/Charclasses32.txt new file mode 100644 index 000000000000..9c0ea2e1baa5 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses32.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[^bc]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses33.txt b/RegExpSupport/testData/psi/Charclasses33.txt new file mode 100644 index 000000000000..1e151b4f55e6 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses33.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[]b> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <]b> + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiErrorElement:Unclosed character class + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses34.txt b/RegExpSupport/testData/psi/Charclasses34.txt new file mode 100644 index 000000000000..8d4de65e24db --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses34.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <[^]> + RegExpBranchImpl: <[^]> + RegExpClassImpl: <[^]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + PsiErrorElement:Unclosed character class + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses35.txt b/RegExpSupport/testData/psi/Charclasses35.txt new file mode 100644 index 000000000000..3f1d69dd8335 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses35.txt @@ -0,0 +1,27 @@ +REGEXP_FILE + RegExpPatternImpl: <[abhgefdc]ij> + RegExpBranchImpl: <[abhgefdc]ij> + RegExpClassImpl: <[abhgefdc]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('j') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses36.txt b/RegExpSupport/testData/psi/Charclasses36.txt new file mode 100644 index 000000000000..b5eead6419dd --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses36.txt @@ -0,0 +1,48 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-zA-Z_][a-zA-Z0-9_]*> + RegExpBranchImpl: <[a-zA-Z_][a-zA-Z0-9_]*> + RegExpClassImpl: <[a-zA-Z_]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharImpl: <_> + PsiElement(CHARACTER)('_') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[a-zA-Z0-9_]*> + RegExpClassImpl: <[a-zA-Z0-9_]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <_> + PsiElement(CHARACTER)('_') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses37.txt b/RegExpSupport/testData/psi/Charclasses37.txt new file mode 100644 index 000000000000..3728221ddfc0 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses37.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <([a-c]+?)c> + RegExpBranchImpl: <([a-c]+?)c> + RegExpGroupImpl: <([a-c]+?)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[a-c]+?> + RegExpBranchImpl: <[a-c]+?> + RegExpClosureImpl: <[a-c]+?> + RegExpClassImpl: <[a-c]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+?> + PsiElement(PLUS)('+') + PsiElement(QUEST)('?') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses38.txt b/RegExpSupport/testData/psi/Charclasses38.txt new file mode 100644 index 000000000000..af9470ea37b3 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses38.txt @@ -0,0 +1,22 @@ +REGEXP_FILE + RegExpPatternImpl: <([ab]*?)b> + RegExpBranchImpl: <([ab]*?)b> + RegExpGroupImpl: <([ab]*?)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[ab]*?> + RegExpBranchImpl: <[ab]*?> + RegExpClosureImpl: <[ab]*?> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*?> + PsiElement(STAR)('*') + PsiElement(QUEST)('?') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses39.txt b/RegExpSupport/testData/psi/Charclasses39.txt new file mode 100644 index 000000000000..9556e8c4a060 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses39.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: <([ab]*)b> + RegExpBranchImpl: <([ab]*)b> + RegExpGroupImpl: <([ab]*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[ab]*> + RegExpBranchImpl: <[ab]*> + RegExpClosureImpl: <[ab]*> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses4.txt b/RegExpSupport/testData/psi/Charclasses4.txt new file mode 100644 index 000000000000..31a753b8add6 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses4.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b-a]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses40.txt b/RegExpSupport/testData/psi/Charclasses40.txt new file mode 100644 index 000000000000..9dca6a99b7d0 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses40.txt @@ -0,0 +1,22 @@ +REGEXP_FILE + RegExpPatternImpl: <([ab]??)b> + RegExpBranchImpl: <([ab]??)b> + RegExpGroupImpl: <([ab]??)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[ab]??> + RegExpBranchImpl: <[ab]??> + RegExpClosureImpl: <[ab]??> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + PsiElement(QUEST)('?') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses41.txt b/RegExpSupport/testData/psi/Charclasses41.txt new file mode 100644 index 000000000000..a632d5341b75 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses41.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <(c[ab]?)b> + RegExpBranchImpl: <(c[ab]?)b> + RegExpGroupImpl: <(c[ab]?)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpClosureImpl: <[ab]?> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses42.txt b/RegExpSupport/testData/psi/Charclasses42.txt new file mode 100644 index 000000000000..006ffb81f211 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses42.txt @@ -0,0 +1,24 @@ +REGEXP_FILE + RegExpPatternImpl: <(c[ab]??)b> + RegExpBranchImpl: <(c[ab]??)b> + RegExpGroupImpl: <(c[ab]??)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpClosureImpl: <[ab]??> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + PsiElement(QUEST)('?') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses43.txt b/RegExpSupport/testData/psi/Charclasses43.txt new file mode 100644 index 000000000000..2170f3be9e3f --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses43.txt @@ -0,0 +1,24 @@ +REGEXP_FILE + RegExpPatternImpl: <(c[ab]*?)b> + RegExpBranchImpl: <(c[ab]*?)b> + RegExpGroupImpl: <(c[ab]*?)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpClosureImpl: <[ab]*?> + RegExpClassImpl: <[ab]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*?> + PsiElement(STAR)('*') + PsiElement(QUEST)('?') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses44.txt b/RegExpSupport/testData/psi/Charclasses44.txt new file mode 100644 index 000000000000..38a9020359d3 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses44.txt @@ -0,0 +1,30 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <[bcd]+> + RegExpClassImpl: <[bcd]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('e') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses45.txt b/RegExpSupport/testData/psi/Charclasses45.txt new file mode 100644 index 000000000000..81b90e4a2640 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses45.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: <[k]> + RegExpBranchImpl: <[k]> + RegExpClassImpl: <[k]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('k') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses46.txt b/RegExpSupport/testData/psi/Charclasses46.txt new file mode 100644 index 000000000000..0fa5dd1db098 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses46.txt @@ -0,0 +1,30 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <[bcd]*> + RegExpClassImpl: <[bcd]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('e') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses47.txt b/RegExpSupport/testData/psi/Charclasses47.txt new file mode 100644 index 000000000000..10f53558b3ab --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses47.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: <[^ab]*> + RegExpBranchImpl: <[^ab]*> + RegExpClosureImpl: <[^ab]*> + RegExpClassImpl: <[^ab]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses48.txt b/RegExpSupport/testData/psi/Charclasses48.txt new file mode 100644 index 000000000000..a696a5a659e1 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses48.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[.]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <.> + PsiElement(CHARACTER)('.') + PsiElement(CLASS_END)(']') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses49.txt b/RegExpSupport/testData/psi/Charclasses49.txt new file mode 100644 index 000000000000..e5ee5646ede9 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses49.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[+*?]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <+*?> + RegExpCharImpl: <+> + PsiElement(CHARACTER)('+') + RegExpCharImpl: <*> + PsiElement(CHARACTER)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('?') + PsiElement(CLASS_END)(']') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses5.txt b/RegExpSupport/testData/psi/Charclasses5.txt new file mode 100644 index 000000000000..b647ac44fce5 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses5.txt @@ -0,0 +1,13 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[-b]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <-b> + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses50.txt b/RegExpSupport/testData/psi/Charclasses50.txt new file mode 100644 index 000000000000..a3f927a7e566 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses50.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[\p{IsDigit}\p{IsAlpha}]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <\p{IsDigit}\p{IsAlpha}> + RegExpPropertyImpl: <\p{IsDigit}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('IsDigit') + PsiElement(RBRACE)('}') + RegExpPropertyImpl: <\p{IsAlpha}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('IsAlpha') + PsiElement(RBRACE)('}') + PsiElement(CLASS_END)(']') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses51.txt b/RegExpSupport/testData/psi/Charclasses51.txt new file mode 100644 index 000000000000..03cefc7c5cd0 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses51.txt @@ -0,0 +1,22 @@ +REGEXP_FILE + RegExpPatternImpl: <[\p{L}&&[^\p{Lu}]]> + RegExpBranchImpl: <[\p{L}&&[^\p{Lu}]]> + RegExpClassImpl: <[\p{L}&&[^\p{Lu}]]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: <\p{L}&&[^\p{Lu}]> + RegExpPropertyImpl: <\p{L}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('L') + PsiElement(RBRACE)('}') + PsiElement(ANDAND)('&&') + RegExpClassImpl: <[^\p{Lu}]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpPropertyImpl: <\p{Lu}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('Lu') + PsiElement(RBRACE)('}') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses52.txt b/RegExpSupport/testData/psi/Charclasses52.txt new file mode 100644 index 000000000000..72ea66c9b89c --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses52.txt @@ -0,0 +1,45 @@ +REGEXP_FILE + RegExpPatternImpl: <\pL\pM\pZ\pS\pN\pP\pC\PL\PM\PZ\PS\PN\PP\PC> + RegExpBranchImpl: <\pL\pM\pZ\pS\pN\pP\pC\PL\PM\PZ\PS\PN\PP\PC> + RegExpPropertyImpl: <\pL> + PsiElement(PROPERTY)('\p') + PsiElement(CATEGORY_SHORT_HAND)('L') + RegExpPropertyImpl: <\pM> + PsiElement(PROPERTY)('\p') + PsiElement(CATEGORY_SHORT_HAND)('M') + RegExpPropertyImpl: <\pZ> + PsiElement(PROPERTY)('\p') + PsiElement(CATEGORY_SHORT_HAND)('Z') + RegExpPropertyImpl: <\pS> + PsiElement(PROPERTY)('\p') + PsiElement(CATEGORY_SHORT_HAND)('S') + RegExpPropertyImpl: <\pN> + PsiElement(PROPERTY)('\p') + PsiElement(CATEGORY_SHORT_HAND)('N') + RegExpPropertyImpl: <\pP> + PsiElement(PROPERTY)('\p') + PsiElement(CATEGORY_SHORT_HAND)('P') + RegExpPropertyImpl: <\pC> + PsiElement(PROPERTY)('\p') + PsiElement(CATEGORY_SHORT_HAND)('C') + RegExpPropertyImpl: <\PL> + PsiElement(PROPERTY)('\P') + PsiElement(CATEGORY_SHORT_HAND)('L') + RegExpPropertyImpl: <\PM> + PsiElement(PROPERTY)('\P') + PsiElement(CATEGORY_SHORT_HAND)('M') + RegExpPropertyImpl: <\PZ> + PsiElement(PROPERTY)('\P') + PsiElement(CATEGORY_SHORT_HAND)('Z') + RegExpPropertyImpl: <\PS> + PsiElement(PROPERTY)('\P') + PsiElement(CATEGORY_SHORT_HAND)('S') + RegExpPropertyImpl: <\PN> + PsiElement(PROPERTY)('\P') + PsiElement(CATEGORY_SHORT_HAND)('N') + RegExpPropertyImpl: <\PP> + PsiElement(PROPERTY)('\P') + PsiElement(CATEGORY_SHORT_HAND)('P') + RegExpPropertyImpl: <\PC> + PsiElement(PROPERTY)('\P') + PsiElement(CATEGORY_SHORT_HAND)('C') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses53.txt b/RegExpSupport/testData/psi/Charclasses53.txt new file mode 100644 index 000000000000..64add00482ac --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses53.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <\pA> + RegExpBranchImpl: <\pA> + RegExpPropertyImpl: <\pA> + PsiElement(PROPERTY)('\p') + PsiErrorElement:Character category expected + + PsiElement(CHARACTER)('A') + PsiErrorElement:Unclosed character family + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses54.txt b/RegExpSupport/testData/psi/Charclasses54.txt new file mode 100644 index 000000000000..007addb41c51 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses54.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <\pl> + RegExpBranchImpl: <\pl> + RegExpPropertyImpl: <\pl> + PsiElement(PROPERTY)('\p') + PsiErrorElement:Character category expected + + PsiElement(CHARACTER)('l') + PsiErrorElement:Unclosed character family + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses55.txt b/RegExpSupport/testData/psi/Charclasses55.txt new file mode 100644 index 000000000000..aad31e36beed --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses55.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpPropertyImpl: <\p> + PsiElement(PROPERTY)('\p') + PsiErrorElement:Character category expected + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses56.txt b/RegExpSupport/testData/psi/Charclasses56.txt new file mode 100644 index 000000000000..1e2daa61b059 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses56.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpPropertyImpl: <\p{}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiErrorElement:Empty character family + + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses57.txt b/RegExpSupport/testData/psi/Charclasses57.txt new file mode 100644 index 000000000000..224c9a26c50f --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses57.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpPropertyImpl: <\p}> + PsiElement(PROPERTY)('\p') + PsiErrorElement:Character category expected + + PsiElement(CHARACTER)('}') + PsiErrorElement:Unclosed character family + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses58.txt b/RegExpSupport/testData/psi/Charclasses58.txt new file mode 100644 index 000000000000..cc1ffe2b170a --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses58.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpPropertyImpl: <\p{123}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiErrorElement:Character family name expected + + PsiElement(NUMBER)('123') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses59.txt b/RegExpSupport/testData/psi/Charclasses59.txt new file mode 100644 index 000000000000..fe2ea17af5d2 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses59.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: <[\p{nothing}]> + RegExpBranchImpl: <[\p{nothing}]> + RegExpClassImpl: <[\p{nothing}]> + PsiElement(CLASS_BEGIN)('[') + RegExpPropertyImpl: <\p{nothing}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('nothing') + PsiElement(RBRACE)('}') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses6.txt b/RegExpSupport/testData/psi/Charclasses6.txt new file mode 100644 index 000000000000..a1d2820c6e7f --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses6.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b-]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses60.txt b/RegExpSupport/testData/psi/Charclasses60.txt new file mode 100644 index 000000000000..d672365c766e --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses60.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpPropertyImpl: <\p{*}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiErrorElement:Character family name expected + + PsiElement(BAD_CHARACTER)('*') + PsiElement(RBRACE)('}') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses61.txt b/RegExpSupport/testData/psi/Charclasses61.txt new file mode 100644 index 000000000000..01e2ae8f4b48 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses61.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <[\w-\w]> + RegExpBranchImpl: <[\w-\w]> + RegExpClassImpl: <[\w-\w]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <\w-\w> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + PsiElement(MINUS)('-') + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses62.txt b/RegExpSupport/testData/psi/Charclasses62.txt new file mode 100644 index 000000000000..7cc112d48cc3 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses62.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-\w]> + RegExpBranchImpl: <[a-\w]> + RegExpClassImpl: <[a-\w]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses63.txt b/RegExpSupport/testData/psi/Charclasses63.txt new file mode 100644 index 000000000000..e139eac26005 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses63.txt @@ -0,0 +1,48 @@ +REGEXP_FILE + RegExpPatternImpl: <(?x)abc #foo \q bar +# foo +(?-xi)xyz(?i:ABC)> + RegExpBranchImpl: <(?x)abc #foo \q bar +# foo +(?-xi)xyz(?i:ABC)> + RegExpSetOptionsImpl: <(?x)> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: + PsiElement(OPTIONS_ON)('x') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiWhiteSpace(' ') + PsiComment(COMMENT)('#') + PsiComment(COMMENT)('foo \q bar\n') + PsiComment(COMMENT)('#') + PsiComment(COMMENT)(' foo\n') + RegExpSetOptionsImpl: <(?-xi)> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: <-xi> + PsiElement(OPTIONS_OFF)('-xi') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpCharImpl: + PsiElement(CHARACTER)('y') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpGroupImpl: <(?i:ABC)> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: + PsiElement(OPTIONS_ON)('i') + PsiElement(COLON)(':') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + RegExpCharImpl: + PsiElement(CHARACTER)('B') + RegExpCharImpl: + PsiElement(CHARACTER)('C') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses64.txt b/RegExpSupport/testData/psi/Charclasses64.txt new file mode 100644 index 000000000000..919152847aea --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses64.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: <[\ud800\udc00-\udbff\udfff]> + RegExpBranchImpl: <[\ud800\udc00-\udbff\udfff]> + RegExpClassImpl: <[\ud800\udc00-\udbff\udfff]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <\ud800\udc00-\udbff\udfff> + RegExpCharImpl: <\ud800> + PsiElement(UNICODE_CHAR)('\ud800') + RegExpCharRangeImpl: <\udc00-\udbff> + RegExpCharImpl: <\udc00> + PsiElement(UNICODE_CHAR)('\udc00') + PsiElement(MINUS)('-') + RegExpCharImpl: <\udbff> + PsiElement(UNICODE_CHAR)('\udbff') + RegExpCharImpl: <\udfff> + PsiElement(UNICODE_CHAR)('\udfff') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses65.txt b/RegExpSupport/testData/psi/Charclasses65.txt new file mode 100644 index 000000000000..260b5f3af5bd --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses65.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\R> + RegExpBranchImpl: <\R> + RegExpSimpleClassImpl: <\R> + PsiElement(CHAR_CLASS)('\R') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses66.txt b/RegExpSupport/testData/psi/Charclasses66.txt new file mode 100644 index 000000000000..9f275f7e0014 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses66.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\X> + RegExpBranchImpl: <\X> + RegExpSimpleClassImpl: <\X> + PsiElement(CHAR_CLASS)('\X') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses67.txt b/RegExpSupport/testData/psi/Charclasses67.txt new file mode 100644 index 000000000000..76cd8dad4c9e --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses67.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: <\-[\*\-\[\]\\\+]> + RegExpBranchImpl: <\-[\*\-\[\]\\\+]> + RegExpCharImpl: <\-> + PsiElement(REDUNDANT_ESCAPE)('\-') + RegExpClassImpl: <[\*\-\[\]\\\+]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <\*\-\[\]\\\+> + RegExpCharImpl: <\*> + PsiElement(REDUNDANT_ESCAPE)('\*') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + RegExpCharImpl: <\[> + PsiElement(ESC_CHARACTER)('\[') + RegExpCharImpl: <\]> + PsiElement(REDUNDANT_ESCAPE)('\]') + RegExpCharImpl: <\\> + PsiElement(ESC_CHARACTER)('\\') + RegExpCharImpl: <\+> + PsiElement(REDUNDANT_ESCAPE)('\+') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses68.txt b/RegExpSupport/testData/psi/Charclasses68.txt new file mode 100644 index 000000000000..448aa042de57 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses68.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: <[\b]> + RegExpBranchImpl: <[\b]> + RegExpClassImpl: <[\b]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <\b> + PsiElement(ESC_CHARACTER)('\b') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses7.txt b/RegExpSupport/testData/psi/Charclasses7.txt new file mode 100644 index 000000000000..3a3b84dd3e6e --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses7.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-[b]]> + RegExpBranchImpl: <[a-[b]]> + RegExpClassImpl: <[a-[b]]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + RegExpClassImpl: <[b]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses8.txt b/RegExpSupport/testData/psi/Charclasses8.txt new file mode 100644 index 000000000000..f629c0f3cd0f --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses8.txt @@ -0,0 +1,20 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b&&[cd]]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(ANDAND)('&&') + RegExpClassImpl: <[cd]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Charclasses9.txt b/RegExpSupport/testData/psi/Charclasses9.txt new file mode 100644 index 000000000000..6eea58ee4be4 --- /dev/null +++ b/RegExpSupport/testData/psi/Charclasses9.txt @@ -0,0 +1,24 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClassImpl: <[b-&&[cd]]> + PsiElement(CLASS_BEGIN)('[') + RegExpIntersectionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiErrorElement:Illegal character range + + PsiElement(ANDAND)('&&') + RegExpClassImpl: <[cd]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(CLASS_END)(']') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Complex1.txt b/RegExpSupport/testData/psi/Complex1.txt new file mode 100644 index 000000000000..384828bc184e --- /dev/null +++ b/RegExpSupport/testData/psi/Complex1.txt @@ -0,0 +1,36 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpGroupImpl: <(\w\s+(?:\w\s+\w)+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\w\s+(?:\w\s+\w)+> + RegExpBranchImpl: <\w\s+(?:\w\s+\w)+> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpClosureImpl: <\s+> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <(?:\w\s+\w)+> + RegExpGroupImpl: <(?:\w\s+\w)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <\w\s+\w> + RegExpBranchImpl: <\w\s+\w> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpClosureImpl: <\s+> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('z') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Complex2.txt b/RegExpSupport/testData/psi/Complex2.txt new file mode 100644 index 000000000000..a76e017e9f77 --- /dev/null +++ b/RegExpSupport/testData/psi/Complex2.txt @@ -0,0 +1,141 @@ +REGEXP_FILE + RegExpPatternImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*> + RegExpBranchImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*> + RegExpClosureImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?> + RegExpGroupImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpBranchImpl: <([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpGroupImpl: <([hH][tT]{2}[pP]|[fF][tT][pP])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[hH][tT]{2}[pP]|[fF][tT][pP]> + RegExpBranchImpl: <[hH][tT]{2}[pP]> + RegExpClassImpl: <[hH]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('H') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[tT]{2}> + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <{2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(UNION)('|') + RegExpBranchImpl: <[fF][tT][pP]> + RegExpClassImpl: <[fF]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('F') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(UNION)('|') + RegExpBranchImpl: <[fF][tT][pP]> + RegExpClassImpl: <[fF]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('F') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <(\.[a-zA-Z0-9\-]+)*> + RegExpGroupImpl: <(\.[a-zA-Z0-9\-]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\.[a-zA-Z0-9\-]+> + RegExpBranchImpl: <\.[a-zA-Z0-9\-]+> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Complex4.txt b/RegExpSupport/testData/psi/Complex4.txt new file mode 100644 index 000000000000..f6e8e850f2d7 --- /dev/null +++ b/RegExpSupport/testData/psi/Complex4.txt @@ -0,0 +1,141 @@ +REGEXP_FILE + RegExpPatternImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*> + RegExpBranchImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*> + RegExpClosureImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?> + RegExpGroupImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpBranchImpl: <([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpGroupImpl: <([hH][tT]{2}[pP]|[fF][tT][pP])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[hH][tT]{2}[pP]|[fF][tT][pP]> + RegExpBranchImpl: <[hH][tT]{2}[pP]> + RegExpClassImpl: <[hH]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('H') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[tT]{2}> + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <{2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(UNION)('|') + RegExpBranchImpl: <[fF][tT][pP]> + RegExpClassImpl: <[fF]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('F') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <(?:\.[a-zA-Z0-9\-]+)*> + RegExpGroupImpl: <(?:\.[a-zA-Z0-9\-]+)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <\.[a-zA-Z0-9\-]+> + RegExpBranchImpl: <\.[a-zA-Z0-9\-]+> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Complex5.txt b/RegExpSupport/testData/psi/Complex5.txt new file mode 100644 index 000000000000..250eda3aa671 --- /dev/null +++ b/RegExpSupport/testData/psi/Complex5.txt @@ -0,0 +1,141 @@ +REGEXP_FILE + RegExpPatternImpl: <(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*> + RegExpBranchImpl: <(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*> + RegExpClosureImpl: <(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?> + RegExpGroupImpl: <(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpBranchImpl: <([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpGroupImpl: <([hH][tT]{2}[pP]|[fF][tT][pP])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[hH][tT]{2}[pP]|[fF][tT][pP]> + RegExpBranchImpl: <[hH][tT]{2}[pP]> + RegExpClassImpl: <[hH]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('H') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[tT]{2}> + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <{2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(UNION)('|') + RegExpBranchImpl: <[fF][tT][pP]> + RegExpClassImpl: <[fF]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('F') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <(\.[a-zA-Z0-9\-]+)*> + RegExpGroupImpl: <(\.[a-zA-Z0-9\-]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\.[a-zA-Z0-9\-]+> + RegExpBranchImpl: <\.[a-zA-Z0-9\-]+> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Complex6.txt b/RegExpSupport/testData/psi/Complex6.txt new file mode 100644 index 000000000000..1407fa3699e1 --- /dev/null +++ b/RegExpSupport/testData/psi/Complex6.txt @@ -0,0 +1,145 @@ +REGEXP_FILE + RegExpPatternImpl: <^(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*$> + RegExpBranchImpl: <^(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*$> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpClosureImpl: <(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?> + RegExpGroupImpl: <(?:([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpBranchImpl: <([hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpGroupImpl: <([hH][tT]{2}[pP]|[fF][tT][pP])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[hH][tT]{2}[pP]|[fF][tT][pP]> + RegExpBranchImpl: <[hH][tT]{2}[pP]> + RegExpClassImpl: <[hH]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('H') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[tT]{2}> + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <{2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(UNION)('|') + RegExpBranchImpl: <[fF][tT][pP]> + RegExpClassImpl: <[fF]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('F') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <(\.[a-zA-Z0-9\-]+)*> + RegExpGroupImpl: <(\.[a-zA-Z0-9\-]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\.[a-zA-Z0-9\-]+> + RegExpBranchImpl: <\.[a-zA-Z0-9\-]+> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Complex7.txt b/RegExpSupport/testData/psi/Complex7.txt new file mode 100644 index 000000000000..e5c9e1e03372 --- /dev/null +++ b/RegExpSupport/testData/psi/Complex7.txt @@ -0,0 +1,145 @@ +REGEXP_FILE + RegExpPatternImpl: <^(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$> + RegExpBranchImpl: <^(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpClosureImpl: <(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?> + RegExpGroupImpl: <(?:(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpBranchImpl: <(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpGroupImpl: <(?:[hH][tT]{2}[pP]|[fF][tT][pP])> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <[hH][tT]{2}[pP]|[fF][tT][pP]> + RegExpBranchImpl: <[hH][tT]{2}[pP]> + RegExpClassImpl: <[hH]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('H') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[tT]{2}> + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <{2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(UNION)('|') + RegExpBranchImpl: <[fF][tT][pP]> + RegExpClassImpl: <[fF]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('F') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <(?:\.[a-zA-Z0-9\-]+)*> + RegExpGroupImpl: <(?:\.[a-zA-Z0-9\-]+)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <\.[a-zA-Z0-9\-]+> + RegExpBranchImpl: <\.[a-zA-Z0-9\-]+> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes1.txt b/RegExpSupport/testData/psi/Escapes1.txt new file mode 100644 index 000000000000..4f6529514960 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes1.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + RegExpPatternImpl: <\q> + RegExpBranchImpl: <\q> + RegExpCharImpl: <\q> + PsiErrorElement:Illegal/unsupported escape sequence + + PsiElement(INVALID_CHARACTER_ESCAPE_TOKEN)('\q') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes10.txt b/RegExpSupport/testData/psi/Escapes10.txt new file mode 100644 index 000000000000..cf491353fea6 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes10.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\x4a> + RegExpBranchImpl: <\x4a> + RegExpCharImpl: <\x4a> + PsiElement(HEX_CHAR)('\x4a') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes11.txt b/RegExpSupport/testData/psi/Escapes11.txt new file mode 100644 index 000000000000..2f40e2391ef9 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes11.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\x{0}> + RegExpBranchImpl: <\x{0}> + RegExpCharImpl: <\x{0}> + PsiElement(HEX_CHAR)('\x{0}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes12.txt b/RegExpSupport/testData/psi/Escapes12.txt new file mode 100644 index 000000000000..1455eda753f3 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes12.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\x{2011F}> + RegExpBranchImpl: <\x{2011F}> + RegExpCharImpl: <\x{2011F}> + PsiElement(HEX_CHAR)('\x{2011F}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes13.txt b/RegExpSupport/testData/psi/Escapes13.txt new file mode 100644 index 000000000000..292b75530d1b --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes13.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <[\x4a-\x4b]> + RegExpBranchImpl: <[\x4a-\x4b]> + RegExpClassImpl: <[\x4a-\x4b]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <\x4a-\x4b> + RegExpCharImpl: <\x4a> + PsiElement(HEX_CHAR)('\x4a') + PsiElement(MINUS)('-') + RegExpCharImpl: <\x4b> + PsiElement(HEX_CHAR)('\x4b') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes14.txt b/RegExpSupport/testData/psi/Escapes14.txt new file mode 100644 index 000000000000..232008266fb5 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes14.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-a]> + RegExpBranchImpl: <[a-a]> + RegExpClassImpl: <[a-a]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes15.txt b/RegExpSupport/testData/psi/Escapes15.txt new file mode 100644 index 000000000000..51fb5ba1813e --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes15.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <[\x4a-\x3f]> + RegExpBranchImpl: <[\x4a-\x3f]> + RegExpClassImpl: <[\x4a-\x3f]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <\x4a-\x3f> + RegExpCharImpl: <\x4a> + PsiElement(HEX_CHAR)('\x4a') + PsiElement(MINUS)('-') + RegExpCharImpl: <\x3f> + PsiElement(HEX_CHAR)('\x3f') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes16.txt b/RegExpSupport/testData/psi/Escapes16.txt new file mode 100644 index 000000000000..439525f4563a --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes16.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: <[\udbff\udfff-\ud800\udc00]> + RegExpBranchImpl: <[\udbff\udfff-\ud800\udc00]> + RegExpClassImpl: <[\udbff\udfff-\ud800\udc00]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <\udbff\udfff-\ud800\udc00> + RegExpCharImpl: <\udbff> + PsiElement(UNICODE_CHAR)('\udbff') + RegExpCharRangeImpl: <\udfff-\ud800> + RegExpCharImpl: <\udfff> + PsiElement(UNICODE_CHAR)('\udfff') + PsiElement(MINUS)('-') + RegExpCharImpl: <\ud800> + PsiElement(UNICODE_CHAR)('\ud800') + RegExpCharImpl: <\udc00> + PsiElement(UNICODE_CHAR)('\udc00') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes17.txt b/RegExpSupport/testData/psi/Escapes17.txt new file mode 100644 index 000000000000..919152847aea --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes17.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: <[\ud800\udc00-\udbff\udfff]> + RegExpBranchImpl: <[\ud800\udc00-\udbff\udfff]> + RegExpClassImpl: <[\ud800\udc00-\udbff\udfff]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <\ud800\udc00-\udbff\udfff> + RegExpCharImpl: <\ud800> + PsiElement(UNICODE_CHAR)('\ud800') + RegExpCharRangeImpl: <\udc00-\udbff> + RegExpCharImpl: <\udc00> + PsiElement(UNICODE_CHAR)('\udc00') + PsiElement(MINUS)('-') + RegExpCharImpl: <\udbff> + PsiElement(UNICODE_CHAR)('\udbff') + RegExpCharImpl: <\udfff> + PsiElement(UNICODE_CHAR)('\udfff') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes18.txt b/RegExpSupport/testData/psi/Escapes18.txt new file mode 100644 index 000000000000..cc0d80d6ac59 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes18.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <[z-a]> + RegExpBranchImpl: <[z-a]> + RegExpClassImpl: <[z-a]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('z') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes19.txt b/RegExpSupport/testData/psi/Escapes19.txt new file mode 100644 index 000000000000..30cdb4045144 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes19.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-z]> + RegExpBranchImpl: <[a-z]> + RegExpClassImpl: <[a-z]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes2.txt b/RegExpSupport/testData/psi/Escapes2.txt new file mode 100644 index 000000000000..49f5f3a9f978 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes2.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\#> + RegExpBranchImpl: <\#> + RegExpCharImpl: <\#> + PsiElement(REDUNDANT_ESCAPE)('\#') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes20.txt b/RegExpSupport/testData/psi/Escapes20.txt new file mode 100644 index 000000000000..1abe401046b8 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes20.txt @@ -0,0 +1,35 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiWhiteSpace('\Q') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('?') + RegExpCharImpl: <*> + PsiElement(CHARACTER)('*') + RegExpCharImpl: <+> + PsiElement(CHARACTER)('+') + RegExpCharImpl: <.> + PsiElement(CHARACTER)('.') + RegExpCharImpl: <)> + PsiElement(CHARACTER)(')') + RegExpCharImpl: <)> + PsiElement(CHARACTER)(')') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: <[> + PsiElement(CHARACTER)('[') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + PsiWhiteSpace('\E') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes21.txt b/RegExpSupport/testData/psi/Escapes21.txt new file mode 100644 index 000000000000..dfae40de62dc --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes21.txt @@ -0,0 +1,40 @@ +REGEXP_FILE + RegExpPatternImpl: <(a\Qabc?*+.))]][]\Eb)> + RegExpBranchImpl: <(a\Qabc?*+.))]][]\Eb)> + RegExpGroupImpl: <(a\Qabc?*+.))]][]\Eb)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiWhiteSpace('\Q') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('?') + RegExpCharImpl: <*> + PsiElement(CHARACTER)('*') + RegExpCharImpl: <+> + PsiElement(CHARACTER)('+') + RegExpCharImpl: <.> + PsiElement(CHARACTER)('.') + RegExpCharImpl: <)> + PsiElement(CHARACTER)(')') + RegExpCharImpl: <)> + PsiElement(CHARACTER)(')') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: <[> + PsiElement(CHARACTER)('[') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + PsiWhiteSpace('\E') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes22.txt b/RegExpSupport/testData/psi/Escapes22.txt new file mode 100644 index 000000000000..8509647de42c --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes22.txt @@ -0,0 +1,35 @@ +REGEXP_FILE + RegExpPatternImpl: <[\Qabc?*+.))]][]\E]> + RegExpBranchImpl: <[\Qabc?*+.))]][]\E]> + RegExpClassImpl: <[\Qabc?*+.))]][]\E]> + PsiElement(CLASS_BEGIN)('[') + PsiWhiteSpace('\Q') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('?') + RegExpCharImpl: <*> + PsiElement(CHARACTER)('*') + RegExpCharImpl: <+> + PsiElement(CHARACTER)('+') + RegExpCharImpl: <.> + PsiElement(CHARACTER)('.') + RegExpCharImpl: <)> + PsiElement(CHARACTER)(')') + RegExpCharImpl: <)> + PsiElement(CHARACTER)(')') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: <[> + PsiElement(CHARACTER)('[') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + PsiWhiteSpace('\E') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes23.txt b/RegExpSupport/testData/psi/Escapes23.txt new file mode 100644 index 000000000000..22f8ab5d78cd --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes23.txt @@ -0,0 +1,36 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiWhiteSpace('\Q') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('?') + RegExpCharImpl: <*> + PsiElement(CHARACTER)('*') + RegExpCharImpl: <+> + PsiElement(CHARACTER)('+') + RegExpCharImpl: <.> + PsiElement(CHARACTER)('.') + RegExpCharImpl: <)> + PsiElement(CHARACTER)(')') + RegExpCharImpl: <)> + PsiElement(CHARACTER)(')') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + RegExpCharImpl: <[> + PsiElement(CHARACTER)('[') + RegExpCharImpl: <]> + PsiElement(CHARACTER)(']') + PsiErrorElement:Unmatched closing ')' + + PsiWhiteSpace('\E') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes24.txt b/RegExpSupport/testData/psi/Escapes24.txt new file mode 100644 index 000000000000..549838a1e6fe --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes24.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + PsiWhiteSpace('\Q') + RegExpPatternImpl: <\j> + RegExpBranchImpl: <\j> + RegExpCharImpl: <\> + PsiElement(CHARACTER)('\') + RegExpCharImpl: + PsiElement(CHARACTER)('j') + PsiWhiteSpace('\E') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes25.txt b/RegExpSupport/testData/psi/Escapes25.txt new file mode 100644 index 000000000000..f2ca58dfc21e --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes25.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\c0> + RegExpBranchImpl: <\c0> + RegExpCharImpl: <\c0> + PsiElement(CTRL)('\c0') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes3.txt b/RegExpSupport/testData/psi/Escapes3.txt new file mode 100644 index 000000000000..4d1eb470245a --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes3.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <\> + PsiErrorElement:Illegal/unsupported escape sequence + + PsiElement(INVALID_CHARACTER_ESCAPE_TOKEN)('\') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes4.txt b/RegExpSupport/testData/psi/Escapes4.txt new file mode 100644 index 000000000000..dde6682b5f68 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes4.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <\(> + PsiElement(ESC_CHARACTER)('\(') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes5.txt b/RegExpSupport/testData/psi/Escapes5.txt new file mode 100644 index 000000000000..ad56b55e0b1a --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes5.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <\(*> + RegExpCharImpl: <\(> + PsiElement(ESC_CHARACTER)('\(') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes6.txt b/RegExpSupport/testData/psi/Escapes6.txt new file mode 100644 index 000000000000..e0f5ca34501e --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes6.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <\\> + PsiElement(ESC_CHARACTER)('\\') + RegExpCharImpl: + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes7.txt b/RegExpSupport/testData/psi/Escapes7.txt new file mode 100644 index 000000000000..71dfc14820f1 --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes7.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\u004a> + RegExpBranchImpl: <\u004a> + RegExpCharImpl: <\u004a> + PsiElement(UNICODE_CHAR)('\u004a') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes8.txt b/RegExpSupport/testData/psi/Escapes8.txt new file mode 100644 index 000000000000..102406817dca --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes8.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\0123> + RegExpBranchImpl: <\0123> + RegExpCharImpl: <\0123> + PsiElement(OCT_CHAR)('\0123') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Escapes9.txt b/RegExpSupport/testData/psi/Escapes9.txt new file mode 100644 index 000000000000..4ae56fd713da --- /dev/null +++ b/RegExpSupport/testData/psi/Escapes9.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\0> + RegExpBranchImpl: <\0> + RegExpCharImpl: <\0> + PsiElement(BAD_OCT_VALUE)('\0') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups1.txt b/RegExpSupport/testData/psi/Groups1.txt new file mode 100644 index 000000000000..7f68b460193c --- /dev/null +++ b/RegExpSupport/testData/psi/Groups1.txt @@ -0,0 +1,13 @@ +REGEXP_FILE + RegExpPatternImpl: <()ef> + RegExpBranchImpl: <()ef> + RegExpGroupImpl: <()> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <> + RegExpBranchImpl: <> + + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('f') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups10.txt b/RegExpSupport/testData/psi/Groups10.txt new file mode 100644 index 000000000000..c243c0b96f27 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups10.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: <(a|)*> + RegExpBranchImpl: <(a|)*> + RegExpClosureImpl: <(a|)*> + RegExpGroupImpl: <(a|)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(UNION)('|') + RegExpBranchImpl: <> + + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups11.txt b/RegExpSupport/testData/psi/Groups11.txt new file mode 100644 index 000000000000..71fcbfc8c403 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups11.txt @@ -0,0 +1,20 @@ +REGEXP_FILE + RegExpPatternImpl: <(ab|cd)e> + RegExpBranchImpl: <(ab|cd)e> + RegExpGroupImpl: <(ab|cd)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('e') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups12.txt b/RegExpSupport/testData/psi/Groups12.txt new file mode 100644 index 000000000000..941b52848bd6 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups12.txt @@ -0,0 +1,25 @@ +REGEXP_FILE + RegExpPatternImpl: <(.*)c(.*)> + RegExpBranchImpl: <(.*)c(.*)> + RegExpGroupImpl: <(.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <.*> + RegExpBranchImpl: <.*> + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpGroupImpl: <(.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <.*> + RegExpBranchImpl: <.*> + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups13.txt b/RegExpSupport/testData/psi/Groups13.txt new file mode 100644 index 000000000000..858a7c2d2d8a --- /dev/null +++ b/RegExpSupport/testData/psi/Groups13.txt @@ -0,0 +1,31 @@ +REGEXP_FILE + RegExpPatternImpl: <\((.*), (.*)\)> + RegExpBranchImpl: <\((.*), (.*)\)> + RegExpCharImpl: <\(> + PsiElement(ESC_CHARACTER)('\(') + RegExpGroupImpl: <(.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <.*> + RegExpBranchImpl: <.*> + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <,> + PsiElement(CHARACTER)(',') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpGroupImpl: <(.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <.*> + RegExpBranchImpl: <.*> + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <\)> + PsiElement(ESC_CHARACTER)('\)') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups14.txt b/RegExpSupport/testData/psi/Groups14.txt new file mode 100644 index 000000000000..19aee519a2e5 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups14.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpGroupImpl: <(bc)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('d') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups15.txt b/RegExpSupport/testData/psi/Groups15.txt new file mode 100644 index 000000000000..6ed5bb32c226 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups15.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <([abc])*d> + RegExpBranchImpl: <([abc])*d> + RegExpClosureImpl: <([abc])*> + RegExpGroupImpl: <([abc])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[abc]> + RegExpBranchImpl: <[abc]> + RegExpClassImpl: <[abc]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('d') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups16.txt b/RegExpSupport/testData/psi/Groups16.txt new file mode 100644 index 000000000000..b98d7e41423c --- /dev/null +++ b/RegExpSupport/testData/psi/Groups16.txt @@ -0,0 +1,56 @@ +REGEXP_FILE + RegExpPatternImpl: <((((((((((a)))))))))> + RegExpBranchImpl: <((((((((((a)))))))))> + RegExpGroupImpl: <((((((((((a)))))))))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(((((((((a)))))))))> + RegExpBranchImpl: <(((((((((a)))))))))> + RegExpGroupImpl: <(((((((((a)))))))))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <((((((((a))))))))> + RegExpBranchImpl: <((((((((a))))))))> + RegExpGroupImpl: <((((((((a))))))))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(((((((a)))))))> + RegExpBranchImpl: <(((((((a)))))))> + RegExpGroupImpl: <(((((((a)))))))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <((((((a))))))> + RegExpBranchImpl: <((((((a))))))> + RegExpGroupImpl: <((((((a))))))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(((((a)))))> + RegExpBranchImpl: <(((((a)))))> + RegExpGroupImpl: <(((((a)))))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <((((a))))> + RegExpBranchImpl: <((((a))))> + RegExpGroupImpl: <((((a))))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(((a)))> + RegExpBranchImpl: <(((a)))> + RegExpGroupImpl: <(((a)))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <((a))> + RegExpBranchImpl: <((a))> + RegExpGroupImpl: <((a))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(a)> + RegExpBranchImpl: <(a)> + RegExpGroupImpl: <(a)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + PsiErrorElement:Unclosed group + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups17.txt b/RegExpSupport/testData/psi/Groups17.txt new file mode 100644 index 000000000000..3f4bcc9d3a2f --- /dev/null +++ b/RegExpSupport/testData/psi/Groups17.txt @@ -0,0 +1,27 @@ +REGEXP_FILE + RegExpPatternImpl: <([abc])*bcd> + RegExpBranchImpl: <([abc])*bcd> + RegExpClosureImpl: <([abc])*> + RegExpGroupImpl: <([abc])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[abc]> + RegExpBranchImpl: <[abc]> + RegExpClassImpl: <[abc]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups18.txt b/RegExpSupport/testData/psi/Groups18.txt new file mode 100644 index 000000000000..bb4f41fb088a --- /dev/null +++ b/RegExpSupport/testData/psi/Groups18.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: <(a|b)c*d> + RegExpBranchImpl: <(a|b)c*d> + RegExpGroupImpl: <(a|b)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('d') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups19.txt b/RegExpSupport/testData/psi/Groups19.txt new file mode 100644 index 000000000000..3b2571eaf6a9 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups19.txt @@ -0,0 +1,26 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpGroupImpl: <([bc]*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[bc]*> + RegExpBranchImpl: <[bc]*> + RegExpClosureImpl: <[bc]*> + RegExpClassImpl: <[bc]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups2.txt b/RegExpSupport/testData/psi/Groups2.txt new file mode 100644 index 000000000000..6854902aebb6 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups2.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <()*> + RegExpBranchImpl: <()*> + RegExpClosureImpl: <()*> + RegExpGroupImpl: <()> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <> + RegExpBranchImpl: <> + + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups20.txt b/RegExpSupport/testData/psi/Groups20.txt new file mode 100644 index 000000000000..f421097087bf --- /dev/null +++ b/RegExpSupport/testData/psi/Groups20.txt @@ -0,0 +1,31 @@ +REGEXP_FILE + RegExpPatternImpl: <((a)(b)c)(d)> + RegExpBranchImpl: <((a)(b)c)(d)> + RegExpGroupImpl: <((a)(b)c)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(a)(b)c> + RegExpBranchImpl: <(a)(b)c> + RegExpGroupImpl: <(a)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(b)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(d)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups21.txt b/RegExpSupport/testData/psi/Groups21.txt new file mode 100644 index 000000000000..f245b4580df5 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups21.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <(ab|a)b*c> + RegExpBranchImpl: <(ab|a)b*c> + RegExpGroupImpl: <(ab|a)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups22.txt b/RegExpSupport/testData/psi/Groups22.txt new file mode 100644 index 000000000000..13690415925f --- /dev/null +++ b/RegExpSupport/testData/psi/Groups22.txt @@ -0,0 +1,25 @@ +REGEXP_FILE + RegExpPatternImpl: <(ab|ab*)bc> + RegExpBranchImpl: <(ab|ab*)bc> + RegExpGroupImpl: <(ab|ab*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups23.txt b/RegExpSupport/testData/psi/Groups23.txt new file mode 100644 index 000000000000..9349f86e1cc8 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups23.txt @@ -0,0 +1,28 @@ +REGEXP_FILE + RegExpPatternImpl: <(a|b|c|d|e)f> + RegExpBranchImpl: <(a|b|c|d|e)f> + RegExpGroupImpl: <(a|b|c|d|e)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('e') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('f') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups24.txt b/RegExpSupport/testData/psi/Groups24.txt new file mode 100644 index 000000000000..1083314fb3c5 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups24.txt @@ -0,0 +1,33 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpGroupImpl: <([bc]*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[bc]*> + RegExpBranchImpl: <[bc]*> + RegExpClosureImpl: <[bc]*> + RegExpClassImpl: <[bc]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(c*d)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups25.txt b/RegExpSupport/testData/psi/Groups25.txt new file mode 100644 index 000000000000..c64e78017ea0 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups25.txt @@ -0,0 +1,33 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpGroupImpl: <([bc]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[bc]+> + RegExpBranchImpl: <[bc]+> + RegExpClosureImpl: <[bc]+> + RegExpClassImpl: <[bc]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(c*d)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups26.txt b/RegExpSupport/testData/psi/Groups26.txt new file mode 100644 index 000000000000..edaece4d0fde --- /dev/null +++ b/RegExpSupport/testData/psi/Groups26.txt @@ -0,0 +1,33 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpGroupImpl: <([bc]*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[bc]*> + RegExpBranchImpl: <[bc]*> + RegExpClosureImpl: <[bc]*> + RegExpClassImpl: <[bc]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(c+d)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups27.txt b/RegExpSupport/testData/psi/Groups27.txt new file mode 100644 index 000000000000..d6bd43f88264 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups27.txt @@ -0,0 +1,20 @@ +REGEXP_FILE + RegExpPatternImpl: <(a+|b)*> + RegExpBranchImpl: <(a+|b)*> + RegExpClosureImpl: <(a+|b)*> + RegExpGroupImpl: <(a+|b)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups28.txt b/RegExpSupport/testData/psi/Groups28.txt new file mode 100644 index 000000000000..e74157888de2 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups28.txt @@ -0,0 +1,20 @@ +REGEXP_FILE + RegExpPatternImpl: <(a+|b)+> + RegExpBranchImpl: <(a+|b)+> + RegExpClosureImpl: <(a+|b)+> + RegExpGroupImpl: <(a+|b)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups29.txt b/RegExpSupport/testData/psi/Groups29.txt new file mode 100644 index 000000000000..db8b92506a22 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups29.txt @@ -0,0 +1,20 @@ +REGEXP_FILE + RegExpPatternImpl: <(a+|b)?> + RegExpBranchImpl: <(a+|b)?> + RegExpClosureImpl: <(a+|b)?> + RegExpGroupImpl: <(a+|b)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups3.txt b/RegExpSupport/testData/psi/Groups3.txt new file mode 100644 index 000000000000..8b7557725b95 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups3.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: <()> + RegExpBranchImpl: <()> + RegExpGroupImpl: <()> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <> + RegExpBranchImpl: <> + + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups30.txt b/RegExpSupport/testData/psi/Groups30.txt new file mode 100644 index 000000000000..1202e7a56035 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups30.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: <(^*> + RegExpBranchImpl: <(^*> + RegExpGroupImpl: <(^*> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <^*> + RegExpBranchImpl: <^*> + RegExpClosureImpl: <^*> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiErrorElement:Unclosed group + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups31.txt b/RegExpSupport/testData/psi/Groups31.txt new file mode 100644 index 000000000000..10f206a2f8d1 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups31.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <> + RegExpBranchImpl: <> + + PsiErrorElement:Unmatched closing ')' + + PsiElement(GROUP_END)(')') + PsiErrorElement:Pattern expected + + PsiElement(GROUP_BEGIN)('(') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups32.txt b/RegExpSupport/testData/psi/Groups32.txt new file mode 100644 index 000000000000..c5ecfe4e79af --- /dev/null +++ b/RegExpSupport/testData/psi/Groups32.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: <(?i:*> + RegExpBranchImpl: <(?i:*> + RegExpClosureImpl: <(?i:*> + RegExpGroupImpl: <(?i:> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: + PsiElement(OPTIONS_ON)('i') + PsiElement(COLON)(':') + PsiErrorElement:Dangling metacharacter + + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiErrorElement:Unmatched closing ')' + + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups33.txt b/RegExpSupport/testData/psi/Groups33.txt new file mode 100644 index 000000000000..d79a7a19f271 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups33.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: <(?[a-c])\1> + RegExpBranchImpl: <(?[a-c])\1> + RegExpGroupImpl: <(?[a-c])> + PsiElement(RUBY_NAMED_GROUP)('(?<') + PsiElement(NAME)('asdf') + PsiElement(GT)('>') + RegExpPatternImpl: <[a-c]> + RegExpBranchImpl: <[a-c]> + RegExpClassImpl: <[a-c]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpBackrefImpl: <\1> + PsiElement(BACKREF)('\1') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups34.txt b/RegExpSupport/testData/psi/Groups34.txt new file mode 100644 index 000000000000..a90caea1574b --- /dev/null +++ b/RegExpSupport/testData/psi/Groups34.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <(?[a-c])\k> + RegExpBranchImpl: <(?[a-c])\k> + RegExpGroupImpl: <(?[a-c])> + PsiElement(RUBY_NAMED_GROUP)('(?<') + PsiElement(NAME)('asdf') + PsiElement(GT)('>') + RegExpPatternImpl: <[a-c]> + RegExpBranchImpl: <[a-c]> + RegExpClassImpl: <[a-c]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpNamedGroupRefImpl: <\k> + PsiElement(RUBY_NAMED_GROUP_REF)('\k<') + PsiElement(NAME)('asdf') + PsiElement(GT)('>') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups35.txt b/RegExpSupport/testData/psi/Groups35.txt new file mode 100644 index 000000000000..011b409b673c --- /dev/null +++ b/RegExpSupport/testData/psi/Groups35.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + RegExpPatternImpl: <\k> + RegExpBranchImpl: <\k> + RegExpNamedGroupRefImpl: <\k> + PsiElement(RUBY_NAMED_GROUP_REF)('\k<') + PsiElement(NAME)('adsf') + PsiElement(GT)('>') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups4.txt b/RegExpSupport/testData/psi/Groups4.txt new file mode 100644 index 000000000000..caddebc34960 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups4.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: <(|)> + RegExpBranchImpl: <(|)> + RegExpGroupImpl: <(|)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <|> + RegExpBranchImpl: <> + + PsiElement(UNION)('|') + RegExpBranchImpl: <> + + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups5.txt b/RegExpSupport/testData/psi/Groups5.txt new file mode 100644 index 000000000000..e3fae6eccf9a --- /dev/null +++ b/RegExpSupport/testData/psi/Groups5.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: <(*> + RegExpBranchImpl: <(*> + RegExpClosureImpl: <(*> + RegExpGroupImpl: <(> + PsiElement(GROUP_BEGIN)('(') + PsiErrorElement:Dangling metacharacter + + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiErrorElement:Unmatched closing ')' + + PsiElement(GROUP_END)(')') + PsiErrorElement:Pattern expected + + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups6.txt b/RegExpSupport/testData/psi/Groups6.txt new file mode 100644 index 000000000000..ae0d384242a5 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups6.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: <((a))> + RegExpBranchImpl: <((a))> + RegExpGroupImpl: <((a))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(a)> + RegExpBranchImpl: <(a)> + RegExpGroupImpl: <(a)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups7.txt b/RegExpSupport/testData/psi/Groups7.txt new file mode 100644 index 000000000000..c9a9936f65fc --- /dev/null +++ b/RegExpSupport/testData/psi/Groups7.txt @@ -0,0 +1,19 @@ +REGEXP_FILE + RegExpPatternImpl: <(a)b(c)> + RegExpBranchImpl: <(a)b(c)> + RegExpGroupImpl: <(a)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpGroupImpl: <(c)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups8.txt b/RegExpSupport/testData/psi/Groups8.txt new file mode 100644 index 000000000000..5015c471682c --- /dev/null +++ b/RegExpSupport/testData/psi/Groups8.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: <(a*)*> + RegExpBranchImpl: <(a*)*> + RegExpClosureImpl: <(a*)*> + RegExpGroupImpl: <(a*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Groups9.txt b/RegExpSupport/testData/psi/Groups9.txt new file mode 100644 index 000000000000..d7210500dec8 --- /dev/null +++ b/RegExpSupport/testData/psi/Groups9.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: <(a*)+> + RegExpBranchImpl: <(a*)+> + RegExpClosureImpl: <(a*)+> + RegExpGroupImpl: <(a*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete1.txt b/RegExpSupport/testData/psi/Incomplete1.txt new file mode 100644 index 000000000000..0f119b26086a --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete1.txt @@ -0,0 +1,13 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: <\> + PsiErrorElement:Illegal/unsupported escape sequence + + PsiElement(INVALID_CHARACTER_ESCAPE_TOKEN)('\') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete10.txt b/RegExpSupport/testData/psi/Incomplete10.txt new file mode 100644 index 000000000000..ddf78fad4b24 --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete10.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + PsiWhiteSpace('\Q') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete11.txt b/RegExpSupport/testData/psi/Incomplete11.txt new file mode 100644 index 000000000000..e02af0ebb2ec --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete11.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + PsiWhiteSpace('\Q') + RegExpPatternImpl: <> + RegExpBranchImpl: <> + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete12.txt b/RegExpSupport/testData/psi/Incomplete12.txt new file mode 100644 index 000000000000..e898f8b55c16 --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete12.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + RegExpPatternImpl: <\E> + RegExpBranchImpl: <\E> + RegExpCharImpl: <\E> + PsiErrorElement:Illegal/unsupported escape sequence + + PsiElement(INVALID_CHARACTER_ESCAPE_TOKEN)('\E') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete13.txt b/RegExpSupport/testData/psi/Incomplete13.txt new file mode 100644 index 000000000000..709031d1e915 --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete13.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(UNION)('|') + PsiErrorElement:Dangling metacharacter + + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete2.txt b/RegExpSupport/testData/psi/Incomplete2.txt new file mode 100644 index 000000000000..a73e2f6d3028 --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete2.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpClassImpl: <[\> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <\> + PsiElement(INVALID_CHARACTER_ESCAPE_TOKEN)('\') + PsiErrorElement:Unclosed character class + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete3.txt b/RegExpSupport/testData/psi/Incomplete3.txt new file mode 100644 index 000000000000..38cadf8a32b4 --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete3.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: <\x> + PsiElement(BAD_HEX_VALUE)('\x') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete4.txt b/RegExpSupport/testData/psi/Incomplete4.txt new file mode 100644 index 000000000000..c4a5b550564b --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete4.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: <\x1> + PsiElement(BAD_HEX_VALUE)('\x1') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete5.txt b/RegExpSupport/testData/psi/Incomplete5.txt new file mode 100644 index 000000000000..b9b81d1c3cf3 --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete5.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: <\x{> + PsiElement(BAD_HEX_VALUE)('\x{') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete6.txt b/RegExpSupport/testData/psi/Incomplete6.txt new file mode 100644 index 000000000000..8ffec1fd54ff --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete6.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: <\x{}> + PsiElement(BAD_HEX_VALUE)('\x{}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete7.txt b/RegExpSupport/testData/psi/Incomplete7.txt new file mode 100644 index 000000000000..73db4847a39a --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete7.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: <\x{0> + PsiElement(BAD_HEX_VALUE)('\x{0') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete8.txt b/RegExpSupport/testData/psi/Incomplete8.txt new file mode 100644 index 000000000000..45a0ddd32cc5 --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete8.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: <\u> + PsiElement(INVALID_UNICODE_ESCAPE_TOKEN)('\u') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Incomplete9.txt b/RegExpSupport/testData/psi/Incomplete9.txt new file mode 100644 index 000000000000..7830c2437f24 --- /dev/null +++ b/RegExpSupport/testData/psi/Incomplete9.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: <\u22> + PsiElement(INVALID_UNICODE_ESCAPE_TOKEN)('\u22') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars1.txt b/RegExpSupport/testData/psi/Namedchars1.txt new file mode 100644 index 000000000000..b149083c542a --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars1.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpClosureImpl: <\s+> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars10.txt b/RegExpSupport/testData/psi/Namedchars10.txt new file mode 100644 index 000000000000..8d0f60e2d3f6 --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars10.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: <\p{unknown}+> + RegExpBranchImpl: <\p{unknown}+> + RegExpClosureImpl: <\p{unknown}+> + RegExpPropertyImpl: <\p{unknown}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('unknown') + PsiElement(RBRACE)('}') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars2.txt b/RegExpSupport/testData/psi/Namedchars2.txt new file mode 100644 index 000000000000..51130c5e0fe0 --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars2.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: <\d+> + RegExpBranchImpl: <\d+> + RegExpClosureImpl: <\d+> + RegExpSimpleClassImpl: <\d> + PsiElement(CHAR_CLASS)('\d') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars3.txt b/RegExpSupport/testData/psi/Namedchars3.txt new file mode 100644 index 000000000000..6548dada3bb1 --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars3.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: <^\p{javaJavaIdentifierStart}+\p{javaJavaIdentifierPart}+$> + RegExpBranchImpl: <^\p{javaJavaIdentifierStart}+\p{javaJavaIdentifierPart}+$> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpClosureImpl: <\p{javaJavaIdentifierStart}+> + RegExpPropertyImpl: <\p{javaJavaIdentifierStart}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('javaJavaIdentifierStart') + PsiElement(RBRACE)('}') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <\p{javaJavaIdentifierPart}+> + RegExpPropertyImpl: <\p{javaJavaIdentifierPart}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('javaJavaIdentifierPart') + PsiElement(RBRACE)('}') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars4.txt b/RegExpSupport/testData/psi/Namedchars4.txt new file mode 100644 index 000000000000..1692a7f3be1b --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars4.txt @@ -0,0 +1,13 @@ +REGEXP_FILE + RegExpPatternImpl: <\p{IsDigit}\p{IsAlpha}> + RegExpBranchImpl: <\p{IsDigit}\p{IsAlpha}> + RegExpPropertyImpl: <\p{IsDigit}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('IsDigit') + PsiElement(RBRACE)('}') + RegExpPropertyImpl: <\p{IsAlpha}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('IsAlpha') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars5.txt b/RegExpSupport/testData/psi/Namedchars5.txt new file mode 100644 index 000000000000..0d8667b67155 --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars5.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: <\p{InLATIN_1_SUPPLEMENT}> + RegExpBranchImpl: <\p{InLATIN_1_SUPPLEMENT}> + RegExpPropertyImpl: <\p{InLATIN_1_SUPPLEMENT}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('InLATIN_1_SUPPLEMENT') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars6.txt b/RegExpSupport/testData/psi/Namedchars6.txt new file mode 100644 index 000000000000..8f2d93fbe70d --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars6.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: <[a-e]?d\\e> + RegExpBranchImpl: <[a-e]?d\\e> + RegExpClosureImpl: <[a-e]?> + RegExpClassImpl: <[a-e]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: <\\> + PsiElement(ESC_CHARACTER)('\\') + RegExpCharImpl: + PsiElement(CHARACTER)('e') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars7.txt b/RegExpSupport/testData/psi/Namedchars7.txt new file mode 100644 index 000000000000..cef306f4c780 --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars7.txt @@ -0,0 +1,33 @@ +REGEXP_FILE + RegExpPatternImpl: <((\w+)/)*(\w+)> + RegExpBranchImpl: <((\w+)/)*(\w+)> + RegExpClosureImpl: <((\w+)/)*> + RegExpGroupImpl: <((\w+)/)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(\w+)/> + RegExpBranchImpl: <(\w+)/> + RegExpGroupImpl: <(\w+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\w+> + RegExpBranchImpl: <\w+> + RegExpClosureImpl: <\w+> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpGroupImpl: <(\w+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\w+> + RegExpBranchImpl: <\w+> + RegExpClosureImpl: <\w+> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars8.txt b/RegExpSupport/testData/psi/Namedchars8.txt new file mode 100644 index 000000000000..cf1995eb3f59 --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars8.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: <\p{Digit}+> + RegExpBranchImpl: <\p{Digit}+> + RegExpClosureImpl: <\p{Digit}+> + RegExpPropertyImpl: <\p{Digit}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('Digit') + PsiElement(RBRACE)('}') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Namedchars9.txt b/RegExpSupport/testData/psi/Namedchars9.txt new file mode 100644 index 000000000000..adb95c1f51d6 --- /dev/null +++ b/RegExpSupport/testData/psi/Namedchars9.txt @@ -0,0 +1,26 @@ +REGEXP_FILE + RegExpPatternImpl: <[:xdigit:]+> + RegExpBranchImpl: <[:xdigit:]+> + RegExpClosureImpl: <[:xdigit:]+> + RegExpClassImpl: <[:xdigit:]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <:xdigit:> + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Options1.txt b/RegExpSupport/testData/psi/Options1.txt new file mode 100644 index 000000000000..8f3f5b0f23b5 --- /dev/null +++ b/RegExpSupport/testData/psi/Options1.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: <(?iZm)abc> + RegExpBranchImpl: <(?iZm)abc> + RegExpSetOptionsImpl: <(?iZm)> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: + PsiElement(OPTIONS_ON)('iZm') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Options2.txt b/RegExpSupport/testData/psi/Options2.txt new file mode 100644 index 000000000000..a601ab167feb --- /dev/null +++ b/RegExpSupport/testData/psi/Options2.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: <(?idmsuxU)nice> + RegExpBranchImpl: <(?idmsuxU)nice> + RegExpSetOptionsImpl: <(?idmsuxU)> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: + PsiElement(OPTIONS_ON)('idmsuxU') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('e') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Options3.txt b/RegExpSupport/testData/psi/Options3.txt new file mode 100644 index 000000000000..bbcf2bfa36ef --- /dev/null +++ b/RegExpSupport/testData/psi/Options3.txt @@ -0,0 +1,27 @@ +REGEXP_FILE + RegExpPatternImpl: <(?idm-suxU)one(?suxU-idm)two> + RegExpBranchImpl: <(?idm-suxU)one(?suxU-idm)two> + RegExpSetOptionsImpl: <(?idm-suxU)> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: + PsiElement(OPTIONS_ON)('idm') + PsiElement(OPTIONS_OFF)('-suxU') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpSetOptionsImpl: <(?suxU-idm)> + PsiElement(SET_OPTIONS)('(?') + RegExpOptionsImpl: + PsiElement(OPTIONS_ON)('suxU') + PsiElement(OPTIONS_OFF)('-idm') + PsiElement(GROUP_END)(')') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('w') + RegExpCharImpl: + PsiElement(CHARACTER)('o') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Parse1.txt b/RegExpSupport/testData/psi/Parse1.txt new file mode 100644 index 000000000000..0a63cef9d31e --- /dev/null +++ b/RegExpSupport/testData/psi/Parse1.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: <123 | 456> + RegExpBranchImpl: <123 > + RegExpCharImpl: <1> + PsiElement(CHARACTER)('1') + RegExpCharImpl: <2> + PsiElement(CHARACTER)('2') + RegExpCharImpl: <3> + PsiElement(CHARACTER)('3') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + PsiElement(UNION)('|') + RegExpBranchImpl: < 456> + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: <4> + PsiElement(CHARACTER)('4') + RegExpCharImpl: <5> + PsiElement(CHARACTER)('5') + RegExpCharImpl: <6> + PsiElement(CHARACTER)('6') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Parse2.txt b/RegExpSupport/testData/psi/Parse2.txt new file mode 100644 index 000000000000..7143305b062b --- /dev/null +++ b/RegExpSupport/testData/psi/Parse2.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: <1*> + RegExpBranchImpl: <1*> + RegExpClosureImpl: <1*> + RegExpCharImpl: <1> + PsiElement(CHARACTER)('1') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiErrorElement:Dangling metacharacter + + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Parse3.txt b/RegExpSupport/testData/psi/Parse3.txt new file mode 100644 index 000000000000..34eb722c7439 --- /dev/null +++ b/RegExpSupport/testData/psi/Parse3.txt @@ -0,0 +1,141 @@ +REGEXP_FILE + RegExpPatternImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP])://)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*> + RegExpBranchImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP])://)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*> + RegExpClosureImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP])://)?> + RegExpGroupImpl: <(([hH][tT]{2}[pP]|[fF][tT][pP])://)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <([hH][tT]{2}[pP]|[fF][tT][pP])://> + RegExpBranchImpl: <([hH][tT]{2}[pP]|[fF][tT][pP])://> + RegExpGroupImpl: <([hH][tT]{2}[pP]|[fF][tT][pP])> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[hH][tT]{2}[pP]|[fF][tT][pP]> + RegExpBranchImpl: <[hH][tT]{2}[pP]> + RegExpClassImpl: <[hH]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('H') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[tT]{2}> + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <{2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(UNION)('|') + RegExpBranchImpl: <[fF][tT][pP]> + RegExpClassImpl: <[fF]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('F') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl:

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <(\.[a-zA-Z0-9\-]+)*> + RegExpGroupImpl: <(\.[a-zA-Z0-9\-]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\.[a-zA-Z0-9\-]+> + RegExpBranchImpl: <\.[a-zA-Z0-9\-]+> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers1.txt b/RegExpSupport/testData/psi/Quantifiers1.txt new file mode 100644 index 000000000000..f4aff98cf2be --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers1.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers10.txt b/RegExpSupport/testData/psi/Quantifiers10.txt new file mode 100644 index 000000000000..2b19e572a2fc --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers10.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiErrorElement:Dangling metacharacter + + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers11.txt b/RegExpSupport/testData/psi/Quantifiers11.txt new file mode 100644 index 000000000000..ed169e22e3a1 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers11.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers12.txt b/RegExpSupport/testData/psi/Quantifiers12.txt new file mode 100644 index 000000000000..394600c1ac4c --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers12.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{1,2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('1') + PsiElement(COMMA)(',') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers13.txt b/RegExpSupport/testData/psi/Quantifiers13.txt new file mode 100644 index 000000000000..a5ac28546b9a --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers13.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{2,1}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(COMMA)(',') + PsiElement(NUMBER)('1') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers14.txt b/RegExpSupport/testData/psi/Quantifiers14.txt new file mode 100644 index 000000000000..942ff2892ede --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers14.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{0,1}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('0') + PsiElement(COMMA)(',') + PsiElement(NUMBER)('1') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers15.txt b/RegExpSupport/testData/psi/Quantifiers15.txt new file mode 100644 index 000000000000..d1554dcad978 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers15.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{1,}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('1') + PsiElement(COMMA)(',') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers16.txt b/RegExpSupport/testData/psi/Quantifiers16.txt new file mode 100644 index 000000000000..1f71f2e930a1 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers16.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{0,}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('0') + PsiElement(COMMA)(',') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers17.txt b/RegExpSupport/testData/psi/Quantifiers17.txt new file mode 100644 index 000000000000..2ad2ab208a24 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers17.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{1}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('1') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers18.txt b/RegExpSupport/testData/psi/Quantifiers18.txt new file mode 100644 index 000000000000..cf1984923452 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers18.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{3,3}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('3') + PsiElement(COMMA)(',') + PsiElement(NUMBER)('3') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers19.txt b/RegExpSupport/testData/psi/Quantifiers19.txt new file mode 100644 index 000000000000..869593ae10ac --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers19.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{> + PsiElement(LBRACE)('{') + PsiErrorElement:Number expected + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers2.txt b/RegExpSupport/testData/psi/Quantifiers2.txt new file mode 100644 index 000000000000..bef7a2d6c4e3 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers2.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers20.txt b/RegExpSupport/testData/psi/Quantifiers20.txt new file mode 100644 index 000000000000..46132df51f13 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers20.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <}> + PsiElement(CHARACTER)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers21.txt b/RegExpSupport/testData/psi/Quantifiers21.txt new file mode 100644 index 000000000000..c3ba25772444 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers21.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{}> + PsiElement(LBRACE)('{') + PsiErrorElement:Number expected + + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers3.txt b/RegExpSupport/testData/psi/Quantifiers3.txt new file mode 100644 index 000000000000..393aeab26930 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers3.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers4.txt b/RegExpSupport/testData/psi/Quantifiers4.txt new file mode 100644 index 000000000000..cf249b3e8001 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers4.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + PsiElement(QUEST)('?') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers5.txt b/RegExpSupport/testData/psi/Quantifiers5.txt new file mode 100644 index 000000000000..6b7a67d08ff9 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers5.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <+?> + PsiElement(PLUS)('+') + PsiElement(QUEST)('?') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers6.txt b/RegExpSupport/testData/psi/Quantifiers6.txt new file mode 100644 index 000000000000..309ca4cfc2dc --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers6.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*?> + PsiElement(STAR)('*') + PsiElement(QUEST)('?') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers7.txt b/RegExpSupport/testData/psi/Quantifiers7.txt new file mode 100644 index 000000000000..df7db303c019 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers7.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers8.txt b/RegExpSupport/testData/psi/Quantifiers8.txt new file mode 100644 index 000000000000..f00d1f12595b --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers8.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <++> + PsiElement(PLUS)('+') + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Quantifiers9.txt b/RegExpSupport/testData/psi/Quantifiers9.txt new file mode 100644 index 000000000000..5130a4b567e8 --- /dev/null +++ b/RegExpSupport/testData/psi/Quantifiers9.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*+> + PsiElement(STAR)('*') + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife1.txt b/RegExpSupport/testData/psi/RealLife1.txt new file mode 100644 index 000000000000..4cb35efdad63 --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife1.txt @@ -0,0 +1,48 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('u') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpGroupImpl: <(true|false)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('u') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('l') + RegExpCharImpl: + PsiElement(CHARACTER)('s') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife10.txt b/RegExpSupport/testData/psi/RealLife10.txt new file mode 100644 index 000000000000..791dd5e75a83 --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife10.txt @@ -0,0 +1,473 @@ +REGEXP_FILE + RegExpPatternImpl: <.*?(<(error|warning|info)(?: descr="((?:[^"\\]|\\")*)")?(?: type="([0-9A-Z_]+)")?(?: foreground="([0-9xa-f]+)")?(?: background="([0-9xa-f]+)")?(?: effectcolor="([0-9xa-f]+)")?(?: effecttype="([A-Z]+)")?(?: fonttype="([0-9]+)")?(/)?>)(.*)> + RegExpBranchImpl: <.*?(<(error|warning|info)(?: descr="((?:[^"\\]|\\")*)")?(?: type="([0-9A-Z_]+)")?(?: foreground="([0-9xa-f]+)")?(?: background="([0-9xa-f]+)")?(?: effectcolor="([0-9xa-f]+)")?(?: effecttype="([A-Z]+)")?(?: fonttype="([0-9]+)")?(/)?>)(.*)> + RegExpClosureImpl: <.*?> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*?> + PsiElement(STAR)('*') + PsiElement(QUEST)('?') + RegExpGroupImpl: <(<(error|warning|info)(?: descr="((?:[^"\\]|\\")*)")?(?: type="([0-9A-Z_]+)")?(?: foreground="([0-9xa-f]+)")?(?: background="([0-9xa-f]+)")?(?: effectcolor="([0-9xa-f]+)")?(?: effecttype="([A-Z]+)")?(?: fonttype="([0-9]+)")?(/)?>)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <<(error|warning|info)(?: descr="((?:[^"\\]|\\")*)")?(?: type="([0-9A-Z_]+)")?(?: foreground="([0-9xa-f]+)")?(?: background="([0-9xa-f]+)")?(?: effectcolor="([0-9xa-f]+)")?(?: effecttype="([A-Z]+)")?(?: fonttype="([0-9]+)")?(/)?>> + RegExpBranchImpl: <<(error|warning|info)(?: descr="((?:[^"\\]|\\")*)")?(?: type="([0-9A-Z_]+)")?(?: foreground="([0-9xa-f]+)")?(?: background="([0-9xa-f]+)")?(?: effectcolor="([0-9xa-f]+)")?(?: effecttype="([A-Z]+)")?(?: fonttype="([0-9]+)")?(/)?>> + RegExpCharImpl: <<> + PsiElement(CHARACTER)('<') + RegExpGroupImpl: <(error|warning|info)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('w') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: <(?: descr="((?:[^"\\]|\\")*)")?> + RegExpGroupImpl: <(?: descr="((?:[^"\\]|\\")*)")> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: < descr="((?:[^"\\]|\\")*)"> + RegExpBranchImpl: < descr="((?:[^"\\]|\\")*)"> + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('s') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpGroupImpl: <((?:[^"\\]|\\")*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(?:[^"\\]|\\")*> + RegExpBranchImpl: <(?:[^"\\]|\\")*> + RegExpClosureImpl: <(?:[^"\\]|\\")*> + RegExpGroupImpl: <(?:[^"\\]|\\")> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <[^"\\]|\\"> + RegExpBranchImpl: <[^"\\]> + RegExpClassImpl: <[^"\\]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpUnionImpl: <"\\> + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpCharImpl: <\\> + PsiElement(ESC_CHARACTER)('\\') + PsiElement(CLASS_END)(']') + PsiElement(UNION)('|') + RegExpBranchImpl: <\\"> + RegExpCharImpl: <\\> + PsiElement(ESC_CHARACTER)('\\') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <(?: type="([0-9A-Z_]+)")?> + RegExpGroupImpl: <(?: type="([0-9A-Z_]+)")> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: < type="([0-9A-Z_]+)"> + RegExpBranchImpl: < type="([0-9A-Z_]+)"> + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('y') + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpGroupImpl: <([0-9A-Z_]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[0-9A-Z_]+> + RegExpBranchImpl: <[0-9A-Z_]+> + RegExpClosureImpl: <[0-9A-Z_]+> + RegExpClassImpl: <[0-9A-Z_]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <0-9A-Z_> + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharImpl: <_> + PsiElement(CHARACTER)('_') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <(?: foreground="([0-9xa-f]+)")?> + RegExpGroupImpl: <(?: foreground="([0-9xa-f]+)")> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: < foreground="([0-9xa-f]+)"> + RegExpBranchImpl: < foreground="([0-9xa-f]+)"> + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('u') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpGroupImpl: <([0-9xa-f]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[0-9xa-f]+> + RegExpBranchImpl: <[0-9xa-f]+> + RegExpClosureImpl: <[0-9xa-f]+> + RegExpClassImpl: <[0-9xa-f]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <0-9xa-f> + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <(?: background="([0-9xa-f]+)")?> + RegExpGroupImpl: <(?: background="([0-9xa-f]+)")> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: < background="([0-9xa-f]+)"> + RegExpBranchImpl: < background="([0-9xa-f]+)"> + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('k') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('u') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpGroupImpl: <([0-9xa-f]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[0-9xa-f]+> + RegExpBranchImpl: <[0-9xa-f]+> + RegExpClosureImpl: <[0-9xa-f]+> + RegExpClassImpl: <[0-9xa-f]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <0-9xa-f> + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <(?: effectcolor="([0-9xa-f]+)")?> + RegExpGroupImpl: <(?: effectcolor="([0-9xa-f]+)")> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: < effectcolor="([0-9xa-f]+)"> + RegExpBranchImpl: < effectcolor="([0-9xa-f]+)"> + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('l') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpGroupImpl: <([0-9xa-f]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[0-9xa-f]+> + RegExpBranchImpl: <[0-9xa-f]+> + RegExpClosureImpl: <[0-9xa-f]+> + RegExpClassImpl: <[0-9xa-f]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <0-9xa-f> + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <(?: effecttype="([A-Z]+)")?> + RegExpGroupImpl: <(?: effecttype="([A-Z]+)")> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: < effecttype="([A-Z]+)"> + RegExpBranchImpl: < effecttype="([A-Z]+)"> + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('y') + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpGroupImpl: <([A-Z]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[A-Z]+> + RegExpBranchImpl: <[A-Z]+> + RegExpClosureImpl: <[A-Z]+> + RegExpClassImpl: <[A-Z]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <(?: fonttype="([0-9]+)")?> + RegExpGroupImpl: <(?: fonttype="([0-9]+)")> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: < fonttype="([0-9]+)"> + RegExpBranchImpl: < fonttype="([0-9]+)"> + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('y') + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: <=> + PsiElement(CHARACTER)('=') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + RegExpGroupImpl: <([0-9]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[0-9]+> + RegExpBranchImpl: <[0-9]+> + RegExpClosureImpl: <[0-9]+> + RegExpClassImpl: <[0-9]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <"> + PsiElement(CHARACTER)('"') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <(/)?> + RegExpGroupImpl: <(/)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpCharImpl: <>> + PsiElement(CHARACTER)('>') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <.*> + RegExpBranchImpl: <.*> + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife2.txt b/RegExpSupport/testData/psi/RealLife2.txt new file mode 100644 index 000000000000..cf8e2116d8cb --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife2.txt @@ -0,0 +1,50 @@ +REGEXP_FILE + RegExpPatternImpl: <(?:\s)|(?:/\*.*\*/)|(?://[^\n]*)> + RegExpBranchImpl: <(?:\s)> + RegExpGroupImpl: <(?:\s)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <\s> + RegExpBranchImpl: <\s> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + PsiElement(GROUP_END)(')') + PsiElement(UNION)('|') + RegExpBranchImpl: <(?:/\*.*\*/)> + RegExpGroupImpl: <(?:/\*.*\*/)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpCharImpl: <\*> + PsiElement(ESC_CHARACTER)('\*') + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: <\*> + PsiElement(ESC_CHARACTER)('\*') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(GROUP_END)(')') + PsiElement(UNION)('|') + RegExpBranchImpl: <(?://[^\n]*)> + RegExpGroupImpl: <(?://[^\n]*)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpClosureImpl: <[^\n]*> + RegExpClassImpl: <[^\n]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpCharImpl: <\n> + PsiElement(ESC_CTRL_CHARACTER)('\n') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife3.txt b/RegExpSupport/testData/psi/RealLife3.txt new file mode 100644 index 000000000000..7c8277968b62 --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife3.txt @@ -0,0 +1,60 @@ +REGEXP_FILE + RegExpPatternImpl: <((?:\p{Alpha}\:)?[0-9 a-z_A-Z\-\\./]+)> + RegExpBranchImpl: <((?:\p{Alpha}\:)?[0-9 a-z_A-Z\-\\./]+)> + RegExpGroupImpl: <((?:\p{Alpha}\:)?[0-9 a-z_A-Z\-\\./]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(?:\p{Alpha}\:)?[0-9 a-z_A-Z\-\\./]+> + RegExpBranchImpl: <(?:\p{Alpha}\:)?[0-9 a-z_A-Z\-\\./]+> + RegExpClosureImpl: <(?:\p{Alpha}\:)?> + RegExpGroupImpl: <(?:\p{Alpha}\:)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <\p{Alpha}\:> + RegExpBranchImpl: <\p{Alpha}\:> + RegExpPropertyImpl: <\p{Alpha}> + PsiElement(PROPERTY)('\p') + PsiElement(LBRACE)('{') + PsiElement(NAME)('Alpha') + PsiElement(RBRACE)('}') + RegExpCharImpl: <\:> + PsiElement(REDUNDANT_ESCAPE)('\:') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[0-9 a-z_A-Z\-\\./]+> + RegExpClassImpl: <[0-9 a-z_A-Z\-\\./]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <0-9 a-z_A-Z\-\\./> + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharImpl: <_> + PsiElement(CHARACTER)('_') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + RegExpCharImpl: <\\> + PsiElement(ESC_CHARACTER)('\\') + RegExpCharImpl: <.> + PsiElement(CHARACTER)('.') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife4.txt b/RegExpSupport/testData/psi/RealLife4.txt new file mode 100644 index 000000000000..05b0fa800879 --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife4.txt @@ -0,0 +1,25 @@ +REGEXP_FILE + RegExpPatternImpl: <^[\w\+\.\-]{2,}:> + RegExpBranchImpl: <^[\w\+\.\-]{2,}:> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpClosureImpl: <[\w\+\.\-]{2,}> + RegExpClassImpl: <[\w\+\.\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: <\w\+\.\-> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpCharImpl: <\+> + PsiElement(REDUNDANT_ESCAPE)('\+') + RegExpCharImpl: <\.> + PsiElement(REDUNDANT_ESCAPE)('\.') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <{2,}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(COMMA)(',') + PsiElement(RBRACE)('}') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife5.txt b/RegExpSupport/testData/psi/RealLife5.txt new file mode 100644 index 000000000000..512b737b8ec1 --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife5.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: <#(.*)$> + RegExpBranchImpl: <#(.*)$> + RegExpCharImpl: <#> + PsiElement(CHARACTER)('#') + RegExpGroupImpl: <(.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <.*> + RegExpBranchImpl: <.*> + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife6.txt b/RegExpSupport/testData/psi/RealLife6.txt new file mode 100644 index 000000000000..408b4e6bbcdc --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife6.txt @@ -0,0 +1,89 @@ +REGEXP_FILE + RegExpPatternImpl: <^(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)> + RegExpBranchImpl: <^(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)> + RegExpBoundaryImpl: <^> + PsiElement(CARET)('^') + RegExpClosureImpl: <(([^:]+)://)?> + RegExpGroupImpl: <(([^:]+)://)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <([^:]+)://> + RegExpBranchImpl: <([^:]+)://> + RegExpGroupImpl: <([^:]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[^:]+> + RegExpBranchImpl: <[^:]+> + RegExpClosureImpl: <[^:]+> + RegExpClassImpl: <[^:]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpGroupImpl: <([^:/]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[^:/]+> + RegExpBranchImpl: <[^:/]+> + RegExpClosureImpl: <[^:/]+> + RegExpClassImpl: <[^:/]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpUnionImpl: <:/> + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: <(:([0-9]+))?> + RegExpGroupImpl: <(:([0-9]+))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <:([0-9]+)> + RegExpBranchImpl: <:([0-9]+)> + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpGroupImpl: <([0-9]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[0-9]+> + RegExpBranchImpl: <[0-9]+> + RegExpClosureImpl: <[0-9]+> + RegExpClassImpl: <[0-9]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpGroupImpl: <(/.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife7.txt b/RegExpSupport/testData/psi/RealLife7.txt new file mode 100644 index 000000000000..f291adce8fa0 --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife7.txt @@ -0,0 +1,87 @@ +REGEXP_FILE + RegExpPatternImpl: <(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)> + RegExpBranchImpl: <(([^:]+)://)?([^:/]+)(:([0-9]+))?(/.*)> + RegExpClosureImpl: <(([^:]+)://)?> + RegExpGroupImpl: <(([^:]+)://)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <([^:]+)://> + RegExpBranchImpl: <([^:]+)://> + RegExpGroupImpl: <([^:]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[^:]+> + RegExpBranchImpl: <[^:]+> + RegExpClosureImpl: <[^:]+> + RegExpClassImpl: <[^:]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpGroupImpl: <([^:/]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[^:/]+> + RegExpBranchImpl: <[^:/]+> + RegExpClosureImpl: <[^:/]+> + RegExpClassImpl: <[^:/]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpUnionImpl: <:/> + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: + PsiElement(CHARACTER)('/') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: <(:([0-9]+))?> + RegExpGroupImpl: <(:([0-9]+))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <:([0-9]+)> + RegExpBranchImpl: <:([0-9]+)> + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpGroupImpl: <([0-9]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <[0-9]+> + RegExpBranchImpl: <[0-9]+> + RegExpClosureImpl: <[0-9]+> + RegExpClassImpl: <[0-9]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpGroupImpl: <(/.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('/') + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife8.txt b/RegExpSupport/testData/psi/RealLife8.txt new file mode 100644 index 000000000000..7053cf876fd5 --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife8.txt @@ -0,0 +1,53 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('u') + RegExpCharImpl: + PsiElement(CHARACTER)('s') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpClosureImpl: <[+-]?> + RegExpClassImpl: <[+-]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharImpl: <+> + PsiElement(CHARACTER)('+') + RegExpCharImpl: <-> + PsiElement(MINUS)('-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[0-9]+> + RegExpClassImpl: <[0-9]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpClassImpl: <[0-9]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + PsiElement(CLASS_END)(']') + RegExpClassImpl: <[0-9]> + PsiElement(CLASS_BEGIN)('[') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/RealLife9.txt b/RegExpSupport/testData/psi/RealLife9.txt new file mode 100644 index 000000000000..e7ae10cd5010 --- /dev/null +++ b/RegExpSupport/testData/psi/RealLife9.txt @@ -0,0 +1,32 @@ +REGEXP_FILE + RegExpPatternImpl: <\b(\w+)(\s+\1)+\b> + RegExpBranchImpl: <\b(\w+)(\s+\1)+\b> + RegExpBoundaryImpl: <\b> + PsiElement(BOUNDARY)('\b') + RegExpGroupImpl: <(\w+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\w+> + RegExpBranchImpl: <\w+> + RegExpClosureImpl: <\w+> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: <(\s+\1)+> + RegExpGroupImpl: <(\s+\1)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\s+\1> + RegExpBranchImpl: <\s+\1> + RegExpClosureImpl: <\s+> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpBackrefImpl: <\1> + PsiElement(BACKREF)('\1') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpBoundaryImpl: <\b> + PsiElement(BOUNDARY)('\b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Regressions1.txt b/RegExpSupport/testData/psi/Regressions1.txt new file mode 100644 index 000000000000..e089d661466d --- /dev/null +++ b/RegExpSupport/testData/psi/Regressions1.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <(> + RegExpBranchImpl: <(> + RegExpGroupImpl: <(> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <> + RegExpBranchImpl: <> + + PsiErrorElement:Unclosed group + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Regressions2.txt b/RegExpSupport/testData/psi/Regressions2.txt new file mode 100644 index 000000000000..a264404ad05b --- /dev/null +++ b/RegExpSupport/testData/psi/Regressions2.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: <[^^]> + RegExpBranchImpl: <[^^]> + RegExpClassImpl: <[^^]> + PsiElement(CLASS_BEGIN)('[') + PsiElement(CARET)('^') + RegExpCharImpl: <^> + PsiElement(CARET)('^') + PsiElement(CLASS_END)(']') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Regressions3.txt b/RegExpSupport/testData/psi/Regressions3.txt new file mode 100644 index 000000000000..e0e129057ef8 --- /dev/null +++ b/RegExpSupport/testData/psi/Regressions3.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiErrorElement:Unmatched closing ')' + + PsiElement(GROUP_END)(')') + PsiErrorElement:Pattern expected + + PsiElement(CHARACTER)('b') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Regressions4.txt b/RegExpSupport/testData/psi/Regressions4.txt new file mode 100644 index 000000000000..714bbf0e3081 --- /dev/null +++ b/RegExpSupport/testData/psi/Regressions4.txt @@ -0,0 +1,119 @@ +REGEXP_FILE + RegExpPatternImpl: <\s*@return(?:s)?\s*(?:(?:\{|:)?\s*(?(> + RegExpBranchImpl: <\s*@return(?:s)?\s*(?:(?:\{|:)?\s*(?(> + RegExpClosureImpl: <\s*> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: <@> + PsiElement(CHARACTER)('@') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('u') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpClosureImpl: <(?:s)?> + RegExpGroupImpl: <(?:s)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('s') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <\s*> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpGroupImpl: <(?:(?:\{|:)?\s*(?(> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <(?:\{|:)?\s*(?(> + RegExpBranchImpl: <(?:\{|:)?\s*(?(> + RegExpClosureImpl: <(?:\{|:)?> + RegExpGroupImpl: <(?:\{|:)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <\{|:> + RegExpBranchImpl: <\{> + RegExpCharImpl: <\{> + PsiElement(ESC_CHARACTER)('\{') + PsiElement(UNION)('|') + RegExpBranchImpl: <:> + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <\s*> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpPyCondRefImpl: <(?(> + PsiElement(PYTHON_COND_REF)('(?(') + PsiErrorElement:Group name or number expected + + PsiElement(BAD_CHARACTER)('[') + PsiErrorElement:Pattern expected + + PsiElement(CARET)('^') + PsiErrorElement:Pattern expected + + PsiElement(CHAR_CLASS)('\s') + PsiErrorElement:Pattern expected + + PsiElement(REDUNDANT_ESCAPE)('\}') + PsiErrorElement:Pattern expected + + PsiElement(CHARACTER)(']') + PsiErrorElement:Dangling metacharacter + + PsiElement(PLUS)('+') + PsiErrorElement:Unmatched closing ')' + + PsiElement(GROUP_END)(')') + PsiErrorElement:Pattern expected + + PsiElement(CHAR_CLASS)('\s') + PsiErrorElement:Dangling metacharacter + + PsiElement(STAR)('*') + PsiErrorElement:Pattern expected + + PsiElement(REDUNDANT_ESCAPE)('\}') + PsiErrorElement:Dangling metacharacter + + PsiElement(QUEST)('?') + PsiErrorElement:Pattern expected + + PsiElement(CHAR_CLASS)('\s') + PsiErrorElement:Dangling metacharacter + + PsiElement(STAR)('*') + PsiErrorElement:Unmatched closing ')' + + PsiElement(GROUP_END)(')') + PsiErrorElement:Dangling metacharacter + + PsiElement(QUEST)('?') + PsiErrorElement:Pattern expected + + PsiElement(GROUP_BEGIN)('(') + PsiErrorElement:Pattern expected + + PsiElement(DOT)('.') + PsiErrorElement:Dangling metacharacter + + PsiElement(STAR)('*') + PsiErrorElement:Unmatched closing ')' + + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple1.txt b/RegExpSupport/testData/psi/Simple1.txt new file mode 100644 index 000000000000..43e77768f3e7 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple1.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + RegExpPatternImpl: <|> + RegExpBranchImpl: <> + + PsiElement(UNION)('|') + RegExpBranchImpl: <> + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple10.txt b/RegExpSupport/testData/psi/Simple10.txt new file mode 100644 index 000000000000..f75747e5aaf2 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple10.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple11.txt b/RegExpSupport/testData/psi/Simple11.txt new file mode 100644 index 000000000000..a2e8a0148b13 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple11.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple12.txt b/RegExpSupport/testData/psi/Simple12.txt new file mode 100644 index 000000000000..26762e3391a9 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple12.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple13.txt b/RegExpSupport/testData/psi/Simple13.txt new file mode 100644 index 000000000000..80786d56d7ae --- /dev/null +++ b/RegExpSupport/testData/psi/Simple13.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple14.txt b/RegExpSupport/testData/psi/Simple14.txt new file mode 100644 index 000000000000..f0b6020b8c7e --- /dev/null +++ b/RegExpSupport/testData/psi/Simple14.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + PsiErrorElement:Dangling metacharacter + + PsiElement(STAR)('*') + PsiErrorElement:Pattern expected + + PsiElement(CHARACTER)('a') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple15.txt b/RegExpSupport/testData/psi/Simple15.txt new file mode 100644 index 000000000000..2ad2ab208a24 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple15.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{1}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('1') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple16.txt b/RegExpSupport/testData/psi/Simple16.txt new file mode 100644 index 000000000000..c3ba25772444 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple16.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{}> + PsiElement(LBRACE)('{') + PsiErrorElement:Number expected + + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple17.txt b/RegExpSupport/testData/psi/Simple17.txt new file mode 100644 index 000000000000..869593ae10ac --- /dev/null +++ b/RegExpSupport/testData/psi/Simple17.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{> + PsiElement(LBRACE)('{') + PsiErrorElement:Number expected + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple18.txt b/RegExpSupport/testData/psi/Simple18.txt new file mode 100644 index 000000000000..46132df51f13 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple18.txt @@ -0,0 +1,7 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: <}> + PsiElement(CHARACTER)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple19.txt b/RegExpSupport/testData/psi/Simple19.txt new file mode 100644 index 000000000000..d1554dcad978 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple19.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{1,}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('1') + PsiElement(COMMA)(',') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple2.txt b/RegExpSupport/testData/psi/Simple2.txt new file mode 100644 index 000000000000..e5fa7ef68ef4 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple2.txt @@ -0,0 +1,30 @@ +REGEXP_FILE + RegExpPatternImpl: <(|\$.*)\.class> + RegExpBranchImpl: <(|\$.*)\.class> + RegExpGroupImpl: <(|\$.*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <|\$.*> + RegExpBranchImpl: <> + + PsiElement(UNION)('|') + RegExpBranchImpl: <\$.*> + RegExpCharImpl: <\$> + PsiElement(ESC_CHARACTER)('\$') + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('l') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('s') + RegExpCharImpl: + PsiElement(CHARACTER)('s') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple20.txt b/RegExpSupport/testData/psi/Simple20.txt new file mode 100644 index 000000000000..394600c1ac4c --- /dev/null +++ b/RegExpSupport/testData/psi/Simple20.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{1,2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('1') + PsiElement(COMMA)(',') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple21.txt b/RegExpSupport/testData/psi/Simple21.txt new file mode 100644 index 000000000000..c9021407c61a --- /dev/null +++ b/RegExpSupport/testData/psi/Simple21.txt @@ -0,0 +1,16 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <{1,> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('1') + PsiElement(COMMA)(',') + PsiErrorElement:'}' or number expected + + PsiElement(NAME)('foo') + PsiErrorElement:Pattern expected + + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple22.txt b/RegExpSupport/testData/psi/Simple22.txt new file mode 100644 index 000000000000..fe2f66468a3a --- /dev/null +++ b/RegExpSupport/testData/psi/Simple22.txt @@ -0,0 +1,5 @@ +REGEXP_FILE + RegExpPatternImpl: <\;> + RegExpBranchImpl: <\;> + RegExpCharImpl: <\;> + PsiElement(REDUNDANT_ESCAPE)('\;') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple3.txt b/RegExpSupport/testData/psi/Simple3.txt new file mode 100644 index 000000000000..13ee455bf4f9 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple3.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple4.txt b/RegExpSupport/testData/psi/Simple4.txt new file mode 100644 index 000000000000..481cf1456841 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple4.txt @@ -0,0 +1,47 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('m') + RegExpCharImpl: + PsiElement(CHARACTER)('u') + RegExpCharImpl: + PsiElement(CHARACTER)('l') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl:

+ PsiElement(CHARACTER)('p') + RegExpCharImpl: + PsiElement(CHARACTER)('l') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('w') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpCharImpl: + PsiElement(CHARACTER)('s') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('o') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpCharImpl: + PsiElement(CHARACTER)('t') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple5.txt b/RegExpSupport/testData/psi/Simple5.txt new file mode 100644 index 000000000000..c658ccffb1cb --- /dev/null +++ b/RegExpSupport/testData/psi/Simple5.txt @@ -0,0 +1,13 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpCharImpl: + PsiElement(CHARACTER)('d') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple6.txt b/RegExpSupport/testData/psi/Simple6.txt new file mode 100644 index 000000000000..393aeab26930 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple6.txt @@ -0,0 +1,8 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple7.txt b/RegExpSupport/testData/psi/Simple7.txt new file mode 100644 index 000000000000..d8b9dd9b68d2 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple7.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple8.txt b/RegExpSupport/testData/psi/Simple8.txt new file mode 100644 index 000000000000..8d419d215cd2 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple8.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Simple9.txt b/RegExpSupport/testData/psi/Simple9.txt new file mode 100644 index 000000000000..2ac64e7167f4 --- /dev/null +++ b/RegExpSupport/testData/psi/Simple9.txt @@ -0,0 +1,14 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests1.txt b/RegExpSupport/testData/psi/Tests1.txt new file mode 100644 index 000000000000..3ec0b2cc4fda --- /dev/null +++ b/RegExpSupport/testData/psi/Tests1.txt @@ -0,0 +1,12 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiErrorElement:Unmatched closing ')' + + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests10.txt b/RegExpSupport/testData/psi/Tests10.txt new file mode 100644 index 000000000000..dfa7e1ebc6b0 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests10.txt @@ -0,0 +1,23 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpGroupImpl: <(b*c*)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests11.txt b/RegExpSupport/testData/psi/Tests11.txt new file mode 100644 index 000000000000..08fc4331cd39 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests11.txt @@ -0,0 +1,18 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests12.txt b/RegExpSupport/testData/psi/Tests12.txt new file mode 100644 index 000000000000..a33740f8b829 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests12.txt @@ -0,0 +1,68 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('m') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: < > + PsiElement(CHARACTER)(' ') + RegExpGroupImpl: <(giant|man|martian)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('m') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('m') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('r') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests13.txt b/RegExpSupport/testData/psi/Tests13.txt new file mode 100644 index 000000000000..68c7c836af6e --- /dev/null +++ b/RegExpSupport/testData/psi/Tests13.txt @@ -0,0 +1,57 @@ +REGEXP_FILE + RegExpPatternImpl: <(wee|week)(knights|knight)> + RegExpBranchImpl: <(wee|week)(knights|knight)> + RegExpGroupImpl: <(wee|week)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('w') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('w') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('k') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(knights|knight)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('k') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('s') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('k') + RegExpCharImpl: + PsiElement(CHARACTER)('n') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('t') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests14.txt b/RegExpSupport/testData/psi/Tests14.txt new file mode 100644 index 000000000000..2880eca2019f --- /dev/null +++ b/RegExpSupport/testData/psi/Tests14.txt @@ -0,0 +1,31 @@ +REGEXP_FILE + RegExpPatternImpl: <(a.*b)(a.*b)> + RegExpBranchImpl: <(a.*b)(a.*b)> + RegExpGroupImpl: <(a.*b)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') + RegExpGroupImpl: <(a.*b)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <.*> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests15.txt b/RegExpSupport/testData/psi/Tests15.txt new file mode 100644 index 000000000000..694d3b1a5565 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests15.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: <(\s*\w+)?> + RegExpBranchImpl: <(\s*\w+)?> + RegExpClosureImpl: <(\s*\w+)?> + RegExpGroupImpl: <(\s*\w+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\s*\w+> + RegExpBranchImpl: <\s*\w+> + RegExpClosureImpl: <\s*> + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpClosureImpl: <\w+> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests16.txt b/RegExpSupport/testData/psi/Tests16.txt new file mode 100644 index 000000000000..5bce576e1489 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests16.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <(?:a)> + RegExpBranchImpl: <(?:a)> + RegExpGroupImpl: <(?:a)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests17.txt b/RegExpSupport/testData/psi/Tests17.txt new file mode 100644 index 000000000000..08d3ec6292c6 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests17.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: <(?:\w)> + RegExpBranchImpl: <(?:\w)> + RegExpGroupImpl: <(?:\w)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <\w> + RegExpBranchImpl: <\w> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests18.txt b/RegExpSupport/testData/psi/Tests18.txt new file mode 100644 index 000000000000..93c12fe4fcf2 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests18.txt @@ -0,0 +1,17 @@ +REGEXP_FILE + RegExpPatternImpl: <(?:\w\s\w)+> + RegExpBranchImpl: <(?:\w\s\w)+> + RegExpClosureImpl: <(?:\w\s\w)+> + RegExpGroupImpl: <(?:\w\s\w)> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <\w\s\w> + RegExpBranchImpl: <\w\s\w> + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + RegExpSimpleClassImpl: <\s> + PsiElement(CHAR_CLASS)('\s') + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests19.txt b/RegExpSupport/testData/psi/Tests19.txt new file mode 100644 index 000000000000..bd619487d2e0 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests19.txt @@ -0,0 +1,31 @@ +REGEXP_FILE + RegExpPatternImpl: <(a\w)(?:,(a\w))+> + RegExpBranchImpl: <(a\w)(?:,(a\w))+> + RegExpGroupImpl: <(a\w)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + PsiElement(GROUP_END)(')') + RegExpClosureImpl: <(?:,(a\w))+> + RegExpGroupImpl: <(?:,(a\w))> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <,(a\w)> + RegExpBranchImpl: <,(a\w)> + RegExpCharImpl: <,> + PsiElement(CHARACTER)(',') + RegExpGroupImpl: <(a\w)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpSimpleClassImpl: <\w> + PsiElement(CHAR_CLASS)('\w') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests2.txt b/RegExpSupport/testData/psi/Tests2.txt new file mode 100644 index 000000000000..e99957feb89b --- /dev/null +++ b/RegExpSupport/testData/psi/Tests2.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: <(abc> + RegExpBranchImpl: <(abc> + RegExpGroupImpl: <(abc> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiErrorElement:Unclosed group + \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests20.txt b/RegExpSupport/testData/psi/Tests20.txt new file mode 100644 index 000000000000..9b30d40ec3bc --- /dev/null +++ b/RegExpSupport/testData/psi/Tests20.txt @@ -0,0 +1,24 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpClosureImpl: <.*?> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <*?> + PsiElement(STAR)('*') + PsiElement(QUEST)('?') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('y') + RegExpCharImpl: + PsiElement(CHARACTER)('z') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests21.txt b/RegExpSupport/testData/psi/Tests21.txt new file mode 100644 index 000000000000..ce624f977ce8 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests21.txt @@ -0,0 +1,24 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpClosureImpl: <.+?> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <+?> + PsiElement(PLUS)('+') + PsiElement(QUEST)('?') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('x') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('y') + RegExpCharImpl: + PsiElement(CHARACTER)('z') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests22.txt b/RegExpSupport/testData/psi/Tests22.txt new file mode 100644 index 000000000000..46b5f05f0ea5 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests22.txt @@ -0,0 +1,22 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <.+?> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <+?> + PsiElement(PLUS)('+') + PsiElement(QUEST)('?') + RegExpGroupImpl: <(c|d)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests23.txt b/RegExpSupport/testData/psi/Tests23.txt new file mode 100644 index 000000000000..079d16ea7e8b --- /dev/null +++ b/RegExpSupport/testData/psi/Tests23.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: <.+> + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpGroupImpl: <(c|d)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests24.txt b/RegExpSupport/testData/psi/Tests24.txt new file mode 100644 index 000000000000..4c8a34727a90 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests24.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <+?> + PsiElement(PLUS)('+') + PsiElement(QUEST)('?') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <+?> + PsiElement(PLUS)('+') + PsiElement(QUEST)('?') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <+?> + PsiElement(PLUS)('+') + PsiElement(QUEST)('?') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests3.txt b/RegExpSupport/testData/psi/Tests3.txt new file mode 100644 index 000000000000..d47de554e99b --- /dev/null +++ b/RegExpSupport/testData/psi/Tests3.txt @@ -0,0 +1,15 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('c') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests4.txt b/RegExpSupport/testData/psi/Tests4.txt new file mode 100644 index 000000000000..2b19e572a2fc --- /dev/null +++ b/RegExpSupport/testData/psi/Tests4.txt @@ -0,0 +1,11 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + PsiErrorElement:Dangling metacharacter + + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests5.txt b/RegExpSupport/testData/psi/Tests5.txt new file mode 100644 index 000000000000..f00d1f12595b --- /dev/null +++ b/RegExpSupport/testData/psi/Tests5.txt @@ -0,0 +1,9 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpQuantifierImpl: <++> + PsiElement(PLUS)('+') + PsiElement(PLUS)('+') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests6.txt b/RegExpSupport/testData/psi/Tests6.txt new file mode 100644 index 000000000000..2180089492ac --- /dev/null +++ b/RegExpSupport/testData/psi/Tests6.txt @@ -0,0 +1,10 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests7.txt b/RegExpSupport/testData/psi/Tests7.txt new file mode 100644 index 000000000000..adbdb8c49081 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests7.txt @@ -0,0 +1,20 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpCharImpl: + PsiElement(CHARACTER)('g') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests8.txt b/RegExpSupport/testData/psi/Tests8.txt new file mode 100644 index 000000000000..997288b58619 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests8.txt @@ -0,0 +1,21 @@ +REGEXP_FILE + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('d') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('e') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Tests9.txt b/RegExpSupport/testData/psi/Tests9.txt new file mode 100644 index 000000000000..3275d51aa449 --- /dev/null +++ b/RegExpSupport/testData/psi/Tests9.txt @@ -0,0 +1,52 @@ +REGEXP_FILE + RegExpPatternImpl: <(bc+d$|ef*g.|h?i(j|k))> + RegExpBranchImpl: <(bc+d$|ef*g.|h?i(j|k))> + RegExpGroupImpl: <(bc+d$|ef*g.|h?i(j|k))> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('b') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('c') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpCharImpl: + PsiElement(CHARACTER)('d') + RegExpBoundaryImpl: <$> + PsiElement(DOLLAR)('$') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('e') + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('f') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') + RegExpCharImpl: + PsiElement(CHARACTER)('g') + RegExpSimpleClassImpl: <.> + PsiElement(DOT)('.') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpClosureImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpCharImpl: + PsiElement(CHARACTER)('i') + RegExpGroupImpl: <(j|k)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('j') + PsiElement(UNION)('|') + RegExpBranchImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('k') + PsiElement(GROUP_END)(')') + PsiElement(GROUP_END)(')') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/test1.regexp b/RegExpSupport/testData/psi/test1.regexp deleted file mode 100644 index 0e3e0f80d7d9..000000000000 --- a/RegExpSupport/testData/psi/test1.regexp +++ /dev/null @@ -1 +0,0 @@ -123 | 456 \ No newline at end of file diff --git a/RegExpSupport/testData/psi/test2.regexp b/RegExpSupport/testData/psi/test2.regexp deleted file mode 100644 index 3de5e496926d..000000000000 --- a/RegExpSupport/testData/psi/test2.regexp +++ /dev/null @@ -1 +0,0 @@ -1** \ No newline at end of file diff --git a/RegExpSupport/testData/psi/test3.regexp b/RegExpSupport/testData/psi/test3.regexp deleted file mode 100644 index 0134ceba1e06..000000000000 --- a/RegExpSupport/testData/psi/test3.regexp +++ /dev/null @@ -1 +0,0 @@ -(([hH][tT]{2}[pP]|[fF][tT][pP])://)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)* \ No newline at end of file diff --git a/RegExpSupport/testData/psi/test4.regexp b/RegExpSupport/testData/psi/test4.regexp deleted file mode 100644 index 0134ceba1e06..000000000000 --- a/RegExpSupport/testData/psi/test4.regexp +++ /dev/null @@ -1 +0,0 @@ -(([hH][tT]{2}[pP]|[fF][tT][pP])://)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)* \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java index 5858cb70c3c4..83647e82c66e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java @@ -29,6 +29,7 @@ import com.intellij.ide.ui.UISettings; import com.intellij.injected.editor.DocumentWindow; import com.intellij.injected.editor.EditorWindow; import com.intellij.lang.LangBundle; +import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; @@ -42,6 +43,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pair; +import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.psi.PsiDocumentManager; @@ -521,16 +523,8 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable public void perform(Caret caret) { EditorModificationUtil.deleteSelectedText(hostEditor); final int caretOffset = hostEditor.getCaretModel().getOffset(); - int lookupStart = Math.min(caretOffset, Math.max(caretOffset - prefix, 0)); - int len = hostEditor.getDocument().getTextLength(); - LOG.assertTrue(lookupStart >= 0 && lookupStart <= len, - "ls: " + lookupStart + " caret: " + caretOffset + " prefix:" + prefix + " doc: " + len); - LOG.assertTrue(caretOffset >= 0 && caretOffset <= len, "co: " + caretOffset + " doc: " + len); - - hostEditor.getDocument().replaceString(lookupStart, caretOffset, lookupString); - - int offset = lookupStart + lookupString.length(); + int offset = insertLookupInDocumentWindowIfNeeded(caretOffset, prefix, lookupString); hostEditor.getCaretModel().moveToOffset(offset); hostEditor.getSelectionModel().removeSelection(); } @@ -539,6 +533,37 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable myEditor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); } + private int insertLookupInDocumentWindowIfNeeded(int caretOffset, int prefix, String lookupString) { + DocumentWindow document = getInjectedDocument(caretOffset); + if (document == null) return insertLookupInDocument(caretOffset, myEditor.getDocument(), prefix, lookupString); + PsiFile file = PsiDocumentManager.getInstance(myProject).getPsiFile(document); + int offset = document.hostToInjected(caretOffset); + int lookupStart = Math.min(offset, Math.max(offset - prefix, 0)); + int diff = -1; + if (file != null) { + List ranges = InjectedLanguageManager.getInstance(myProject) + .intersectWithAllEditableFragments(file, TextRange.create(lookupStart, offset)); + if (!ranges.isEmpty()) { + diff = ranges.get(0).getStartOffset() - lookupStart; + if (ranges.size() == 1 && diff == 0) diff = -1; + } + } + if (diff == -1) return insertLookupInDocument(caretOffset, myEditor.getDocument(), prefix, lookupString); + return document.injectedToHost( + insertLookupInDocument(offset, document, prefix - diff, diff == 0 ? lookupString : lookupString.substring(diff)) + ); + } + + private static int insertLookupInDocument(int caretOffset, Document document, int prefix, String lookupString) { + int lookupStart = Math.min(caretOffset, Math.max(caretOffset - prefix, 0)); + int len = document.getTextLength(); + LOG.assertTrue(lookupStart >= 0 && lookupStart <= len, + "ls: " + lookupStart + " caret: " + caretOffset + " prefix:" + prefix + " doc: " + len); + LOG.assertTrue(caretOffset >= 0 && caretOffset <= len, "co: " + caretOffset + " doc: " + len); + document.replaceString(lookupStart, caretOffset, lookupString); + return lookupStart + lookupString.length(); + } + private String getCaseCorrectedLookupString(LookupElement item) { String lookupString = item.getLookupString(); if (item.isCaseSensitive()) { @@ -935,21 +960,28 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable return file.findElementAt(0); } - @Override - @NotNull - public Editor getEditor() { + @Nullable + private DocumentWindow getInjectedDocument(int offset) { PsiFile hostFile = PsiDocumentManager.getInstance(myProject).getPsiFile(myEditor.getDocument()); if (hostFile != null) { - int offset = myEditor.getCaretModel().getOffset(); // inspired by com.intellij.codeInsight.editorActions.TypedHandler.injectedEditorIfCharTypedIsSignificant() for (DocumentWindow documentWindow : InjectedLanguageUtil.getCachedInjectedDocuments(hostFile)) { if (documentWindow.isValid() && documentWindow.containsRange(offset, offset)) { - PsiFile injectedFile = PsiDocumentManager.getInstance(myProject).getPsiFile(documentWindow); - return InjectedLanguageUtil.getInjectedEditorForInjectedFile(myEditor, injectedFile); + return documentWindow; } } } + return null; + } + @Override + @NotNull + public Editor getEditor() { + DocumentWindow documentWindow = getInjectedDocument(myEditor.getCaretModel().getOffset()); + if (documentWindow != null) { + PsiFile injectedFile = PsiDocumentManager.getInstance(myProject).getPsiFile(documentWindow); + return InjectedLanguageUtil.getInjectedEditorForInjectedFile(myEditor, injectedFile); + } return myEditor; } diff --git a/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java b/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java index 37089c469cd6..ac636ee28c18 100644 --- a/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java +++ b/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java @@ -385,7 +385,7 @@ public class DocumentWindowImpl extends UserDataHolderBase implements Disposable } curRangeStart += hostRangeLength; curRangeStart += shred.getSuffix().length(); - if (curRangeStart >= endOffset) break; + if (curRangeStart > endOffset) break; } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index e8cf095ec031..422863472dde 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -392,10 +392,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi public void attributesChanged(@NotNull RangeHighlighterEx highlighter, boolean renderersChanged, boolean fontStyleChanged) { if (myDocument.isInBulkUpdate()) return; // bulkUpdateFinished() will repaint anything - if (myFoldingModel.isInBatchFoldingOperation()) { - throw new IllegalStateException("Highlighters shouldn't be added or removed during batch folding operation"); - } - if (myUseNewRendering && renderersChanged) { updateGutterSize(); } diff --git a/platform/platform-resources/src/brokenPlugins.txt b/platform/platform-resources/src/brokenPlugins.txt index 1d2302211944..c164c115e011 100644 --- a/platform/platform-resources/src/brokenPlugins.txt +++ b/platform/platform-resources/src/brokenPlugins.txt @@ -57,3 +57,4 @@ coffeescript-idea 0.1-1-gae5a RESTClient 1.2 krasa.nonProjectFilesUnlocker 1.0 1.1 com.chrisrm.idea.MaterialThemeUI 0.1.9 +com.hasintech.intellij.angularTemplates 1.0.2 1.1.2 diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/ResourceInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/ResourceInspection.java index 487e494865d5..cca3ce4d46fe 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/ResourceInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/resources/ResourceInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2008-2015 Bas Leijdekkers + * Copyright 2008-2016 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -112,7 +112,7 @@ public abstract class ResourceInspection extends BaseInspection { @Nullable public static PsiVariable getVariable(@NotNull PsiExpression expression) { - final PsiElement parent = ParenthesesUtils.getParentSkipParentheses(expression); + final PsiElement parent = getParent(expression); if (parent instanceof PsiAssignmentExpression) { final PsiAssignmentExpression assignment = (PsiAssignmentExpression)parent; final PsiExpression lhs = assignment.getLExpression(); @@ -134,6 +134,30 @@ public abstract class ResourceInspection extends BaseInspection { } } + private static PsiElement getParent(PsiExpression expression) { + PsiElement parent = ParenthesesUtils.getParentSkipParentheses(expression); + if (parent == null) { + return null; + } + PsiElement grandParent = parent.getParent(); + final PsiType type = expression.getType(); + if (type == null) { + return null; + } + while (parent instanceof PsiReferenceExpression && grandParent instanceof PsiMethodCallExpression) { + final PsiMethodCallExpression methodCallExpression = (PsiMethodCallExpression)grandParent; + if (!type.equals(methodCallExpression.getType())) { + return null; + } + parent = ParenthesesUtils.getParentSkipParentheses(grandParent); + if (parent == null) { + return null; + } + grandParent = parent.getParent(); + } + return parent; + } + private boolean isSafelyClosed(@Nullable PsiVariable variable, PsiElement context) { if (variable == null) { return false; diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/resources/AutoCloseableResourceInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/resources/AutoCloseableResourceInspectionTest.java index eb97fab7cf05..5cd596b4cf1f 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/resources/AutoCloseableResourceInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/resources/AutoCloseableResourceInspectionTest.java @@ -138,6 +138,19 @@ public class AutoCloseableResourceInspectionTest extends LightInspectionTestCase "}"); } + public void testScanner() { + doTest("import java.util.Scanner;" + + "class A {" + + " void a() throws java.io.IOException {" + + " try (Scanner scanner = new Scanner(\"\").useDelimiter(\"\\\\A\")) {" + + " String sconf = scanner.next();" + + " System.out.println(sconf);" + + " }" + + " }" + + "}" + + ""); + } + @Override protected LocalInspectionTool getInspection() { return new AutoCloseableResourceInspection(); @@ -147,10 +160,20 @@ public class AutoCloseableResourceInspectionTest extends LightInspectionTestCase protected String[] getEnvironmentClasses() { return new String[] { "package java.util;" + - "public final class Formatter implements Closeable {" + + "public final class Formatter implements java.io.Closeable {" + " public Formatter format(String format, Object ... args) {" + " return this;" + " }" + + "}", + "package java.util;" + + "public final class Scanner implements java.io.Closeable {" + + " public Scanner(String source) {}" + + " public Scanner useDelimiter(String pattern) {" + + " return this;" + + " }" + + " public String next() {" + + " return this;" + + " }" + "}" }; }

+ PsiElement(CHARACTER)('P') + PsiElement(CLASS_END)(']') + PsiElement(GROUP_END)(')') + RegExpCharImpl: <:> + PsiElement(CHARACTER)(':') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + RegExpCharImpl: <\/> + PsiElement(REDUNDANT_ESCAPE)('\/') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: + PsiElement(QUEST)('?') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + RegExpClosureImpl: <(\.[a-zA-Z0-9\-]+)*> + RegExpGroupImpl: <(\.[a-zA-Z0-9\-]+)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <\.[a-zA-Z0-9\-]+> + RegExpBranchImpl: <\.[a-zA-Z0-9\-]+> + RegExpCharImpl: <\.> + PsiElement(ESC_CHARACTER)('\.') + RegExpClosureImpl: <[a-zA-Z0-9\-]+> + RegExpClassImpl: <[a-zA-Z0-9\-]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('a') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('z') + RegExpCharRangeImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('A') + PsiElement(MINUS)('-') + RegExpCharImpl: + PsiElement(CHARACTER)('Z') + RegExpCharRangeImpl: <0-9> + RegExpCharImpl: <0> + PsiElement(CHARACTER)('0') + PsiElement(MINUS)('-') + RegExpCharImpl: <9> + PsiElement(CHARACTER)('9') + RegExpCharImpl: <\-> + PsiElement(ESC_CHARACTER)('\-') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <+> + PsiElement(PLUS)('+') + PsiElement(GROUP_END)(')') + RegExpQuantifierImpl: <*> + PsiElement(STAR)('*') \ No newline at end of file diff --git a/RegExpSupport/testData/psi/Complex3.txt b/RegExpSupport/testData/psi/Complex3.txt new file mode 100644 index 000000000000..9961bb7d8247 --- /dev/null +++ b/RegExpSupport/testData/psi/Complex3.txt @@ -0,0 +1,141 @@ +REGEXP_FILE + RegExpPatternImpl: <((?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*> + RegExpBranchImpl: <((?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*> + RegExpClosureImpl: <((?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)?> + RegExpGroupImpl: <((?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/)> + PsiElement(GROUP_BEGIN)('(') + RegExpPatternImpl: <(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpBranchImpl: <(?:[hH][tT]{2}[pP]|[fF][tT][pP]):\/\/> + RegExpGroupImpl: <(?:[hH][tT]{2}[pP]|[fF][tT][pP])> + PsiElement(NON_CAPT_GROUP)('(?:') + RegExpPatternImpl: <[hH][tT]{2}[pP]|[fF][tT][pP]> + RegExpBranchImpl: <[hH][tT]{2}[pP]> + RegExpClassImpl: <[hH]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('h') + RegExpCharImpl: + PsiElement(CHARACTER)('H') + PsiElement(CLASS_END)(']') + RegExpClosureImpl: <[tT]{2}> + RegExpClassImpl: <[tT]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: + PsiElement(CHARACTER)('t') + RegExpCharImpl: + PsiElement(CHARACTER)('T') + PsiElement(CLASS_END)(']') + RegExpQuantifierImpl: <{2}> + PsiElement(LBRACE)('{') + PsiElement(NUMBER)('2') + PsiElement(RBRACE)('}') + RegExpClassImpl: <[pP]> + PsiElement(CLASS_BEGIN)('[') + RegExpUnionImpl: + RegExpCharImpl: