mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-67335: XPath 2: function arguments of wrong non-number type are green
This commit is contained in:
+1
-1
@@ -102,7 +102,7 @@ public class FunctionDeclarationParsing {
|
||||
|
||||
XPathType r = null;
|
||||
if ("numeric".equals(type)) {
|
||||
r = XPathType.NUMBER;
|
||||
r = XPath2Type.NUMERIC;
|
||||
} else if (type.startsWith("xs:")) {
|
||||
final String base = type.substring(3);
|
||||
r = XPath2Type.fromName(new QName(XPath2Type.XMLSCHEMA_NS, base));
|
||||
|
||||
@@ -23,20 +23,46 @@ import org.intellij.lang.xpath.psi.XPathType;
|
||||
public class XPath2StaticTypeTest extends TestCase {
|
||||
|
||||
public void testStatic() throws Throwable {
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.ITEM, XPath2Type.STRING));
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.NODE, XPath2Type.ITEM));
|
||||
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.STRING, XPath2Type.ANYURI));
|
||||
assertFalse(XPathType.isAssignable(XPath2Type.NODE, XPath2Type.STRING));
|
||||
}
|
||||
|
||||
public void testBooleanAssignability() {
|
||||
// via "effective boolean value"
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.BOOLEAN, XPath2Type.STRING));
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.BOOLEAN, XPath2Type.NUMERIC));
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.BOOLEAN, XPath2Type.INTEGER));
|
||||
|
||||
assertFalse(XPathType.isAssignable(XPath2Type.BOOLEAN_STRICT, XPath2Type.STRING));
|
||||
}
|
||||
|
||||
public void testAnyAssignability() {
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.ITEM, XPath2Type.STRING));
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.ITEM, XPath2Type.BOOLEAN));
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.ITEM, XPath2Type.DATE));
|
||||
}
|
||||
|
||||
public void testNumericAssignability() {
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.FLOAT, XPath2Type.INTEGER));
|
||||
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.DOUBLE, XPath2Type.FLOAT));
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.DOUBLE, XPath2Type.INTEGER));
|
||||
|
||||
assertTrue(XPathType.isAssignable(XPath2SequenceType.create(XPath2Type.STRING), XPath2SequenceType.create(XPath2Type.STRING)));
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.FLOAT, XPath2Type.DOUBLE));
|
||||
|
||||
assertFalse(XPathType.isAssignable(XPath2Type.NUMERIC, XPath2Type.BOOLEAN));
|
||||
}
|
||||
|
||||
public void testStringAssignability() {
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.STRING, XPath2Type.ANYURI));
|
||||
assertTrue(XPathType.isAssignable(XPath2Type.STRING, XPath2SequenceType.create(XPath2Type.STRING)));
|
||||
|
||||
assertTrue(XPathType.isAssignable(XPath2SequenceType.create(XPath2Type.STRING), XPath2SequenceType.create(XPath2Type.STRING)));
|
||||
assertTrue(XPathType.isAssignable(XPath2SequenceType.create(XPath2Type.STRING), XPath2Type.STRING));
|
||||
|
||||
assertFalse(XPathType.isAssignable(XPath2SequenceType.create(XPath2Type.STRING), XPath2SequenceType.create(XPath2Type.INTEGER)));
|
||||
|
||||
assertFalse(XPathType.isAssignable(XPath2Type.STRING, XPath2Type.INTEGER));
|
||||
assertFalse(XPathType.isAssignable(XPath2Type.NODE, XPath2Type.STRING));
|
||||
|
||||
assertFalse(XPathType.isAssignable(XPath2SequenceType.create(XPath2Type.STRING), XPath2SequenceType.create(XPath2Type.INTEGER)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,6 +89,10 @@ public class XPath2TypeTest extends XPath2HighlightingTestBase {
|
||||
doXPathHighlighting();
|
||||
}
|
||||
|
||||
public void testToNumericIDEA67335() throws Throwable {
|
||||
doXPathHighlighting();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getSubPath() {
|
||||
return "xpath/highlighting/types";
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
ceiling(<error descr="Expected type 'xs:numeric?', got 'xs:boolean'">0 = 1</error>) + floor(<error descr="Expected type 'xs:numeric?', got 'xs:string'">'a'</error>) + round(.)
|
||||
Reference in New Issue
Block a user