184 lines
4.0 KiB
JavaScript
184 lines
4.0 KiB
JavaScript
|
// 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");
|