mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
XPath: implement lang() and id() core functions (#34594)
XPath's `lang()` and `id()` functions were still unimplemented. Also: * Add WPT tests for `id()`. * Fix uniqueness check in `NodesetHelpers::document_order_unique`. * Tweak the AST a bit to make it clearer to express "no predicates". * Fix a parsing bug where "/" was attempted before "//", leaving the "//" branch as always unused. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #34593 - [x] There are tests for these changes --------- Signed-off-by: Ville Lindholm <ville@lindholm.dev>
This commit is contained in:
parent
1dfc14d2fb
commit
8cfb6e33fe
11 changed files with 276 additions and 61 deletions
|
@ -83,6 +83,22 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<T> Evaluatable for Option<T>
|
||||
where
|
||||
T: Evaluatable,
|
||||
{
|
||||
fn evaluate(&self, context: &EvaluationCtx) -> Result<Value, Error> {
|
||||
match self {
|
||||
Some(expr) => expr.evaluate(context),
|
||||
None => Ok(Value::Nodeset(vec![])),
|
||||
}
|
||||
}
|
||||
|
||||
fn is_primitive(&self) -> bool {
|
||||
self.as_ref().is_some_and(|t| T::is_primitive(t))
|
||||
}
|
||||
}
|
||||
|
||||
impl Evaluatable for Expr {
|
||||
fn evaluate(&self, context: &EvaluationCtx) -> Result<Value, Error> {
|
||||
match self {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue