From f6988f276612a6df442a8cfc76833c3b56d15f2a Mon Sep 17 00:00:00 2001 From: Gunther Rademacher Date: Wed, 22 Apr 2026 17:46:24 +0200 Subject: [PATCH] make `fn:schema-type` return empty sequence for non-schema-types --- .../src/main/java/org/basex/query/func/fn/FnSchemaType.java | 3 ++- .../src/test/java/org/basex/query/func/FnModuleTest.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/basex-core/src/main/java/org/basex/query/func/fn/FnSchemaType.java b/basex-core/src/main/java/org/basex/query/func/fn/FnSchemaType.java index 84f6957cfe..fa5c8cbcdb 100644 --- a/basex-core/src/main/java/org/basex/query/func/fn/FnSchemaType.java +++ b/basex-core/src/main/java/org/basex/query/func/fn/FnSchemaType.java @@ -9,6 +9,7 @@ import org.basex.query.value.*; import org.basex.query.value.item.*; import org.basex.query.value.map.*; +import org.basex.query.value.seq.*; import org.basex.query.value.type.*; import org.basex.query.var.*; import org.basex.util.*; @@ -90,7 +91,7 @@ protected static Value annotate(final QueryContext qc, final InputInfo info, fin constructor = !type.oneOf(QNAME, NOTATION); } } else { - throw Util.notExpected(); + return Empty.VALUE; } final MapBuilder mb = new MapBuilder(); mb.put("name", name); diff --git a/basex-core/src/test/java/org/basex/query/func/FnModuleTest.java b/basex-core/src/test/java/org/basex/query/func/FnModuleTest.java index c9215787c1..ef6c3e7a6b 100644 --- a/basex-core/src/test/java/org/basex/query/func/FnModuleTest.java +++ b/basex-core/src/test/java/org/basex/query/func/FnModuleTest.java @@ -3142,6 +3142,8 @@ public final class FnModuleTest extends SandboxTest { @Test public void schemaType() { final Function func = SCHEMA_TYPE; + query(" declare type t as xs:integer; " + func.args(" #t"), ""); + query(func.args(" #fn:schema-type-record"), ""); query(func.args(" #xs:integer") + " ? name", "#integer"); query(func.args(" #xs:long") + " ? primitive-type() ? name", "#decimal"); query(func.args(" #xs:positiveInteger") + " ? base-type() ? name", "#nonNegativeInteger");