| // Copyright 2013 the V8 project authors. All rights reserved. |
| // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions |
| // are met: |
| // 1. Redistributions of source code must retain the above copyright |
| // notice, this list of conditions and the following disclaimer. |
| // 2. Redistributions in binary form must reproduce the above copyright |
| // notice, this list of conditions and the following disclaimer in the |
| // documentation and/or other materials provided with the distribution. |
| // |
| // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY |
| // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
| // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| description("KDE JS Test"); |
| var myvar = 1; |
| |
| function varInFunction() { |
| return (myvar == undefined); |
| var myvar = 2; |
| } |
| |
| function varInVarList() { |
| return (myvar == undefined); |
| var a = 1, b = 0, myvar = 2; |
| } |
| |
| function varListOrder() { |
| var tmp = 0; |
| var i = ++tmp, j = ++tmp; |
| return j == 2; |
| } |
| |
| function varInBlock() { |
| return (myvar == undefined); |
| { |
| var myvar = 2; |
| } |
| } |
| |
| function varInIf() { |
| return (myvar == undefined); |
| if (false) |
| var myvar = 2; |
| } |
| |
| function varInElse() { |
| return (myvar == undefined); |
| if (true) { |
| } |
| else |
| var myvar = 2; |
| } |
| |
| function varInDoWhile() { |
| return (myvar == undefined); |
| do |
| var myvar = 2; |
| while (false); |
| } |
| |
| function varInWhile() { |
| return (myvar == undefined); |
| while (false) |
| var myvar = 2; |
| } |
| |
| function varInFor() { |
| return (myvar == undefined); |
| var i; |
| for (i = 0; i < 0; i++) |
| var myvar = 2; |
| } |
| |
| function varInForInitExpr() { |
| return (myvar == undefined); |
| for (var myvar = 2; i < 2; i++) { |
| } |
| } |
| |
| function varInForIn() { |
| return (myvar == undefined); |
| var o = new Object(); |
| var i; |
| for (i in o) |
| var myvar = 2; |
| } |
| |
| function varInWith() { |
| return (myvar == undefined); |
| with (String) |
| var myvar = 2; |
| } |
| |
| function varInCase() { |
| return (myvar == undefined); |
| switch (1) { |
| case 0: |
| var myvar = 2; |
| case 1: |
| } |
| } |
| |
| function varInLabel() { |
| return (myvar == undefined); |
| label1: |
| var myvar = 2; |
| } |
| |
| function varInCatch() { |
| return (myvar == undefined); |
| try { |
| } |
| catch (e) { |
| var myvar = 2; |
| } |
| } |
| |
| function varInFinally() { |
| return (myvar == undefined); |
| try { |
| } |
| finally { |
| var myvar = 2; |
| } |
| } |
| |
| function varInTry() { |
| return (myvar == undefined); |
| try { |
| var myvar = 2; |
| } |
| catch (e) { |
| } |
| finally { |
| } |
| } |
| |
| function varInSubFunction() { |
| return (myvar == 1); |
| function subfunction() { |
| var myvar = 2; |
| } |
| } |
| |
| if (!varGlobal) |
| var varGlobal = 1; |
| |
| shouldBe("varInFunction()","true"); |
| shouldBe("varInVarList()","true"); |
| shouldBe("varListOrder()","true"); |
| shouldBe("varInBlock()","true"); |
| shouldBe("varInIf()","true"); |
| shouldBe("varInElse()","true"); |
| shouldBe("varInDoWhile()","true"); |
| shouldBe("varInWhile()","true"); |
| shouldBe("varInFor()","true"); |
| shouldBe("varInForIn()","true"); |
| shouldBe("varInWith()","true"); |
| shouldBe("varInCase()","true"); |
| shouldBe("varInLabel()","true"); |
| shouldBe("varInCatch()","true"); |
| shouldBe("varInFinally()","true"); |
| shouldBe("varInTry()","true"); |
| shouldBe("varInForInitExpr()","true"); |
| shouldBe("varInSubFunction()","true"); |
| shouldBe("varGlobal", "1"); |
| |
| var overrideVar = 1; |
| var overrideVar; |
| shouldBe("overrideVar", "1"); |
| |
| var overrideVar2 = 1; |
| var overrideVar2 = 2; |
| shouldBe("overrideVar2", "2"); |