File indexing completed on 2024-04-28 15:28:39

0001 var myvar = 1;
0002 
0003 function varInFunction() {
0004   return (myvar == undefined);
0005   var myvar = 2;
0006 }
0007 
0008 function varInVarList() {
0009   return (myvar == undefined);
0010   var a = 1, b = 0, myvar = 2;
0011 }
0012 
0013 function varListOrder() {
0014   var tmp = 0;
0015   var i = ++tmp, j = ++tmp;
0016   return j == 2;
0017 }
0018 
0019 function varInBlock() {
0020   return (myvar == undefined);
0021   {
0022     var myvar = 2;
0023   }
0024 }
0025 
0026 function varInIf() {
0027   return (myvar == undefined);
0028   if (false)
0029     var myvar = 2;
0030 }
0031 
0032 function varInElse() {
0033   return (myvar == undefined);
0034   if (true) {
0035   }
0036   else
0037     var myvar = 2;
0038 }
0039 
0040 function varInDoWhile() {
0041   return (myvar == undefined);
0042   do
0043     var myvar = 2;
0044   while (false);
0045 }
0046 
0047 function varInWhile() {
0048   return (myvar == undefined);
0049   while (false)
0050     var myvar = 2;
0051 }
0052 
0053 function varInFor() {
0054   return (myvar == undefined);
0055   var i;
0056   for (i = 0; i < 0; i++)
0057     var myvar = 2;
0058 }
0059 
0060 function varInForInitExpr() {
0061   return (myvar == undefined);
0062   for (var myvar = 2; i < 2; i++) {
0063   }
0064 }
0065 
0066 function varInForIn() {
0067   return (myvar == undefined);
0068   var o = new Object();
0069   var i;
0070   for (i in o)
0071     var myvar = 2;
0072 }
0073 
0074 function varInWith() {
0075   return (myvar == undefined);
0076   with (String)
0077     var myvar = 2;
0078 }
0079 
0080 function varInCase() {
0081   return (myvar == undefined);
0082   switch (1) {
0083     case 0:
0084       var myvar = 2;
0085     case 1:
0086   }
0087 }
0088 
0089 function varInLabel() {
0090   return (myvar == undefined);
0091 label1:
0092   var myvar = 2;
0093 }
0094 
0095 function varInCatch() {
0096   return (myvar == undefined);
0097   try {
0098   }
0099   catch (e) {
0100     var myvar = 2;
0101   }
0102 }
0103 
0104 function varInFinally() {
0105   return (myvar == undefined);
0106   try {
0107   }
0108   finally {
0109     var myvar = 2;
0110   }
0111 }
0112 
0113 function varInTry() {
0114   return (myvar == undefined);
0115   try {
0116     var myvar = 2;
0117   }
0118   catch (e) {
0119   }
0120   finally {
0121   }
0122 }
0123 
0124 function varInSubFunction() {
0125   return (myvar == 1);
0126   function subfunction() {
0127     var myvar = 2;
0128   }
0129 }
0130 
0131 if (!varGlobal)
0132   var varGlobal = 1;
0133 
0134 shouldBe("varInFunction()","true");
0135 shouldBe("varInVarList()","true");
0136 shouldBe("varListOrder()","true");
0137 shouldBe("varInBlock()","true");
0138 shouldBe("varInIf()","true");
0139 shouldBe("varInElse()","true");
0140 shouldBe("varInDoWhile()","true");
0141 shouldBe("varInWhile()","true");
0142 shouldBe("varInFor()","true");
0143 shouldBe("varInForIn()","true");
0144 shouldBe("varInWith()","true");
0145 shouldBe("varInCase()","true");
0146 shouldBe("varInLabel()","true");
0147 shouldBe("varInCatch()","true");
0148 shouldBe("varInFinally()","true");
0149 shouldBe("varInTry()","true");
0150 shouldBe("varInForInitExpr()","true");
0151 shouldBe("varInSubFunction()","true");
0152 shouldBe("varGlobal", "1");
0153 
0154 var overrideVar = 1;
0155 var overrideVar;
0156 shouldBe("overrideVar", "1");
0157 
0158 var overrideVar2 = 1;
0159 var overrideVar2 = 2;
0160 shouldBe("overrideVar2", "2");