mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-68394 XPath 2: wildcard in form of *:NCName in name test is red
This commit is contained in:
@@ -515,6 +515,21 @@ public class XPath2Parser extends XPathParser {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean parseWildcard(PsiBuilder builder) {
|
||||
builder.advanceLexer();
|
||||
|
||||
if (builder.getTokenType() == XPathTokenTypes.COL) {
|
||||
builder.advanceLexer();
|
||||
if (builder.getTokenType() != XPathTokenTypes.NCNAME) {
|
||||
builder.error("NCName expected");
|
||||
builder.advanceLexer();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TokenSet unionOps() {
|
||||
return XPath2TokenTypes.UNION_OPS;
|
||||
|
||||
@@ -453,10 +453,9 @@ public class XPathParser implements PsiParser {
|
||||
/**
|
||||
* [37] NameTest ::= '*' | NCName ':' '*' | QName
|
||||
*/
|
||||
private static boolean parseNameTest(PsiBuilder builder) {
|
||||
protected boolean parseNameTest(PsiBuilder builder) {
|
||||
if (builder.getTokenType() == XPathTokenTypes.STAR) {
|
||||
builder.advanceLexer();
|
||||
return true;
|
||||
return parseWildcard(builder);
|
||||
} else if (builder.getTokenType() == XPathTokenTypes.NCNAME) {
|
||||
builder.advanceLexer();
|
||||
|
||||
@@ -477,6 +476,11 @@ public class XPathParser implements PsiParser {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected boolean parseWildcard(PsiBuilder builder) {
|
||||
builder.advanceLexer();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* [5] AxisSpecifier ::= AxisName '::' | AbbreviatedAxisSpecifier
|
||||
* <p/>
|
||||
|
||||
@@ -67,6 +67,14 @@ public class XPath2ParsingTest extends TestBase {
|
||||
doXPathHighlighting();
|
||||
}
|
||||
|
||||
public void testWildcardNamespace() throws Throwable {
|
||||
doXPathHighlighting();
|
||||
}
|
||||
|
||||
public void testInvalidWildcard() throws Throwable {
|
||||
doXPathHighlighting();
|
||||
}
|
||||
|
||||
private void doXPathHighlighting(String... moreFiles) throws Throwable {
|
||||
final String name = getTestFileName();
|
||||
myFixture.testHighlighting(false, false, false, ArrayUtil.append(moreFiles, name + ".xpath2"));
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
*:<error descr="NCName expected">*</error>
|
||||
@@ -0,0 +1 @@
|
||||
./*:root/*:container[1]
|
||||
Reference in New Issue
Block a user