[Bug 29586] [XQ31] 2.5.6.2 The judgement subtype-itemtype(Ai, Bi)

https://www.w3.org/Bugs/Public/show_bug.cgi?id=29586

--- Comment #3 from Tim Mills <tim@cbcl.co.uk> ---
I'm unhappy that

map(k, Vm) 

is not a subtype of 

function(xs:anyAtomicType) as Vf, where Vm is a subtype of Vf.

and that

array(Va)

is not a subtype of

function(xs:integer) as Vf, where Vm is a subtype of Vf.

This stems from the text

"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.
However, the rules for function coercion mean that any map can be supplied as a
value in a context where such a type is the required type, and a type error
will only occur if an actual call on the map (treated as a function) returns a
value that is not an instance of the required return type."

This appears to prevent a processor from using static type analysis to avoid
unnecessary function coercion.  For example, I think this requires that

function() { 1 } instance of function() as xs:integer

returns false.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Wednesday, 27 April 2016 10:15:14 UTC