[Bug 5795] Static Typing: CVS: K2-Steps-2, K2-FunctionProlog-14

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





--- Comment #28 from Tim Mills <tim@cbcl.co.uk>  2008-07-30 12:34:43 ---
"The difference with e[false()] is that the sequence of rewrites never went via
error() to something else. Yes, arguably the processor should have tried harder
to check for error conditions before doing the rewrite, but it's hard to argue
against doing context-independent rewrites before starting to look at the
context."

For the query:

error()[928]

we normalize to:

let $fs:seq_7 as item()* := fn:error()
return fs:item-at($fs:seq_7, 928)

We then perform static type analysis which spots that the expression has type
empty.  In the original query, we necessarily look at the static context to get
the context item's type.  Once that's done, the only (context-independent)
rewrite is to replace an expression with type empty with ().  

I agree that it is hard for a processor to check for error conditions, since
the type system does not capture a difference between a function which, say,
returns an integer from one which may return an integer or raise an error.


-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Wednesday, 30 July 2008 12:35:17 UTC