RE: ACTION A-617-01 Jonathan to bring discussion of bug 29119 to the mailing list

> 
> But why is that said just for variable bindings, when there are other uses of
> SequenceType such as parameter types that should act the same way?  I
> would think this includes:
> 
> * Function parameter types (including inline, found in XPath)
> * Function return types  (including inline, found in XPath)
> * Treat as
> * Cast as

Exactly, the problem I tried to raise in the bug report was that of "binding" and "always raises", which seems like a special treatment of type errors involving xs:error.  

> 
> Castable is not a problem, it could always return false, ditto for instance of,
> typeswitch can simply not match.

Except for, surprisingly:

let $e as xs:error := xs:error(1)
return $e castable as xs:error

I think it is arguable whether this should return true or raise an error. A processor could detect that $e is of type xs:error, ignore the assignment and return true. Or is that an illegal optimization?

Another issue is with an XSD declaration like:

<xs:union>
    <xs:simpleType>
        <xs:restriction base="xs:int" />
    </xs:simpleType>
    <xs:simpleType>
        <xs:restriction base="xs:error"/>
    </xs:simpleType>
</xs:union>

A variable bound to a union type as this should, I think, return true for castable as and, possibly, instance of? And then it will throw when actually casting....

> 
> I can't remember who asked this text to be added in June 2013, we should
> probably check the decision record and make sure we understand the
> motivation.

The link was in my first reply: https://www.w3.org/Bugs/Public/show_bug.cgi?id=20634

Cheers,
Abel

Received on Tuesday, 29 September 2015 12:29:00 UTC