From 1ed6d2102bc0a08648026ece8cc069fda592a6a2 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Mon, 30 Jan 2017 08:54:09 -0800 Subject: XPath: Improve error message for expressions like .[1] W3C specification does not allow predicates after abbreviated steps. Currently this results in parsing terminating at the step, which leads to confusing error messages like "Invalid query" or "Unmatched braces". --- src/pugixml.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 396061a..94bd8ae 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -11398,12 +11398,18 @@ PUGI__NS_BEGIN { _lexer.next(); + if (_lexer.current() == lex_open_square_brace) + return error("Predicates are not allowed after an abbreviated step"); + return alloc_node(ast_step, set, axis_self, nodetest_type_node, 0); } else if (_lexer.current() == lex_double_dot) { _lexer.next(); + if (_lexer.current() == lex_open_square_brace) + return error("Predicates are not allowed after an abbreviated step"); + return alloc_node(ast_step, set, axis_parent, nodetest_type_node, 0); } -- cgit v1.2.3