- From: <bugzilla@wiggum.w3.org>
- Date: Mon, 18 Jul 2005 23:53:28 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=1743 Summary: [FS] technical: 5.15 Function Declaration: a function can reference any function Product: XPath / XQuery / XSLT Version: Last Call drafts Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: Formal Semantics AssignedTo: simeon@us.ibm.com ReportedBy: jmdyck@ibiblio.org QAContact: public-qt-comments@w3.org 5.15 Function Declaration SCP / rule 1 / premise 3 "statEnv1 |- FunctionDecl : Typer" No, you can't do this in SCP, because (as you just said) STA of function bodies must wait until you have a statEnv.funcType that contains *all* function signatures. Instead, back in 5 / STA / rule 1, there should be a judgment that typechecks function bodies, something like: statEnv |- func-bodies-okay-in PrologDeclList1 which recurses down PrologDeclList1 and whenever it comes across a non-external FunctionDecl, performs STA on it (using a statEnv that knows all function signatures). One snag is that that statEnv will also know all declared variables, but a function is not allowed to reference variables that are declared after it in the Prolog. In that case, maybe STA of function-bodies *should* be done as part of SCP, but SCP should be preceded by a phase that collects just the function signatures. "Note that the static context processing is performing type checking of the function, as defined below." See above. "Note also that the type checking is done in the new environment in which the function declaration has been added which ensures that recursive calls are type-checked properly." It only handles self-recursion, not mutual recursion, not even just forward references.
Received on Monday, 18 July 2005 23:53:32 UTC