This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
Test case map/put/put-003 returns a map and asserts: <assert-type>function(xs:string) as xs:integer*</assert-type> But the spec says in 2.5.5.8: "The function signature of the map, treated as a function, is always function(xs:anyAtomicType) as item()*, regardless of the actual types of the keys and values in the map. This means that a function item type with a more specific return type, such as function(xs:anyAtomicType) as xs:integer, does not match a map in the sense required to satisfy the instance of operator." So this assertion should be false.
Also affects: map-merge-003 map-entry-001
Changed these tests (map-put-003, map-merge-003, map-entry-001) to expect false for the offending assertions relating to the function signature. Also added new tests (map-put-002, map-merge-024, map-entry-007), adaptions of the above, which instead assert function signatures with return type "as item()*".
I just saw that the three new QT3TS test cases are using a "not" assertion. I did not find this assertion documented somewhere. Is it planned to include this assertion, or would it rather make sense to update the test cases?
I think this usage probably drifted across by accident from the XSLT 3.0 test suite, where it was found particularly useful for serialization tests: <not> <serialization-matches>standalone</serialization-matches> </not> which is hard to achieve any other way. But it's not needed for these particular tests. Of course, if we use it then it should be in the schema. Do you have any objection to adding it?
> Do you have any objection to adding it? I'd be fine with it. Thanks.
Schema has been fixed by Mike accordingly to comment 4. Marking bug as resolved.