André Bargull 1a4793926f Fix strict mode errors in language/expressions
- Add missing noStrict flags when tests explicitly require non-strict semantics (e.g. unqualified delete, with statement)
- Change `throw new Exception(...)` to `$ERROR(...)` in call/*
- Replace dynamic strict mode check with noStrict flag in call/11.2.3-3_8
- Align assignment/11.13.1_A3.1 with 11.13.1_A3.2 to avoid creating implicit global variable
- Split test into multiple files when undeclared variable are under test
  - addition/S11.6.1_A2.4_T3
  - division/11.5.2_A2.4_T3
  - does-not-equals/11.9.2_A2.4_T3
  - equals/S11.9.1_A2.4_T3
  - greater-than/S11.8.2_A2.4_T3
  - greater-than-or-equal/S11.8.4_A2.4_T3
  - in/S11.8.7_A2.4_T3
  - instanceof/11.8.6_A2.4_T3
  - left-shift/S11.7.1_A2.4_T3
  - less-than/S11.8.1_A2.4_T3
  - less-than-or-equal/S11.8.3_A2.4_T3
  - modulus/S11.5.3_A2.4_T3
  - multiplication/11.5.1_A2.4_T3
  - right-shift/11.7.2_A2.4_T3
  - strict-does-not-equals/11.9.5_A2.4_T3
  - strict-equals/11.9.4_A2.4_T3
  - subtraction/11.6.2_A2.4_T3
  - unsigned-right-shift/11.7.3_A2.4_T3
- Add declaration when implicit global variable creation not part of the test
  - assignment/11.13.1_A4_T1
  - compound-assignment/S11.13.2_A3.1_T*
  - compound-assignment/S11.13.2_A3.2_T*
  - grouping/11.1.6_A3_T5
  - instanceof/S15.3.5.3_*
- Split test into multiple files when unqualified delete is used
  - delete/S11.4.1_A2.2_T1.js
  - delete/11.4.1_A3.2
  - grouping/S11.1.6_A2
  - grouping/S11.1.6_A3_T6
2014-12-11 19:07:04 +01:00

40 lines
986 B
JavaScript

// 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 has the DontDelete attribute, return false
es5id: 11.4.1_A3.1
description: Checking declared variable
flags: [noStrict]
---*/
//CHECK#1
var x = 1;
if (delete x !== false) {
$ERROR('#1: var x = 1; delete x === false');
}
//CHECK#2
var y = 1;
if (delete this.y !== false) {
$ERROR('#2: var y = 1; delete this.y === false');
}
//CHECK#3
function MyFunction(){};
if (delete MyFunction !== false) {
$ERROR('#3: function MyFunction(){}; delete MyFunction === false');
}
//CHECK#4
function MyFunction(){};
var MyObject = new MyFunction();
if (delete MyObject !== false) {
$ERROR('#4: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject === false');
}
//CHECK#5
if (delete MyObject !== false) {
$ERROR('#5: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject === false');
}