- From: Chris Davis <davisc@iivip.com>
- Date: Fri, 23 Apr 2010 09:15:45 -0500
- To: www-voice@w3.org
- CC: Petr Kuba <kuba@optimsys.cz>
- Message-ID: <4BD1AB91.4020409@iivip.com>
Petr, thanks for the response. I don't see how any CCXML implementation can be passing this test case. Is yours passing? When you say: "When this condition is being evaluated there is no "id" in current (Transition) scope because this variable will be declared couple of lines later in <var>." that is incorrect. The declaration of id will be made in the current scope(transition), regardless of where it sits visually in the transition. It doesn't get "declared later" - ECMA declares it inside the transition scope, which is visible when the ECMA first runs the transition. If you comment out the var id declaration, then yes ECMA will see id from the parent scope. However - by declaring a var id in the new scope you are evaluating the local id value (undefined because the assignment has not taken place after the if) when ECMA runs inside the transition scope. I've attached an html file with a short javascipt that demonstrates this misunderstanding of ECMA scopes. Try it on Windows/Explorer, Linux/Mozilla etc, you will always get the output: show ECMA function scope test see? id is undefined...id=undefined Here is the textual content of the attachment: <html> <body> <pre> <script type="text/javascript"> document.write("show ECMA function scope test\n"); var id=2; function foo() { if(id==2) { document.write("this won't run"); var id = 3; } else { document.write("see? id is undefined...id="+id); } } foo(); </script> </pre> </body> </html> Regards, Chris Petr Kuba wrote: > Hello Chris, > > I believe that the test case is correct. It tests the parent scope > chain delegation model as described in the CCXML specification but it > doesn't expect "if" to open a new scope. > > Let's see the statement you find offending: > > <if cond="id==session.id"> > > When this condition is being evaluated there is no "id" in current > (Transition) scope because this variable will be declared couple of > lines later in <var>. Therefore searching continues in scopes CCXML, > Application and Session. The "id" variable is found in the Session > scope and therefore the condition is "true". > > You assume that the variable exists in the Transition scope and has > value 'undefined' but it is not correct. The variable doesn't exist at > the time when the condition above runs. > > > Regards, > Petr Kuba > -- Chris Davis Interact Incorporated R&D 512-502-9969x117
Attachments
- text/html attachment: ecma.html
Received on Friday, 23 April 2010 14:16:42 UTC