[Bug 1625] New: Static Typing Feature may find a type error that the dynamic evaluation would miss

http://www.w3.org/Bugs/Public/show_bug.cgi?id=1625

           Summary: Static Typing Feature may find a type error that the
                    dynamic evaluation would miss
           Product: XPath / XQuery / XSLT
           Version: Last Call drafts
          Platform: PC
        OS/Version: Windows 2000
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Formal Semantics
        AssignedTo: simeon@us.ibm.com
        ReportedBy: fred.zemke@oracle.com
         QAContact: public-qt-comments@w3.org


3.2.1 Processing model
Regarding the dynamic evaluation phase,
It says "While implementations are free to implement different
processing models, the [XPath/XQuery] static semantics relies on
the existence of a static type analysis phase that precedes any
access to the input data. Statically typed implementations are
required to find and report type errors during static analysis,
as specified in this document. Dynamically typed implementations
are required to find and report type errors during evaluation, but
are permitted to report them during static analysis."  This
paragraph gives the impression that, for a given [expression/query]
EQ, the set of type errors that might be found for EQ using
an implementation that supports the Static Typing Feature will
be precisely the same set of type errors that would be found
during dynamic execution if the implementation does not support
the Static Typing Feature.  However, XQuery has an example in
which a note asserts that the example will fail under Static
Typing Feature with a type error, but succeed in the dynamic
phase if there is no Static Typing Feature.  Specifically, the
Static Typing Feature requires the discovery of all potential
typing errors, for example, passing a value of type item()* to an
argument of type item()+, whereas the dynamic evaluation phase
will not look for this error; it will only look for an attempt
to pass the empty sequence to an argument of type item()+.  Thus
the set of type errors considered by the two phases is actually
quite different.  One looks for potential errors, the other looks
for actual errors.  This should be clarified here.

Received on Friday, 15 July 2005 01:20:51 UTC