diff --git a/src/pugixml.cpp b/src/pugixml.cpp
index 7db62d0..484f34b 100644
--- a/src/pugixml.cpp
+++ b/src/pugixml.cpp
@@ -9621,6 +9621,7 @@ PUGI__NS_BEGIN
switch (_type)
{
case ast_func_position:
+ case ast_func_last:
return false;
case ast_string_constant:
diff --git a/tests/test_xpath_paths.cpp b/tests/test_xpath_paths.cpp
index c18acd2..43096bc 100644
--- a/tests/test_xpath_paths.cpp
+++ b/tests/test_xpath_paths.cpp
@@ -531,6 +531,12 @@ TEST_XML(xpath_paths_descendant_optimize, "")
+{
+ CHECK_XPATH_NODESET(doc, STR("//para[last()]")) % 6 % 7 % 8;
+ CHECK_XPATH_NODESET(doc, STR("//para[last() = 1]")) % 7;
+}
+
TEST_XML(xpath_paths_precision, "")
{
CHECK_XPATH_NODESET(doc, STR("//para[1]")) % 3;