[xquery-talk] Castable as with maps/arrays

Ghislain Fourny gfourny at inf.ethz.ch
Tue Nov 10 08:22:13 PST 2020


Dear Mike,

Thanks a lot for your response and for extending the test suite accordingly.

I indeed missed "or if the value of E cannot be atomized" at first read, meaning that indeed map{} castable as anything should fail with an error.

Kind regards and have a nice evening,
Ghislain


> On 10 Nov 2020, at 11:54, Michael Kay <mike at saxonica.com> wrote:
> 
> The spec says (very carefully)
> 
> The expression E castable as T returns true if the result of evaluating E can be successfully cast into the target type T by using a cast expression; otherwise it returns false. If evaluation of E fails with a dynamic error or if the value of E cannot be atomized, the castable expression as a whole fails.
> 
> So if E is map{} then there should definitely be an error because map{} cannot be atomized. (It's less clear exactly what the error should be, or whether it can be reported statically).
> 
> If E is array{1,2} then I think the spec says the result should be false: evaluation of E does not fail, and it can be atomized, and it cannot be cast to xs:integer.
> 
> I will add some test cases to QT3.
> 
> Michael Kay
> Saxonica
> 
>> On 10 Nov 2020, at 10:33, Ghislain Fourny <gfourny at inf.ethz.ch> wrote:
>> 
>> Dear all,
>> 
>> I would like to check something on XQuery 3.1 and in particular the behavior of maps/arrays with "castable as" given the way they can and cannot be atomized.
>> 
>> Do you agree that
>> 
>>  array { 1, 2 } castable as xs:integer
>> 
>> and
>> 
>>  map {} castable as xs:integer
>> 
>> should both return false?
>> 
>> 
>> My first thought was to see what Saxon (I used 9.9.1.7) says (in oXygen) but the first query returns true in spite of
>> 
>>  array { 1, 2 } cast as xs:integer
>> 
>> throwing an error (as expected)
>> 
>> and the second query returns a null pointer exception (in all likelihood, this one is undesired).
>> 
>> Thanks a lot for confirming whether my understanding of the spec is correct!
>> 
>> Thanks and kind regards,
>> Ghislain
>> 
>> 
>> _______________________________________________
>> talk at x-query.com
>> http://x-query.com/mailman/listinfo/talk
> 




More information about the talk mailing list