[Bug 22732] [F+O 3.0] Function-lookup and the dynamic context

https://www.w3.org/Bugs/Public/show_bug.cgi?id=22732

--- Comment #6 from Michael Kay <mike@saxonica.com> ---
Copy of proposal in
https://lists.w3.org/Archives/Member/w3c-xsl-query/2013Jul/0086.html
(member-only)


ACTION A-574-01 MK concerning bug 22732 (function-lookup()) to propose detailed
changes to implement items (a) and (b) in comment #3. Before the F2F.

1. Change the properties of fn:function-lookup() to say focus-dependent instead
of focus-independent.

2. Change the first paragraph in the Rules of fn:function-lookup() (F+O 16.1.1)
to read:
A call to fn:function-lookup returns the function obtained by looking up the
expanded QName supplied as $name and the arity supplied as $arity in the named
functions component of the dynamic context (specifically, the dynamic context
of the call to fn:function-lookup).

Furthermore, if that function has an implementation-dependent implementation
(in practice: if it is a context-dependent built-in function), then the
implementation of the function returned by fn:function-lookup is associated
with the static and dynamic context of the call to fn:function-lookup.


3. Change the last paragraph of the Notes of fn:function-lookup() (F+O 16.1.1)

If the function that is retrieved by fn:function-lookup is *context-dependent*,
that is, if it has dependencies on the static or dynamic context of its caller,
the context that applies is the static and/or dynamic context of the call to
the fn:function-lookup function itself. The context thus effectively forms part
of the closure of the returned function. In practice this applies only where
the target of fn:function-lookup is a built-in function, because user-defined
functions never depend on the static or dynamic context of the function call.
The rule applies recursively, since fn:function-lookup is itself a
context-dependent built-in function.

These specifications do not define any circumstances in which the dynamic
context will contain functions that are not present in the static context, but
neither do they rule this out. For example an API  *may* provide the ability to
add functions to the dynamic context. Equally, these specifications do not
define any mechanism for creating context-dependent functions other than the
built-in context-depedendent functions, but neither do they rule out the
existence of such functions.

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

Received on Monday, 5 August 2013 01:51:33 UTC