// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    If NewExpression or MemberExpression does not implement internal
    [[Construct]] method, throw TypeError
es5id: 11.2.2_A4_T3
description: Checking String object case
---*/

//CHECK#1
try {
  new new String("1");
  $ERROR('#1: new new String("1") throw TypeError');	
}
catch (e) {
  if ((e instanceof TypeError) !== true) {
    $ERROR('#1: new new String("1") throw TypeError');	
  }
}

//CHECK#2
try {
  var x = new String("1");
  new x;
  $ERROR('#2: var x = new String("1"); new x throw TypeError');	
}
catch (e) {
  if ((e instanceof TypeError) !== true) {
    $ERROR('#2: var x = new String("1"); new x throw TypeError');	
  }
}

//CHECK#3
try {
  var x = new String("1");
  new x();
  $ERROR('#3: var x = new String("1"); new x() throw TypeError');  
}
catch (e) {
  if ((e instanceof TypeError) !== true) {
    $ERROR('#3: var x = new String("1"); new x() throw TypeError');  
  }
}
