diff --git a/test/language/expressions/addition/S11.6.1_A2.4_T3.js b/test/language/expressions/addition/S11.6.1_A2.4_T3.js
index 186edf81c9ce780c5037fff2d9248bf3b6023bd5..3354e28b6f5fa22b68839d640bbc76525d7b00bc 100644
--- a/test/language/expressions/addition/S11.6.1_A2.4_T3.js
+++ b/test/language/expressions/addition/S11.6.1_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x + (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) + y !== 2) {
-  $ERROR('#2: (y = 1) + y === 2. Actual: ' + ((y = 1) + y));
-}
diff --git a/test/language/expressions/addition/S11.6.1_A2.4_T4.js b/test/language/expressions/addition/S11.6.1_A2.4_T4.js
new file mode 100644
index 0000000000000000000000000000000000000000..9e67f2cad40b3438a6d9e7345f828c6719733ab4
--- /dev/null
+++ b/test/language/expressions/addition/S11.6.1_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.6.1_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) + y !== 2) {
+  $ERROR('#1: (y = 1) + y === 2. Actual: ' + ((y = 1) + y));
+}
diff --git a/test/language/expressions/assignment/11.13.1-4-1.js b/test/language/expressions/assignment/11.13.1-4-1.js
index 6880dcf5470632adad542886b799e60be3253353..11288101f044600664e9ad19d9697f05992faad6 100644
--- a/test/language/expressions/assignment/11.13.1-4-1.js
+++ b/test/language/expressions/assignment/11.13.1-4-1.js
@@ -10,6 +10,7 @@ es5id: 11.13.1-4-1
 description: >
     simple assignment creates property on the global object if
     LeftHandSide is an unresolvable reference
+flags: [noStrict]
 includes:
     - runTestCase.js
     - fnGlobalObject.js
diff --git a/test/language/expressions/assignment/8.14.4-8-b_1.js b/test/language/expressions/assignment/8.14.4-8-b_1.js
index 68466814a4a5fc8b43447aacfff880ec70903b2e..04b5e94d4b8624bc77b3ca97272b3fc4db005a26 100644
--- a/test/language/expressions/assignment/8.14.4-8-b_1.js
+++ b/test/language/expressions/assignment/8.14.4-8-b_1.js
@@ -7,6 +7,7 @@
 /*---
 es5id: 8.14.4-8-b_1
 description: Non-writable property on a prototype written to.
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/assignment/S11.13.1_A3.1.js b/test/language/expressions/assignment/S11.13.1_A3.1.js
index 99f36c01f53b6e8bb0caa4bf39436709ca92444e..5ac63875af9033356cae383a93b5c8f8f200b340 100644
--- a/test/language/expressions/assignment/S11.13.1_A3.1.js
+++ b/test/language/expressions/assignment/S11.13.1_A3.1.js
@@ -14,7 +14,7 @@ if (x !== 1) {
 }
 
 //CHECK#2
-y = 1;
-if (y !== 1) {
-  $ERROR('#2: y = 1; y === 1. Actual: ' + (y));
+x = 1;
+if (x !== 1) {
+  $ERROR('#2: x = 1; x === 1. Actual: ' + (x));
 }
diff --git a/test/language/expressions/assignment/S11.13.1_A4_T1.js b/test/language/expressions/assignment/S11.13.1_A4_T1.js
index 6bb3846c1c538500ea22030d56eeaf568c3495b1..2ca8e54b8c86d68d94f738f4639ea9f5caa837bc 100644
--- a/test/language/expressions/assignment/S11.13.1_A4_T1.js
+++ b/test/language/expressions/assignment/S11.13.1_A4_T1.js
@@ -8,6 +8,7 @@ description: Syntax check
 ---*/
 
 //CHECK#1
