[Bug 19504] New: [QT3TS] instanceof139


          Priority: P2
            Bug ID: 19504
          Assignee: oneil@saxonica.com
           Summary: [QT3TS] instanceof139
        QA Contact: public-qt-comments@w3.org
          Severity: normal
    Classification: Unclassified
                OS: Windows NT
          Reporter: tim@cbcl.co.uk
          Hardware: PC
            Status: NEW
           Version: Working drafts
         Component: XQuery 3 & XPath 3 Test Suite
           Product: XPath / XQuery / XSLT

The test instanceof139 expects false, but I think it should expect true.

   <test-case name="instanceof139" covers="sequence-type-relationships
       <description>Instance of with function types and union types. Note:
there is no
                    subtype relationship between union(A,B,C) and
       <created by="Michael Kay" on="2012-10-08"/>
       <environment ref="union-List-defined-Types"/>
       <dependency type="spec" value="XQ30+"/>
       <dependency type="feature" value="higherOrderFunctions"/>
         import schema namespace
         declare function local:f($a as s:approximateDate) as xs:boolean {
true() };
         local:f#1 instance of function(s:dateOrDateTime) as xs:boolean

In short, local:f#1 always returns boolean (thus the return typed match) and
can accept a date or dateTime (the union of which is s:dateOrDateTime).  here's
the detail.

local:f#1 is an instance of function(s:dateOrDateTime) as boolean if the
judgement subtype-itemtype(Ai, Bi) determines that the ItemType Ai is a subtype
of the ItemType Bi,  where

Ai = function(s:approximateDate) as boolean
Bi = type function(s:dateOrDateTime) as boolean

Ai is a subtype of Bi if and only if at least one of the following conditions

24. Bi is AnnotationsB function(Ba_1, Ba_2, ... Ba_N) as Br, Ai is AnnotationsA
function(Aa_1, Aa_2, ... Aa_M) as Ar, where [AnnotationsB] and [AnnotationsA]
are optional lists of one or more annotations; N (arity of Bi) equals M (arity
of Ai); subtype(Ar, Br); for values of I between 1 and N, subtype(Ba_I, Aa_I) ;
and subtype-assertions(AnnotationsA, AnnotationsB) .

Aa_1 = s:approximdateDate
Ar = boolean
Ba_1 = s:dateOrDateTime
Br = boolean

Clearly subtype(Ar, Br); = subtype(boolean, boolean) holds.

That leaves, subtype(s:dateOrDateTime, s:approximateDate).  This holds if: 

1.  s:dateOrDate and s:approximateDate are AtomicOrUnionTypes, and
derives-from(s:dateOrDate, s:approximateDate) returns true.


s:dateOrDateTime = xs:date | xs:dateTime
s:approximateDate = xs:date | xs:dateTime | xs:gYear | xs:gYearMonth

So derives-from(s:dateOrDateTime, s:approximateDate) must hold and thus the
expected result must be true.

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

Received on Friday, 12 October 2012 10:32:06 UTC