+var x;
 x = x = 1;
 if (x !== 1) {
   $ERROR('#1: The expression x = x = 1 is the same x = (x = 1), not (x = x) = 1. Actual: ' + (x));
diff --git a/test/language/expressions/call/11.2.3-3_1.js b/test/language/expressions/call/11.2.3-3_1.js
index 25b66f4580ecd6eb1548bb44931a28d818b1736f..c1495dba644f25e9b518e60c4ff61d3d57ca0182 100644
--- a/test/language/expressions/call/11.2.3-3_1.js
+++ b/test/language/expressions/call/11.2.3-3_1.js
@@ -19,7 +19,7 @@ function testcase() {
     var o = { }; 
     try {
         o.bar( foo() );
-        throw new Exception("o.bar does not exist!");
+        $ERROR("o.bar does not exist!");
     } catch(e) {
         return (e instanceof TypeError) && (fooCalled===true);
     }
diff --git a/test/language/expressions/call/11.2.3-3_2.js b/test/language/expressions/call/11.2.3-3_2.js
index 43e58d5d2de8a0787ab6d2f0a6dcb830a426542f..92987c081e1cd145df24fb18504acf85183200f7 100644
--- a/test/language/expressions/call/11.2.3-3_2.js
+++ b/test/language/expressions/call/11.2.3-3_2.js
@@ -19,7 +19,7 @@ function testcase() {
     var o = { }; 
     try {
         o.bar( foo() );
-        throw new Exception("o.bar does not exist!");
+        $ERROR("o.bar does not exist!");
     } catch(e) {
         return (e instanceof TypeError) && (fooCalled===true);
     }
diff --git a/test/language/expressions/call/11.2.3-3_3.js b/test/language/expressions/call/11.2.3-3_3.js
index 2f3445f773bbbb3e50553ab078a72fb277af1b6e..51c43dd39964a1e228b245da309fd9a87b60eced 100644
--- a/test/language/expressions/call/11.2.3-3_3.js
+++ b/test/language/expressions/call/11.2.3-3_3.js
@@ -19,7 +19,7 @@ function testcase() {
     var o = { }; 
     try {
         o.bar.gar( foo() );
-        throw new Exception("o.bar does not exist!");
+        $ERROR("o.bar does not exist!");
     } catch(e) {
         return (e instanceof TypeError) && (fooCalled===false);
     }
diff --git a/test/language/expressions/call/11.2.3-3_4.js b/test/language/expressions/call/11.2.3-3_4.js
index 4b725d1855220b8fdf17993a9c2ca9673bb8d87e..328aac8ea041a95ccb62eac79fedf9f239ac5a4a 100644
--- a/test/language/expressions/call/11.2.3-3_4.js
+++ b/test/language/expressions/call/11.2.3-3_4.js
@@ -21,7 +21,7 @@ function testcase() {
                                      set: function(x) {this.barSetter = true; }});
     try {
         o.bar( foo() );
-        throw new Exception("o.bar does not exist!");
+        $ERROR("o.bar does not exist!");
     } catch(e) {
         return (e instanceof TypeError) && (fooCalled===true) && (o.barGetter===true) && (o.barSetter===undefined);
     }
diff --git a/test/language/expressions/call/11.2.3-3_5.js b/test/language/expressions/call/11.2.3-3_5.js
index 6bc71138bf0623a9292e8d3fdfb9019da126e225..93bc8709103be7a7b3b17a764b22d34961621e6d 100644
--- a/test/language/expressions/call/11.2.3-3_5.js
+++ b/test/language/expressions/call/11.2.3-3_5.js
@@ -19,7 +19,7 @@ function testcase() {
     var o = { }; 
     try {
         eval("o.bar( foo() );");
-        throw new Exception("o.bar does not exist!");
+        $ERROR("o.bar does not exist!");
     } catch(e) {
         return (e instanceof TypeError) && (fooCalled===true);
     }
diff --git a/test/language/expressions/call/11.2.3-3_6.js b/test/language/expressions/call/11.2.3-3_6.js
index e484b615e701e20697d1295b969beffb95ea4466..798e7bcdf3b1f79543dd1b46fff287773407a8b0 100644
--- a/test/language/expressions/call/11.2.3-3_6.js
+++ b/test/language/expressions/call/11.2.3-3_6.js
@@ -18,7 +18,7 @@ function testcase() {
                                      set: function(x) {this.barSetter = true; }});
     try {
         o.foo( o.bar );
-        throw new Exception("o.foo does not exist!");
+        $ERROR("o.foo does not exist!");
     } catch(e) {
         return (e instanceof TypeError) && (o.barGetter===true) && (o.barSetter===undefined);
     }
diff --git a/test/language/expressions/call/11.2.3-3_7.js b/test/language/expressions/call/11.2.3-3_7.js
index 8d5bc30abd8d8495c0444d962a0c9f2f0d851313..ad6743f51ce43382d6e7e5becf15cd252eb0d055 100644
--- a/test/language/expressions/call/11.2.3-3_7.js
+++ b/test/language/expressions/call/11.2.3-3_7.js
@@ -18,7 +18,7 @@ function testcase() {
                                      set: function(x) {this.barSetter = true; }});
     try {
         o.foo( o["bar"] );
-        throw new Exception("o.foo does not exist!");
+        $ERROR("o.foo does not exist!");
     } catch(e) {
         return (e instanceof TypeError) && (o.barGetter===true) && (o.barSetter===undefined);
     }
diff --git a/test/language/expressions/call/11.2.3-3_8.js b/test/language/expressions/call/11.2.3-3_8.js
index fd264aa859e196212e484026a02403fc1e402b1a..78d463a25a58f7e25a14110ad702249a0c3b1486 100644
--- a/test/language/expressions/call/11.2.3-3_8.js
+++ b/test/language/expressions/call/11.2.3-3_8.js
@@ -9,22 +9,18 @@ es5id: 11.2.3-3_8
 description: >
     Call arguments are evaluated before the check is made to see if
     the object is actually callable (global object)
+flags: [noStrict]
 includes:
     - runTestCase.js
-    - fnGlobalObject.js
 ---*/
 
 function testcase() {
-    if (this!==fnGlobalObject()) {
-        return;
-    }
-    
     var fooCalled = false;
     function foo(){ fooCalled = true; } 
     
     try {
         this.bar( foo() );
-        throw new Exception("this.bar does not exist!");
+        $ERROR("this.bar does not exist!");
     } catch(e) {
         return (e instanceof TypeError) && (fooCalled===true);
     }
diff --git a/test/language/expressions/call/S11.2.4_A1.4_T1.js b/test/language/expressions/call/S11.2.4_A1.4_T1.js
index a4eb249e2c2ed01e01a4caceeb5b80b813c3005d..56b2ec3086944bd9c3319f88983c8e89e478c9dd 100644
--- a/test/language/expressions/call/S11.2.4_A1.4_T1.js
+++ b/test/language/expressions/call/S11.2.4_A1.4_T1.js
@@ -10,6 +10,7 @@ description: >
     ArgumentList, in order,  followed at the end by
     GetValue(AssignmentExpression), which is the last item of  the new
     list
+flags: [noStrict]
 ---*/
 
 function f_arg() {
diff --git a/test/language/expressions/call/S11.2.4_A1.4_T3.js b/test/language/expressions/call/S11.2.4_A1.4_T3.js
index 72bf97a6407699978fc6673df6d377833e2b4c07..4559c344e15cbaff6d22c20f07fa9d636b681522 100644
--- a/test/language/expressions/call/S11.2.4_A1.4_T3.js
+++ b/test/language/expressions/call/S11.2.4_A1.4_T3.js
@@ -10,6 +10,7 @@ description: >
     ArgumentList, in order,  followed at the end by
     GetValue(AssignmentExpression), which is the last item of  the new
     list
+flags: [noStrict]
 ---*/
 
 function f_arg(x,y,z) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T1.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T1.js
index 8eabda129519dcb83c8c9c843b83d4d5d33c3914..e28f9082a0e2ecdeec36275461661209b60a98b8 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T1.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T1.js
@@ -15,6 +15,7 @@ if (x !== -1) {
 }
 
 //CHECK#2
+var y;
 y = 1;
 y *= -1;
 if (y !== -1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T10.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T10.js
index c0797660681078d49da7538dce70d781e0a2c9db..450a7a92b9a738d30ae81fcc2249e5649619e16d 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T10.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T10.js
@@ -15,6 +15,7 @@ if (x !== 1) {
 }
 
 //CHECK#2
+var y;
 y = 1;
 y ^= 0;
 if (y !== 1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T11.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T11.js
index f1ff9dc3846b6d80942056aa61d9a6432ca9e195..c4eaee24b188ee1e5196eab921ec9cabb1e3936e 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T11.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T11.js
@@ -15,6 +15,7 @@ if (x !== 1) {
 }
 
 //CHECK#2
+var y;
 y = 1;
 y |= 0;
 if (y !== 1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T2.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T2.js
index 1dadbb26470078cc61ecc6c01fb10f56ef66d27f..950ff818a0452d57efcb23bbcc286a50eee5413e 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T2.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T2.js
@@ -15,6 +15,7 @@ if (x !== -1) {
 }
 
 //CHECK#2
+var y;
 y = 1;
 y /= -1;
 if (y !== -1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T3.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T3.js
index 6bd03a441d5ee96bf0d6587f5464e0b02afedf7c..028c7ad40b72efbe3392a85b62abe76d0eb979e6 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T3.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T3.js
@@ -15,6 +15,7 @@ if (x !== -1) {
 }
 
 //CHECK#2
+var y;
 y = -1;
 y %= 2;
 if (y !== -1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T4.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T4.js
index e9cb914939077a451db257b0a292ae6f81cf3066..6bbbcccfa85dac6b861e94809f1b5cb38561f3dd 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T4.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T4.js
@@ -15,6 +15,7 @@ if (x !== 2) {
 }
 
 //CHECK#2
+var y;
 y = 1;
 y += 1;
 if (y !== 2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T5.js
index 43f30546bae0f13f63a5daa654089a40a1b24f9b..1ee5d6c0d59a271c8c45f3d523598120fe2c3c0f 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T5.js
@@ -15,6 +15,7 @@ if (x !== -2) {
 }
 
 //CHECK#2
+var y;
 y = -1;
 y -= 1;
 if (y !== -2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T6.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T6.js
index e935cdfd7825533a25d4cc19b0c750f0c47250f6..bd13b51ed632bdacb5fb71c8ad1484662e278e38 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T6.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T6.js
@@ -15,6 +15,7 @@ if (x !== 2) {
 }
 
 //CHECK#2
+var y;
 y = 1;
 y <<= 1;
 if (y !== 2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T7.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T7.js
index c29b2d04bd5d0c167cd780dc4d55dc6bbf556fce..c63dab71ca9ad47a7e2ca8439e816d7796d62a9c 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T7.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T7.js
@@ -15,6 +15,7 @@ if (x !== 2) {
 }
 
 //CHECK#2
+var y;
 y = 4;
 y >>= 1;
 if (y !== 2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T8.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T8.js
index dd27c8fc5d6620c01a7687e0f7b460565599fe5a..ecdea09107f0fef67104b9891757a96d470334a4 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T8.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T8.js
@@ -15,6 +15,7 @@ if (x !== 2) {
 }
 
 //CHECK#2
+var y;
 y = 4;
 y >>>= 1;
 if (y !== 2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T9.js b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T9.js
index f268113c0b31cc40a543505e206b3e367add4a87..f137347487c30f6d8866664e1311e15a012d5cbc 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.1_T9.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.1_T9.js
@@ -15,6 +15,7 @@ if (x !== 1) {
 }
 
 //CHECK#2
+var y;
 y = 1;
 y &= 1;
 if (y !== 1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T1.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T1.js
index 8829ba1de188da6eb4ae1c1fde159ac10d5618ab..2eee2021bcef1595e377186dcb3c9f66601cd907 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T1.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T1.js
@@ -15,6 +15,8 @@ if (x1 !== -1) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 1;
 y1 = (y *= -1);
 if (y1 !== -1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T10.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T10.js
index 04c77c809955bb9941e5603c9fc21215919189b1..2a0232c6663abc87091aa6f41160d735e601c367 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T10.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T10.js
@@ -15,6 +15,8 @@ if (x1 !== 1) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 1;
 y1 = (y ^= 0);
 if (y1 !== 1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T11.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T11.js
index 23a326b01b35419397f37d784dec405c64cc005f..5fc85731a4d7834b2d0f399fda414cbff7b5b93f 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T11.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T11.js
@@ -15,6 +15,8 @@ if (x1 !== 1) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 1;
 y1 = (y |= 0);
 if (y1 !== 1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T2.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T2.js
index bae64b71d3ef84f2b9b4391505fae71785ffba55..81eed82481363d913770f9e31f03c068e1cf1950 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T2.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T2.js
@@ -15,6 +15,8 @@ if (x1 !== -1) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 1;
 y1 = (y /= -1);
 if (y1 !== -1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T3.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T3.js
index 081264d7fa0a82406b15cacb16f55907b7058995..a7fd78678eefa0eb119aa2c76b7b358febcd678f 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T3.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T3.js
@@ -15,6 +15,8 @@ if (x1 !== -1) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = -1;
 y1 = (y %= 2);
 if (y1 !== -1) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T4.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T4.js
index e1ff3715ceb863ab224ae69643a5d01efb43f95a..b671506286c00f6832e8441b5030425e08214c32 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T4.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T4.js
@@ -15,6 +15,8 @@ if (x1 !== 2) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 1;
 y1 = (y += 1);
 if (y1 !== 2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T5.js
index de2cce7f585868ab232bcb9a81bf55fceaf6ec8c..2275b5a0c0c3cb2794f3b04e456df214d45346a9 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T5.js
@@ -15,6 +15,8 @@ if (x1 !== -2) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = -1;
 y1 = (y -= 1);
 if (y1 !== -2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T6.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T6.js
index 9406b51ec4e577981af6af2d7fb7339ad86d4f58..8214229331f75f2cee6c3cd85f39ef7a65cbd6de 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T6.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T6.js
@@ -15,6 +15,8 @@ if (x1 !== 2) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 1;
 y1 = (y <<= 1);
 if (y1 !== 2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T7.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T7.js
index 85c0691db6d4864e94cad1423d5b4a6c6e0feaea..a48fdfb6b79a45837073917782c1112d776b597c 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T7.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T7.js
@@ -15,6 +15,8 @@ if (x1 !== 2) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 4;
 y1 = (y >>= 1);
 if (y1 !== 2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T8.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T8.js
index 1ce1911c0ea6f5f417db602b34e2b51f16c23736..66356af16c1b1eaeb688a69489e04afa21648b3c 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T8.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T8.js
@@ -15,6 +15,8 @@ if (x1 !== 2) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 4;
 y1 = (y >>>= 1);
 if (y1 !== 2) {
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T9.js b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T9.js
index db8362f239414ae996cb64ea24638cbebf640137..9b5f3fbc1bd93912285eaaa3f06e067020a5b4a9 100644
--- a/test/language/expressions/compound-assignment/S11.13.2_A3.2_T9.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A3.2_T9.js
@@ -15,6 +15,8 @@ if (x1 !== 1) {
 }
 
 //CHECK#2
+var y;
+var y1;
 y = 1;
 y1 = (y &= 1);
 if (y1 !== 1) {
diff --git a/test/language/expressions/delete/11.4.1-0-1.js b/test/language/expressions/delete/11.4.1-0-1.js
index b1e924387c2ae7cde8f3dcc3db97ebbe43a31de9..7bcf99a86e36837f5de7b3627ebb94b57c576211 100644
--- a/test/language/expressions/delete/11.4.1-0-1.js
+++ b/test/language/expressions/delete/11.4.1-0-1.js
@@ -10,6 +10,7 @@ info: >
     language provides no way to directly exercise [[Delete]], the tests are placed here.
 es5id: 11.4.1-0-1
 description: delete operator as UnaryExpression
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-3-1.js b/test/language/expressions/delete/11.4.1-3-1.js
index 1da46b3767448038b47e3cde9e83a732d95a1c49..aac7f0af7da81a78edec5b2615a4249abadbcf78 100644
--- a/test/language/expressions/delete/11.4.1-3-1.js
+++ b/test/language/expressions/delete/11.4.1-3-1.js
@@ -9,6 +9,7 @@ es5id: 11.4.1-3-1
 description: >
     delete operator returns true when deleting an unresolvable
     reference
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-11.js b/test/language/expressions/delete/11.4.1-4.a-11.js
index 0cc425d62997fe1541f7b6d675ae4596e9b61df7..a4f4b01a3f96369b4a8dc62075162a7c3f838ded 100644
--- a/test/language/expressions/delete/11.4.1-4.a-11.js
+++ b/test/language/expressions/delete/11.4.1-4.a-11.js
@@ -12,6 +12,7 @@ es5id: 11.4.1-4.a-11
 description: >
     delete operator returns true on deleting arguments
     propterties(arguments.callee)
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-12.js b/test/language/expressions/delete/11.4.1-4.a-12.js
index b1b1e2ac43f9167da92af51e3658694b34decf50..cf708f893808b06cd441b8c4f0508419e20aa817 100644
--- a/test/language/expressions/delete/11.4.1-4.a-12.js
+++ b/test/language/expressions/delete/11.4.1-4.a-12.js
@@ -10,6 +10,7 @@ info: >
     language provides no way to directly exercise [[Delete]], the tests are placed here.
 es5id: 11.4.1-4.a-12
 description: delete operator returns false when deleting a property(length)
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-13.js b/test/language/expressions/delete/11.4.1-4.a-13.js
index 680341179f0b3459ff0433d598ac7c19f8736b69..69966f3cf88c0e57cb542cb40edf81eb24bd5055 100644
--- a/test/language/expressions/delete/11.4.1-4.a-13.js
+++ b/test/language/expressions/delete/11.4.1-4.a-13.js
@@ -10,6 +10,7 @@ info: >
     language provides no way to directly exercise [[Delete]], the tests are placed here.
 es5id: 11.4.1-4.a-13
 description: delete operator returns false when deleting Array object
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-16.js b/test/language/expressions/delete/11.4.1-4.a-16.js
index 0b716d7cadbe6bc7e1bd2ad50bc4eca04cedb833..bb324b7aaad37143ee58dbb178312b21be3be889 100644
--- a/test/language/expressions/delete/11.4.1-4.a-16.js
+++ b/test/language/expressions/delete/11.4.1-4.a-16.js
@@ -10,6 +10,7 @@ info: >
     language provides no way to directly exercise [[Delete]], the tests are placed here.
 es5id: 11.4.1-4.a-16
 description: delete operator returns false on deleting arguments object
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-3.js b/test/language/expressions/delete/11.4.1-4.a-3.js
index eea4bd84eceba73317b7876a72aabe54b89be388..1fc6659b6fda9355dc520c7c098837694a4dadbf 100644
--- a/test/language/expressions/delete/11.4.1-4.a-3.js
+++ b/test/language/expressions/delete/11.4.1-4.a-3.js
@@ -12,6 +12,7 @@ es5id: 11.4.1-4.a-3
 description: >
     delete operator returns false when deleting a non-configurable
     data property
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-4.js b/test/language/expressions/delete/11.4.1-4.a-4.js
index 736e70f44110b31fe75bee907a9669862f6a107d..d5bc35d08af18a860e861c0564781eee159d914a 100644
--- a/test/language/expressions/delete/11.4.1-4.a-4.js
+++ b/test/language/expressions/delete/11.4.1-4.a-4.js
@@ -12,6 +12,7 @@ es5id: 11.4.1-4.a-4
 description: >
     delete operator returns false when deleting a non-configurable
     data property (NaN)
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-5.js b/test/language/expressions/delete/11.4.1-4.a-5.js
index 723f10dce0b9da69ef9d0a1f16cc506a1da1ddd3..c53aa0a006c11771926c6ebdaa056bb114c379c2 100644
--- a/test/language/expressions/delete/11.4.1-4.a-5.js
+++ b/test/language/expressions/delete/11.4.1-4.a-5.js
@@ -12,6 +12,7 @@ es5id: 11.4.1-4.a-5
 description: >
     delete operator returns false when deleting the environment object
     inside 'with'
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-6.js b/test/language/expressions/delete/11.4.1-4.a-6.js
index c940630fdd8c695ba50845a7f36d5154fad8fa41..f49044f573a7477bf3ede0b9ad0fc68cda38c23e 100644
--- a/test/language/expressions/delete/11.4.1-4.a-6.js
+++ b/test/language/expressions/delete/11.4.1-4.a-6.js
@@ -10,6 +10,7 @@ info: >
     language provides no way to directly exercise [[Delete]], the tests are placed here.
 es5id: 11.4.1-4.a-6
 description: delete operator returns true when deleting a property inside 'with'
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-7.js b/test/language/expressions/delete/11.4.1-4.a-7.js
index 3379e544e35014135322e9bb0ced1137f9b3d619..e41da2ed49b633db4aff709e8706483dd8c50860 100644
--- a/test/language/expressions/delete/11.4.1-4.a-7.js
+++ b/test/language/expressions/delete/11.4.1-4.a-7.js
@@ -10,6 +10,7 @@ info: >
     language provides no way to directly exercise [[Delete]], the tests are placed here.
 es5id: 11.4.1-4.a-7
 description: delete operator inside 'eval'
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-8.js b/test/language/expressions/delete/11.4.1-4.a-8.js
index 4b28f9c84d9c19c0bc93e2ad0431e9e2434548d9..3492b07623deb9ce67caf3aa8f2e64159e8f18ed 100644
--- a/test/language/expressions/delete/11.4.1-4.a-8.js
+++ b/test/language/expressions/delete/11.4.1-4.a-8.js
@@ -10,6 +10,7 @@ info: >
     language provides no way to directly exercise [[Delete]], the tests are placed here.
 es5id: 11.4.1-4.a-8
 description: delete operator returns true for built-in objects (JSON)
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-4.a-9.js b/test/language/expressions/delete/11.4.1-4.a-9.js
index e690954c7473a6189af9c2b8a1432bfbf27322f9..0b6b234909531255108594317231873d67b55c96 100644
--- a/test/language/expressions/delete/11.4.1-4.a-9.js
+++ b/test/language/expressions/delete/11.4.1-4.a-9.js
@@ -12,6 +12,7 @@ es5id: 11.4.1-4.a-9
 description: >
     delete operator returns false when deleting a non-configurable
     data property (Math.LN2)
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-5-1.js b/test/language/expressions/delete/11.4.1-5-1.js
index cde7ae1ced0c6967ee540fba86a34b134d1aa53f..cdd7d2f1c29837cb147c6260573c656afcc7e327 100644
--- a/test/language/expressions/delete/11.4.1-5-1.js
+++ b/test/language/expressions/delete/11.4.1-5-1.js
@@ -9,6 +9,7 @@ es5id: 11.4.1-5-1
 description: >
     delete operator returns false when deleting a direct reference to
     a var
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-5-2.js b/test/language/expressions/delete/11.4.1-5-2.js
index bdfc64b396d3f1796d18f9f70320a97f0a209e43..fa560adc9fd1975061b9b994257284970f4fd2fb 100644
--- a/test/language/expressions/delete/11.4.1-5-2.js
+++ b/test/language/expressions/delete/11.4.1-5-2.js
@@ -9,6 +9,7 @@ es5id: 11.4.1-5-2
 description: >
     delete operator returns false when deleting a direct reference to
     a function argument
+flags: [noStrict]
 includes: [runTestCase.js]
 ---*/
 
diff --git a/test/language/expressions/delete/11.4.1-5-3.js b/test/language/expressions/delete/11.4.1-5-3.js
index bff19aad089ec6a0f536133c3c6b3a9296891988..1ded93765704f953ddbd0b8c6ef48319e74c77c8 100644
--- a/test/language/expressions/delete/11.4.1-5-3.js
+++ b/test/language/expressions/delete/11.4.1-5-3.js
@@ -9,6 +9,7 @@ es5id: 11.4.1-5-3
 description: >
     delete operator returns false when deleting a direct reference to
     a function name
+flags: [noStrict]
 includes:
     - runTestCase.js
     - fnExists.js
diff --git a/test/language/expressions/delete/S11.4.1_A2.2_T1.js b/test/language/expressions/delete/S11.4.1_A2.2_T1.js
index 333d1e05020362c0b6be58608e7c2c0094cc7609..17eb9cf20a4bfb977218991516ee33f5397a0b38 100644
--- a/test/language/expressions/delete/S11.4.1_A2.2_T1.js
+++ b/test/language/expressions/delete/S11.4.1_A2.2_T1.js
@@ -5,14 +5,10 @@
 info: If GetBase(x) doesn't have a property GetPropertyName(x), return true
 es5id: 11.4.1_A2.2_T1
 description: Checking undeclared variable case
+flags: [noStrict]
 ---*/
 
 //CHECK#1
 if (delete x !== true) {
   $ERROR('#1: delete x === true');
 }
-
-//CHECK#2
-if (delete this.x !== true) {
-  $ERROR('#2: delete this.x === true');
-}
diff --git a/test/language/expressions/delete/S11.4.1_A2.2_T3.js b/test/language/expressions/delete/S11.4.1_A2.2_T3.js
new file mode 100755
index 0000000000000000000000000000000000000000..cf63124c6645481e80f5e492422303d3ab3aae6b
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A2.2_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If GetBase(x) doesn't have a property GetPropertyName(x), return true
+es5id: 11.4.1_A2.2_T3
+description: Checking undeclared variable case
+---*/
+
+//CHECK#1
+if (delete this.x !== true) {
+  $ERROR('#1: delete this.x === true');
+}
diff --git a/test/language/expressions/delete/S11.4.1_A3.1.js b/test/language/expressions/delete/S11.4.1_A3.1.js
index d60cb66e21c0218e73e19ceb54a7dcc373032f8e..8a5fd33e89c1614538dc331f7a7e7fe9a19c42be 100644
--- a/test/language/expressions/delete/S11.4.1_A3.1.js
+++ b/test/language/expressions/delete/S11.4.1_A3.1.js
@@ -5,6 +5,7 @@
 info: If the property has the DontDelete attribute, return false
 es5id: 11.4.1_A3.1
 description: Checking declared variable
+flags: [noStrict]
 ---*/
 
 //CHECK#1
diff --git a/test/language/expressions/delete/S11.4.1_A3.2_T1.js b/test/language/expressions/delete/S11.4.1_A3.2_T1.js
new file mode 100755
index 0000000000000000000000000000000000000000..8953c007b2336b5daf6a163f3665e0b5294fa56c
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A3.2_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If the property doesn't have the DontDelete attribute, return true
+es5id: 11.4.1_A3.2_T1
+description: Checking declared variable
+flags: [noStrict]
+---*/
+
+//CHECK#1
+x = 1;
+if (delete x !== true) {
+  $ERROR('#1: x = 1; delete x === true');
+}
diff --git a/test/language/expressions/delete/S11.4.1_A3.2_T2.js b/test/language/expressions/delete/S11.4.1_A3.2_T2.js
new file mode 100755
index 0000000000000000000000000000000000000000..5a4771d6e17ebcf9ca3645402258e3ceb7764db1
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A3.2_T2.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If the property doesn't have the DontDelete attribute, return true
+es5id: 11.4.1_A3.2_T2
+description: Checking declared variable
+---*/
+
+//CHECK#1
+function MyFunction(){};
+MyFunction.prop = 1;
+if (delete MyFunction.prop !== true) {
+  $ERROR('#1: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop === true');
+}
diff --git a/test/language/expressions/delete/S11.4.1_A3.2.js b/test/language/expressions/delete/S11.4.1_A3.2_T3.js
similarity index 55%
rename from test/language/expressions/delete/S11.4.1_A3.2.js
rename to test/language/expressions/delete/S11.4.1_A3.2_T3.js
index d912b3d1a345b209798b8b15ba28db42b366f8a2..799354e5fa1b7a9018934e0d4f75497d4fe4710e 100644
--- a/test/language/expressions/delete/S11.4.1_A3.2.js
+++ b/test/language/expressions/delete/S11.4.1_A3.2_T3.js
@@ -3,27 +3,14 @@
 
 /*---
 info: If the property doesn't have the DontDelete attribute, return true
-es5id: 11.4.1_A3.2
+es5id: 11.4.1_A3.2_T3
 description: Checking declared variable
 ---*/
 
 //CHECK#1
-x = 1;
-if (delete x !== true) {
-  $ERROR('#1: x = 1; delete x === true');
-}
-
-//CHECK#2
-function MyFunction(){};
-MyFunction.prop = 1;
-if (delete MyFunction.prop !== true) {
-  $ERROR('#2: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop === true');
-}
-
-//CHECK#3
 function MyFunction(){};
 var MyObject = new MyFunction();
 MyObject.prop = 1;
 if (delete MyObject.prop !== true) {
-  $ERROR('#3: function MyFunction(){}; var MyObject = new MyFunction(); MyFunction.prop = 1; delete MyObject.prop === true');
+  $ERROR('#1: function MyFunction(){}; var MyObject = new MyFunction(); MyFunction.prop = 1; delete MyObject.prop === true');
 }
diff --git a/test/language/expressions/delete/S11.4.1_A3.3.js b/test/language/expressions/delete/S11.4.1_A3.3.js
deleted file mode 100644
index 913e346834a0c32e08cc0c3c40a00d79aa43a096..0000000000000000000000000000000000000000
--- a/test/language/expressions/delete/S11.4.1_A3.3.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2009 the Sputnik authors.  All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-info: If the property doesn't have the DontDelete attribute, remove the property
-es5id: 11.4.1_A3.3
-description: Checking declared variable
----*/
-
-//CHECK#1
-try {
-  x = 1;
-  delete x;
-  x;    
-  $ERROR('#1: x = 1; delete x; x is not exist');
-} catch (e) {
-  if (e instanceof ReferenceError !== true) {
-    $ERROR('#1: x = 1; delete x; x is not exist');
-  }
-}
-
-
-//CHECK#2
-function MyFunction(){};
-MyFunction.prop = 1;
-delete MyFunction.prop;
-if (MyFunction.prop !== undefined) {
-  $ERROR('#2: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop; MyFunction.prop === undefined. Actual: ' + (MyFunction.prop));
-
-}
-
-//CHECK#3
-function MyFunction(){};
-var MyObjectVar = new MyFunction();
-MyObjectVar.prop = 1;
-delete MyObjectVar.prop;
-if (MyObjectVar.prop !== undefined) {
-  $ERROR('#3: function MyFunction(){}; var MyObjectVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectVar.prop; MyObjectVar.prop === undefined. Actual: ' + (MyObjectVar.prop));
-}
-
-//CHECK#4
-if (delete MyObjectVar !== false) {
-  $ERROR('#4: function MyFunction(){}; var MyObjectVar = new MyFunction(); delete MyObjectVar === false');
-}
-
-//CHECK#5
-function MyFunction(){};
-MyObjectNotVar = new MyFunction();
-MyObjectNotVar.prop = 1;
-delete MyObjectNotVar.prop;
-if (MyObjectNotVar.prop !== undefined) {
-  $ERROR('#5: function MyFunction(){}; MyObjectNotVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectNotVar.prop; MyObjectNotVar.prop === undefined. Actual: ' + (MyObjectNotVar.prop));
-}
-
-//CHECK#6
-if (delete MyObjectNotVar !== true) {
-  $ERROR('#6: function MyFunction(){}; var MyObjectNotVar = new MyFunction(); delete MyObjectNotVar === true');
-}
diff --git a/test/language/expressions/delete/S11.4.1_A3.3_T1.js b/test/language/expressions/delete/S11.4.1_A3.3_T1.js
new file mode 100644
index 0000000000000000000000000000000000000000..99e06448566f046ce16d57f0ffe42eded18362e0
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A3.3_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If the property doesn't have the DontDelete attribute, remove the property
+es5id: 11.4.1_A3.3_T1
+description: Checking declared variable
+flags: [noStrict]
+---*/
+
+//CHECK#1
+try {
+  x = 1;
+  delete x;
+  x;
+  $ERROR('#1: x = 1; delete x; x is not exist');
+} catch (e) {
+  if (e instanceof ReferenceError !== true) {
+    $ERROR('#1: x = 1; delete x; x is not exist');
+  }
+}
diff --git a/test/language/expressions/delete/S11.4.1_A3.3_T2.js b/test/language/expressions/delete/S11.4.1_A3.3_T2.js
new file mode 100755
index 0000000000000000000000000000000000000000..fa66d738f1c1b5293fcb3e56fc05b25ea02c4c34
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A3.3_T2.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If the property doesn't have the DontDelete attribute, remove the property
+es5id: 11.4.1_A3.3_T2
+description: Checking declared variable
+---*/
+
+//CHECK#1
+function MyFunction(){};
+MyFunction.prop = 1;
+delete MyFunction.prop;
+if (MyFunction.prop !== undefined) {
+  $ERROR('#1: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop; MyFunction.prop === undefined. Actual: ' + (MyFunction.prop));
+
+}
diff --git a/test/language/expressions/delete/S11.4.1_A3.3_T3.js b/test/language/expressions/delete/S11.4.1_A3.3_T3.js
new file mode 100755
index 0000000000000000000000000000000000000000..23b019b356984fa1cb988bebaf238c7f71e93431
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A3.3_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If the property doesn't have the DontDelete attribute, remove the property
+es5id: 11.4.1_A3.3_T3
+description: Checking declared variable
+---*/
+
+//CHECK#1
+function MyFunction(){};
+var MyObjectVar = new MyFunction();
+MyObjectVar.prop = 1;
+delete MyObjectVar.prop;
+if (MyObjectVar.prop !== undefined) {
+  $ERROR('#1: function MyFunction(){}; var MyObjectVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectVar.prop; MyObjectVar.prop === undefined. Actual: ' + (MyObjectVar.prop));
+}
diff --git a/test/language/expressions/delete/S11.4.1_A3.3_T4.js b/test/language/expressions/delete/S11.4.1_A3.3_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..2eaf5fb53083a038d39c982b4ac7575a64155873
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A3.3_T4.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If the property doesn't have the DontDelete attribute, remove the property
+es5id: 11.4.1_A3.3_T4
+description: Checking declared variable
+flags: [noStrict]
+---*/
+
+//CHECK#1
+function MyFunction(){};
+var MyObjectVar = new MyFunction();
+if (delete MyObjectVar !== false) {
+  $ERROR('#1: function MyFunction(){}; var MyObjectVar = new MyFunction(); delete MyObjectVar === false');
+}
diff --git a/test/language/expressions/delete/S11.4.1_A3.3_T5.js b/test/language/expressions/delete/S11.4.1_A3.3_T5.js
new file mode 100755
index 0000000000000000000000000000000000000000..fc537b309faa400350402834f086f0ef7280f4a4
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A3.3_T5.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If the property doesn't have the DontDelete attribute, remove the property
+es5id: 11.4.1_A3.3_T5
+description: Checking declared variable
+flags: [noStrict]
+---*/
+
+//CHECK#1
+function MyFunction(){};
+MyObjectNotVar = new MyFunction();
+MyObjectNotVar.prop = 1;
+delete MyObjectNotVar.prop;
+if (MyObjectNotVar.prop !== undefined) {
+  $ERROR('#1: function MyFunction(){}; MyObjectNotVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectNotVar.prop; MyObjectNotVar.prop === undefined. Actual: ' + (MyObjectNotVar.prop));
+}
diff --git a/test/language/expressions/delete/S11.4.1_A3.3_T6.js b/test/language/expressions/delete/S11.4.1_A3.3_T6.js
new file mode 100755
index 0000000000000000000000000000000000000000..119a8670785829a521aa6aa7aa126c8b6e77f911
--- /dev/null
+++ b/test/language/expressions/delete/S11.4.1_A3.3_T6.js
@@ -0,0 +1,16 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: If the property doesn't have the DontDelete attribute, remove the property
+es5id: 11.4.1_A3.3_T6
+description: Checking declared variable
+flags: [noStrict]
+---*/
+
+//CHECK#1
+function MyFunction(){};
+var MyObjectVar = new MyFunction();
+if (delete MyObjectNotVar !== true) {
+  $ERROR('#1: function MyFunction(){}; var MyObjectNotVar = new MyFunction(); delete MyObjectNotVar === true');
+}
diff --git a/test/language/expressions/delete/S11.4.1_A4.js b/test/language/expressions/delete/S11.4.1_A4.js
index cb2ee1a7a880baf95a5224bed770ef6ff10ddcfb..674fe6b86606697b1a4daf9cd23e053501f82aa9 100644
--- a/test/language/expressions/delete/S11.4.1_A4.js
+++ b/test/language/expressions/delete/S11.4.1_A4.js
@@ -7,6 +7,7 @@ info: >
     the object
 es5id: 11.4.1_A4
 description: Checking two reference by one object
+flags: [noStrict]
 ---*/
 
 //CHECK#1
diff --git a/test/language/expressions/division/S11.5.2_A2.4_T3.js b/test/language/expressions/division/S11.5.2_A2.4_T3.js
index 65f9e436f9fb9f880cd65552767e99d4bb8821e6..e03ab67521d45105d6233987ea34e6b44708e37f 100644
--- a/test/language/expressions/division/S11.5.2_A2.4_T3.js
+++ b/test/language/expressions/division/S11.5.2_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x / (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) / y !== 1) {
-  $ERROR('#2: (y = 1) / y === 1. Actual: ' + ((y = 1) / y));
-}
diff --git a/test/language/expressions/division/S11.5.2_A2.4_T4.js b/test/language/expressions/division/S11.5.2_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..ea0aa897ee51ffab9095cc2808f549b5a107755b
--- /dev/null
+++ b/test/language/expressions/division/S11.5.2_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.5.2_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) / y !== 1) {
+  $ERROR('#1: (y = 1) / y === 1. Actual: ' + ((y = 1) / y));
+}
diff --git a/test/language/expressions/does-not-equals/S11.9.2_A2.4_T3.js b/test/language/expressions/does-not-equals/S11.9.2_A2.4_T3.js
index 39496dd98eb3605d9f96b6cb4dc1b96669139229..464c3074d4b12e13a67c6fccb77f5a9a613ad5b3 100644
--- a/test/language/expressions/does-not-equals/S11.9.2_A2.4_T3.js
+++ b/test/language/expressions/does-not-equals/S11.9.2_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x != (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if (((y = 1) != y) !== false) {
-  $ERROR('#2: ((y = 1) != y) === false');
-}
diff --git a/test/language/expressions/does-not-equals/S11.9.2_A2.4_T4.js b/test/language/expressions/does-not-equals/S11.9.2_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..b3625e66f0d94866c3492a1c0687e273820b6839
--- /dev/null
+++ b/test/language/expressions/does-not-equals/S11.9.2_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.9.2_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if (((y = 1) != y) !== false) {
+  $ERROR('#1: ((y = 1) != y) === false');
+}
diff --git a/test/language/expressions/equals/S11.9.1_A2.4_T3.js b/test/language/expressions/equals/S11.9.1_A2.4_T3.js
index 799ef11899542dfbeb0d9d1cdd4d0685248436ce..6cb93317eae0be315c98065caf1fe28ad6076fd5 100644
--- a/test/language/expressions/equals/S11.9.1_A2.4_T3.js
+++ b/test/language/expressions/equals/S11.9.1_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x == (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if (((y = 1) == y) !== true) {
-  $ERROR('#2: ((y = 1) == y) === true');
-}
diff --git a/test/language/expressions/equals/S11.9.1_A2.4_T4.js b/test/language/expressions/equals/S11.9.1_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..2629103b9e9232d12290d1ba33947d42a0bc457a
--- /dev/null
+++ b/test/language/expressions/equals/S11.9.1_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.9.1_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if (((y = 1) == y) !== true) {
+  $ERROR('#1: ((y = 1) == y) === true');
+}
diff --git a/test/language/expressions/greater-than-or-equal/S11.8.4_A2.4_T3.js b/test/language/expressions/greater-than-or-equal/S11.8.4_A2.4_T3.js
index c3dac2a02c16c9230f966ec9e0398e0eb4f026ff..2f747de988af8a2d5534fcb38c8bbeba14efab25 100644
--- a/test/language/expressions/greater-than-or-equal/S11.8.4_A2.4_T3.js
+++ b/test/language/expressions/greater-than-or-equal/S11.8.4_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x >= (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) >= y !== true) {
-  $ERROR('#2: (y = 1) >= y === true');
-}
diff --git a/test/language/expressions/greater-than-or-equal/S11.8.4_A2.4_T4.js b/test/language/expressions/greater-than-or-equal/S11.8.4_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..b153180fb6b68cde98423158f68a7ba551ed6227
--- /dev/null
+++ b/test/language/expressions/greater-than-or-equal/S11.8.4_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.8.4_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) >= y !== true) {
+  $ERROR('#1: (y = 1) >= y === true');
+}
diff --git a/test/language/expressions/greater-than/S11.8.2_A2.4_T3.js b/test/language/expressions/greater-than/S11.8.2_A2.4_T3.js
index 76bac70103ae42e37058c23c8c6f158e2ae8d3d7..146b858db2995852186893ae4fc53b5e7b5aff2e 100644
--- a/test/language/expressions/greater-than/S11.8.2_A2.4_T3.js
+++ b/test/language/expressions/greater-than/S11.8.2_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x > (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) > y !== false) {
-  $ERROR('#2: (y = 1) > y === false');
-}
diff --git a/test/language/expressions/greater-than/S11.8.2_A2.4_T4.js b/test/language/expressions/greater-than/S11.8.2_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..d3b5fafab5ea4ce36f5e00cdc7ea504b038be4d4
--- /dev/null
+++ b/test/language/expressions/greater-than/S11.8.2_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.8.2_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) > y !== false) {
+  $ERROR('#1: (y = 1) > y === false');
+}
diff --git a/test/language/expressions/grouping/S11.1.6_A2.js b/test/language/expressions/grouping/S11.1.6_A2_T1.js
old mode 100644
new mode 100755
similarity index 68%
rename from test/language/expressions/grouping/S11.1.6_A2.js
rename to test/language/expressions/grouping/S11.1.6_A2_T1.js
index eb6bd364ffffcdd94abe40c808943d16907e6f4a..4d70a0b2e8613a1b085d43e4c8028fd54d0321b5
--- a/test/language/expressions/grouping/S11.1.6_A2.js
+++ b/test/language/expressions/grouping/S11.1.6_A2_T1.js
@@ -5,29 +5,24 @@
 info: >
     "This" operator doesn't use GetValue. The operators "delete" and "typeof"
     can be applied to parenthesised expressions
-es5id: 11.1.6_A2
+es5id: 11.1.6_A2_T1
 description: >
     Applying "delete" and "typeof" operators to an undefined variable
     and a property of an object
 ---*/
 
 //CHECK#1
-if (delete (x) !== true) {
-  $ERROR('#1: delete (x) === true');
-}
-
-//CHECK#2
 if (typeof (x) !== "undefined") {
-  $ERROR('#2: typeof (x) === "undefined". Actual: ' + (typeof (x)));
+  $ERROR('#1: typeof (x) === "undefined". Actual: ' + (typeof (x)));
 }
 
 var object = {};
-//CHECK#3
+//CHECK#2
 if (delete (object.prop) !== true) {
-  $ERROR('#3: var object = {}; delete (object.prop) === true');
+  $ERROR('#2: var object = {}; delete (object.prop) === true');
 }
 
-//CHECK#4
+//CHECK#3
 if (typeof (object.prop) !== "undefined") {
-  $ERROR('#4: var object = {}; typeof (object.prop) === "undefined". Actual: ' + (typeof (object.prop)));
+  $ERROR('#3: var object = {}; typeof (object.prop) === "undefined". Actual: ' + (typeof (object.prop)));
 }
diff --git a/test/language/expressions/grouping/S11.1.6_A2_T2.js b/test/language/expressions/grouping/S11.1.6_A2_T2.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8b06c859dc068a88a2777a28827152bcf696322
--- /dev/null
+++ b/test/language/expressions/grouping/S11.1.6_A2_T2.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: >
+    "This" operator doesn't use GetValue. The operators "delete" and "typeof"
+    can be applied to parenthesised expressions
+es5id: 11.1.6_A2_T2
+description: >
+    Applying "delete" operator to an undefined variable
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if (delete (x) !== true) {
+  $ERROR('#1: delete (x) === true');
+}
diff --git a/test/language/expressions/grouping/S11.1.6_A3_T5.js b/test/language/expressions/grouping/S11.1.6_A3_T5.js
index 8090be52e2169beb8f298f09d1b9117c9aa9fb11..9f0e0ada1dec3c4ef8d5d2b7221218744ffcdf6c 100644
--- a/test/language/expressions/grouping/S11.1.6_A3_T5.js
+++ b/test/language/expressions/grouping/S11.1.6_A3_T5.js
@@ -8,6 +8,7 @@ description: Using grouping operator in declaration of variables
 ---*/
 
 //CHECK#1
+var x;
 (x) = 1;
 if (x !== 1) {
   $ERROR('#1: (x) = 1; x === 1. Actual: ' + (x));
diff --git a/test/language/expressions/grouping/S11.1.6_A3_T6.js b/test/language/expressions/grouping/S11.1.6_A3_T6.js
index d8c0f41ed8297f6157522c4bb95e764397026683..9aac19ada546ea05f49f173ce09921a4b6ce134c 100644
--- a/test/language/expressions/grouping/S11.1.6_A3_T6.js
+++ b/test/language/expressions/grouping/S11.1.6_A3_T6.js
@@ -4,15 +4,11 @@
 /*---
 info: "\"This\" operator only evaluates Expression"
 es5id: 11.1.6_A3_T6
-description: Applying grouping operator to delete and typeof operators
+description: Applying grouping operator to delete operator
+flags: [noStrict]
 ---*/
 
 //CHECK#1
 if (delete (x) !== true) {
   $ERROR('#1: delete (x) === true');
 }
-
-//CHECK#2
-if (typeof (x) !== "undefined") {
-  $ERROR('#2: typeof (x) === "undefined". Actual: ' + (typeof (x)));
-}
diff --git a/test/language/expressions/grouping/S11.1.6_A3_T7.js b/test/language/expressions/grouping/S11.1.6_A3_T7.js
new file mode 100755
index 0000000000000000000000000000000000000000..509cc267ccfb93aca9f183b93dc852559ac686eb
--- /dev/null
+++ b/test/language/expressions/grouping/S11.1.6_A3_T7.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: "\"This\" operator only evaluates Expression"
+es5id: 11.1.6_A3_T7
+description: Applying grouping operator to typeof operator
+---*/
+
+//CHECK#1
+if (typeof (x) !== "undefined") {
+  $ERROR('#1: typeof (x) === "undefined". Actual: ' + (typeof (x)));
+}
diff --git a/test/language/expressions/in/S11.8.7_A2.4_T3.js b/test/language/expressions/in/S11.8.7_A2.4_T3.js
index 497a9d32be527c7b8ed09e5bae8865350148a871..cfae8d8956c7f2e373cd09ef6e04eead88c2d076 100644
--- a/test/language/expressions/in/S11.8.7_A2.4_T3.js
+++ b/test/language/expressions/in/S11.8.7_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: max_value in (max_value = "MAX_VALUE", Number) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((NUMBER = Number, "MAX_VALUE") in NUMBER !== true) {
-  $ERROR('#2: (NUMBER = Number, "MAX_VALUE") in NUMBER !== true');
-}
diff --git a/test/language/expressions/in/S11.8.7_A2.4_T4.js b/test/language/expressions/in/S11.8.7_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..524a8c6938b7e1450f7fcf2f2361e7fa7c63ecfd
--- /dev/null
+++ b/test/language/expressions/in/S11.8.7_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.8.7_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((NUMBER = Number, "MAX_VALUE") in NUMBER !== true) {
+  $ERROR('#1: (NUMBER = Number, "MAX_VALUE") in NUMBER !== true');
+}
diff --git a/test/language/expressions/instanceof/S11.8.6_A2.4_T3.js b/test/language/expressions/instanceof/S11.8.6_A2.4_T3.js
index 00d741a02074c2c298a981e6b68e57654d59023d..2775cf15017f168ec4e3125964be88793c632bbe 100644
--- a/test/language/expressions/instanceof/S11.8.6_A2.4_T3.js
+++ b/test/language/expressions/instanceof/S11.8.6_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: object instanceof (object = {}, Object) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((OBJECT = Object, {}) instanceof OBJECT !== true) {
-  $ERROR('#2: (OBJECT = Object, {}) instanceof OBJECT !== true');
-}
diff --git a/test/language/expressions/instanceof/S11.8.6_A2.4_T4.js b/test/language/expressions/instanceof/S11.8.6_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..3be8567903a399b8c0439462171a599ba6d170be
--- /dev/null
+++ b/test/language/expressions/instanceof/S11.8.6_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.8.6_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((OBJECT = Object, {}) instanceof OBJECT !== true) {
+  $ERROR('#1: (OBJECT = Object, {}) instanceof OBJECT !== true');
+}
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A1_T1.js b/test/language/expressions/instanceof/S15.3.5.3_A1_T1.js
index 4b817a2160ae36766831687067b6fe5810d1b030..f24108b6f17b1753a1c5d8387291be6e782328b7 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A1_T1.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A1_T1.js
@@ -10,6 +10,7 @@ es5id: 15.3.5.3_A1_T1
 description: V is number
 ---*/
 
+var FACTORY;
 FACTORY = Function("name","this.name=name;");
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A1_T2.js b/test/language/expressions/instanceof/S15.3.5.3_A1_T2.js
index cf93a6dc11a4a1ee13c9e40b5a9fde2e536a2ffd..8ab2ef47805b988a4d1dbf88a21de70f662e0254 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A1_T2.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A1_T2.js
@@ -10,6 +10,7 @@ es5id: 15.3.5.3_A1_T2
 description: V is string
 ---*/
 
+var FACTORY;
 FACTORY = Function("name","this.name=name;");
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A1_T3.js b/test/language/expressions/instanceof/S15.3.5.3_A1_T3.js
index ce515e42524be338cb0499309bebaa1070a0047a..3093b99aa98a925603ab1821549cb82a56860e37 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A1_T3.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A1_T3.js
@@ -10,6 +10,7 @@ es5id: 15.3.5.3_A1_T3
 description: V is boolean true
 ---*/
 
+var FACTORY;
 FACTORY = Function("name","this.name=name;");
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A1_T4.js b/test/language/expressions/instanceof/S15.3.5.3_A1_T4.js
index 287877b3b95b441b546daec65add758389b43d68..e2eaead7389251fccbb2aac4cea5b776d5c0898d 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A1_T4.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A1_T4.js
@@ -10,6 +10,7 @@ es5id: 15.3.5.3_A1_T4
 description: V is boolean false
 ---*/
 
+var FACTORY;
 FACTORY = Function("name","this.name=name;");
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A1_T5.js b/test/language/expressions/instanceof/S15.3.5.3_A1_T5.js
index ba9d71d03026eb46dbca9cc72c5532ac32143c11..91c8a9cd5a91e7a21e006a76d72315302bfea25e 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A1_T5.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A1_T5.js
@@ -10,6 +10,7 @@ es5id: 15.3.5.3_A1_T5
 description: V is void 0
 ---*/
 
+var FACTORY;
 FACTORY = Function("name","this.name=name;");
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A1_T6.js b/test/language/expressions/instanceof/S15.3.5.3_A1_T6.js
index 6124c4c575ef4cd40e20e19e66ef1af296fafd10..ab6a80d432562e4953c36d2abf008115c7c878ac 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A1_T6.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A1_T6.js
@@ -10,6 +10,7 @@ es5id: 15.3.5.3_A1_T6
 description: V is null
 ---*/
 
+var FACTORY;
 FACTORY = Function("name","this.name=name;");
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A1_T7.js b/test/language/expressions/instanceof/S15.3.5.3_A1_T7.js
index 89962be67949271ba7d743855a60ab440e589ff5..a6c1f7b2c5798df73afce52ce9c3873f7141b30e 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A1_T7.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A1_T7.js
@@ -10,6 +10,7 @@ es5id: 15.3.5.3_A1_T7
 description: V is undefined
 ---*/
 
+var FACTORY;
 FACTORY = Function("name","this.name=name;");
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A1_T8.js b/test/language/expressions/instanceof/S15.3.5.3_A1_T8.js
index 0727b3f0c11f6117193d557dc8d8989eb97f74e6..6efb538d8d3950325abe5824909328de3412d6ae 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A1_T8.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A1_T8.js
@@ -10,6 +10,7 @@ es5id: 15.3.5.3_A1_T8
 description: V is undefined variable
 ---*/
 
+var FACTORY;
 FACTORY = Function("name","this.name=name;");
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A2_T2.js b/test/language/expressions/instanceof/S15.3.5.3_A2_T2.js
index 1bfc025c55c911c128747588d5b86356f339004f..bd99332602488a767ea8d36ec1282655132f5dae 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A2_T2.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A2_T2.js
@@ -12,10 +12,12 @@ description: F.prototype is undefined, and V is empty object
 includes: [$FAIL.js]
 ---*/
 
+var FACTORY;
 FACTORY = new Function;
 
 FACTORY.prototype = undefined;
 
+var obj;
 obj={};
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A2_T5.js b/test/language/expressions/instanceof/S15.3.5.3_A2_T5.js
index 045a9b3ab4ae35507dc95bbf41f6106f1ad89310..a615e68e5fb24415e555cf82bdd74ad958846384 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A2_T5.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A2_T5.js
@@ -13,10 +13,12 @@ description: F.prototype is void 0, and V is new F
 includes: [$FAIL.js]
 ---*/
 
+var FACTORY;
 FACTORY = Function("this.prop=1;");
 
 FACTORY.prototype.name = "fairy";
 
+var instance;
 instance = new FACTORY;
 
 FACTORY.prototype = void 0;
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A2_T6.js b/test/language/expressions/instanceof/S15.3.5.3_A2_T6.js
index 3e08d966008a1aa96a5db21cd26b7b32f289d0f0..7330927599e082c1b0e3b337765f74c7f5a0b42d 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A2_T6.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A2_T6.js
@@ -13,6 +13,7 @@ description: F.prototype is string, and V is function
 includes: [$FAIL.js]
 ---*/
 
+var FACTORY;
 FACTORY = new Function;
 
 FACTORY.prototype = "error";
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A3_T1.js b/test/language/expressions/instanceof/S15.3.5.3_A3_T1.js
index b560659f26696ad6adde6afc0065af3e4d4a3d8a..c7fd63afa28598314d54e4a1fafe2952cabbd8c7 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A3_T1.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A3_T1.js
@@ -14,10 +14,12 @@ es5id: 15.3.5.3_A3_T1
 description: F.prototype.type is 1, and V is new F
 ---*/
 
+var FACTORY;
 FACTORY = Function("this.name=\"root\"");
 
 FACTORY.prototype.type=1;
 
+var instance;
 instance = new FACTORY;
 
 //CHECK#1
diff --git a/test/language/expressions/instanceof/S15.3.5.3_A3_T2.js b/test/language/expressions/instanceof/S15.3.5.3_A3_T2.js
index c6dc601d0421a7bbcee402a8a32d522e16027fa7..713a6d56f910231b6fff5054d54396450c62c1be 100644
--- a/test/language/expressions/instanceof/S15.3.5.3_A3_T2.js
+++ b/test/language/expressions/instanceof/S15.3.5.3_A3_T2.js
@@ -14,8 +14,10 @@ es5id: 15.3.5.3_A3_T2
 description: F.prototype is Object.prototype, and V is empty object
 ---*/
 
+var FAKEFACTORY;
 FAKEFACTORY = Function();
 
+var fakeinstance;
 fakeinstance = {};
 
 //CHECK#1
diff --git a/test/language/expressions/left-shift/S11.7.1_A2.4_T3.js b/test/language/expressions/left-shift/S11.7.1_A2.4_T3.js
index c5b1a19733899c93da2d0ef0e71abb5876b3ecb4..017af2101f7a3964daa5abf08d1bd84e63d050bf 100644
--- a/test/language/expressions/left-shift/S11.7.1_A2.4_T3.js
+++ b/test/language/expressions/left-shift/S11.7.1_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x << (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) << y !== 2) {
-  $ERROR('#2: (y = 1) << y === 2. Actual: ' + ((y = 1) << y));
-}
diff --git a/test/language/expressions/left-shift/S11.7.1_A2.4_T4.js b/test/language/expressions/left-shift/S11.7.1_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..885b8e2d91b0cfebc7793be25d078e0a57150a2f
--- /dev/null
+++ b/test/language/expressions/left-shift/S11.7.1_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.7.1_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) << y !== 2) {
+  $ERROR('#1: (y = 1) << y === 2. Actual: ' + ((y = 1) << y));
+}
diff --git a/test/language/expressions/less-than-or-equal/S11.8.3_A2.4_T3.js b/test/language/expressions/less-than-or-equal/S11.8.3_A2.4_T3.js
index 848a590cdf45503035bfa29f396b5c5f768cef9d..b07c1dcd37879ee01460dfc940b32f7ab54f25bb 100644
--- a/test/language/expressions/less-than-or-equal/S11.8.3_A2.4_T3.js
+++ b/test/language/expressions/less-than-or-equal/S11.8.3_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x <= (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) <= y !== true) {
-  $ERROR('#2: (y = 1) <= y === true');
-}
diff --git a/test/language/expressions/less-than-or-equal/S11.8.3_A2.4_T4.js b/test/language/expressions/less-than-or-equal/S11.8.3_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..9deaa72d6e9b97612056bba7cbe1e903d8d5a466
--- /dev/null
+++ b/test/language/expressions/less-than-or-equal/S11.8.3_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.8.3_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) <= y !== true) {
+  $ERROR('#1: (y = 1) <= y === true');
+}
diff --git a/test/language/expressions/less-than/S11.8.1_A2.4_T3.js b/test/language/expressions/less-than/S11.8.1_A2.4_T3.js
index 1aafa984f7f5e65bd0a7ec01ac13445874ee4ea2..e976549708fbbc2dd8b6ac8b108b36dc36471972 100644
--- a/test/language/expressions/less-than/S11.8.1_A2.4_T3.js
+++ b/test/language/expressions/less-than/S11.8.1_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x < (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) < y !== false) {
-  $ERROR('#2: (y = 1) < y === false');
-}
diff --git a/test/language/expressions/less-than/S11.8.1_A2.4_T4.js b/test/language/expressions/less-than/S11.8.1_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..0e16895bf34c175c12e9bddcccefe6d275e1d13b
--- /dev/null
+++ b/test/language/expressions/less-than/S11.8.1_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.8.1_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) < y !== false) {
+  $ERROR('#1: (y = 1) < y === false');
+}
diff --git a/test/language/expressions/modulus/S11.5.3_A2.4_T3.js b/test/language/expressions/modulus/S11.5.3_A2.4_T3.js
index 3675bf82c702b97a0ba13a40b59d80e9953ad8f4..08b905382cf6b5c251095c2a81732bf62937ad31 100644
--- a/test/language/expressions/modulus/S11.5.3_A2.4_T3.js
+++ b/test/language/expressions/modulus/S11.5.3_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x % (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) % y !== 0) {
-  $ERROR('#2: (y = 1) % y === 0. Actual: ' + ((y = 1) % y));
-}
diff --git a/test/language/expressions/modulus/S11.5.3_A2.4_T4.js b/test/language/expressions/modulus/S11.5.3_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..8e16de1d9ee0c533a828fcfb91b4d4456dab5900
--- /dev/null
+++ b/test/language/expressions/modulus/S11.5.3_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.5.3_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) % y !== 0) {
+  $ERROR('#1: (y = 1) % y === 0. Actual: ' + ((y = 1) % y));
+}
diff --git a/test/language/expressions/multiplication/S11.5.1_A2.4_T3.js b/test/language/expressions/multiplication/S11.5.1_A2.4_T3.js
index 9c971e050cff217bdeb2486e0895bbeee7eb8f4a..1d9817d2acab2f44fc9078b5be627f7534deef55 100644
--- a/test/language/expressions/multiplication/S11.5.1_A2.4_T3.js
+++ b/test/language/expressions/multiplication/S11.5.1_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x * (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) * y !== 1) {
-  $ERROR('#2: (y = 1) * y === 1. Actual: ' + ((y = 1) * y));
-}
diff --git a/test/language/expressions/multiplication/S11.5.1_A2.4_T4.js b/test/language/expressions/multiplication/S11.5.1_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..526728a7ff10f14c0bc0234983004a6cc009770c
--- /dev/null
+++ b/test/language/expressions/multiplication/S11.5.1_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.5.1_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) * y !== 1) {
+  $ERROR('#1: (y = 1) * y === 1. Actual: ' + ((y = 1) * y));
+}
diff --git a/test/language/expressions/right-shift/S11.7.2_A2.4_T3.js b/test/language/expressions/right-shift/S11.7.2_A2.4_T3.js
index f1489904ad7b9211573ffb5e2fd57090c6739757..b16b2e3b6607a35f296feafe679e825c278da596 100644
--- a/test/language/expressions/right-shift/S11.7.2_A2.4_T3.js
+++ b/test/language/expressions/right-shift/S11.7.2_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x >> (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) >> y !== 0) {
-  $ERROR('#2: (y = 1) >> y === 0. Actual: ' + ((y = 1) >> y));
-}
diff --git a/test/language/expressions/right-shift/S11.7.2_A2.4_T4.js b/test/language/expressions/right-shift/S11.7.2_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..e01f1d61414ca1f70b681405fb816a4abb2b93db
--- /dev/null
+++ b/test/language/expressions/right-shift/S11.7.2_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.7.2_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) >> y !== 0) {
+  $ERROR('#1: (y = 1) >> y === 0. Actual: ' + ((y = 1) >> y));
+}
diff --git a/test/language/expressions/strict-does-not-equals/S11.9.5_A2.4_T3.js b/test/language/expressions/strict-does-not-equals/S11.9.5_A2.4_T3.js
index bdefcb3281faa528727ed299c3e4c91f3e0071c0..e5a8433a68e1495d8f5761a3c9da397e6c3e044f 100644
--- a/test/language/expressions/strict-does-not-equals/S11.9.5_A2.4_T3.js
+++ b/test/language/expressions/strict-does-not-equals/S11.9.5_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x !== (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) !== y) {
-  $ERROR('#2: (y = 1) === y');
-}
diff --git a/test/language/expressions/strict-does-not-equals/S11.9.5_A2.4_T4.js b/test/language/expressions/strict-does-not-equals/S11.9.5_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..ae76fb3df62f94f5ee040f61f2ab1e0cd0c729e7
--- /dev/null
+++ b/test/language/expressions/strict-does-not-equals/S11.9.5_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.9.5_A2.4_T4
+description: Checking undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) !== y) {
+  $ERROR('#1: (y = 1) === y');
+}
diff --git a/test/language/expressions/strict-equals/S11.9.4_A2.4_T3.js b/test/language/expressions/strict-equals/S11.9.4_A2.4_T3.js
index 2a1cc2e395b788073b6a7323242ab85e05d4f80b..485fbb826b45cf1ad8000e846fb66b31263c9e3e 100644
--- a/test/language/expressions/strict-equals/S11.9.4_A2.4_T3.js
+++ b/test/language/expressions/strict-equals/S11.9.4_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x === (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if (!((y = 1) === y)) {
-  $ERROR('#2: (y = 1) === y');
-}
diff --git a/test/language/expressions/strict-equals/S11.9.4_A2.4_T4.js b/test/language/expressions/strict-equals/S11.9.4_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..b0bbe487a78edb66c0aca38eda91af099184ba64
--- /dev/null
+++ b/test/language/expressions/strict-equals/S11.9.4_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.9.4_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if (!((y = 1) === y)) {
+  $ERROR('#1: (y = 1) === y');
+}
diff --git a/test/language/expressions/subtraction/S11.6.2_A2.4_T3.js b/test/language/expressions/subtraction/S11.6.2_A2.4_T3.js
index d6aa5fb0e6fe79fea20c8ec942456bd1ba3d210a..772701029c05428f7b01a9ee77f0befc62ccd0d6 100644
--- a/test/language/expressions/subtraction/S11.6.2_A2.4_T3.js
+++ b/test/language/expressions/subtraction/S11.6.2_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x - (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) - y !== 0) {
-  $ERROR('#2: (y = 1) - y === 0. Actual: ' + ((y = 1) - y));
-}
diff --git a/test/language/expressions/subtraction/S11.6.2_A2.4_T4.js b/test/language/expressions/subtraction/S11.6.2_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..3b9a8bb60f4402da9c8464f0aa6ed34010b35e3e
--- /dev/null
+++ b/test/language/expressions/subtraction/S11.6.2_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.6.2_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) - y !== 0) {
+  $ERROR('#1: (y = 1) - y === 0. Actual: ' + ((y = 1) - y));
+}
diff --git a/test/language/expressions/unsigned-right-shift/S11.7.3_A2.4_T3.js b/test/language/expressions/unsigned-right-shift/S11.7.3_A2.4_T3.js
index d44c785df5cce045f21ee999ce309904a413e2b1..2ed045c77b73ba5307cfaae986db90d67920c5a8 100644
--- a/test/language/expressions/unsigned-right-shift/S11.7.3_A2.4_T3.js
+++ b/test/language/expressions/unsigned-right-shift/S11.7.3_A2.4_T3.js
@@ -17,8 +17,3 @@ catch (e) {
     $ERROR('#1.2: x >>> (x = 1) throw ReferenceError. Actual: ' + (e));  
   }
 }
-
-//CHECK#2
-if ((y = 1) >>> y !== 0) {
-  $ERROR('#2: (y = 1) >>> y === 0. Actual: ' + ((y = 1) >>> y));
-}
diff --git a/test/language/expressions/unsigned-right-shift/S11.7.3_A2.4_T4.js b/test/language/expressions/unsigned-right-shift/S11.7.3_A2.4_T4.js
new file mode 100755
index 0000000000000000000000000000000000000000..4debe6c909a599533d95d7a177534d07cdfd0778
--- /dev/null
+++ b/test/language/expressions/unsigned-right-shift/S11.7.3_A2.4_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors.  All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: First expression is evaluated first, and then second expression
+es5id: 11.7.3_A2.4_T4
+description: Checking with undeclarated variables
+flags: [noStrict]
+---*/
+
+//CHECK#1
+if ((y = 1) >>> y !== 0) {
+  $ERROR('#1: (y = 1) >>> y === 0. Actual: ' + ((y = 1) >>> y));
+}