text: load("fcfbc86708bc3a4062c2091a062e13b6.js");
  load("f84fa150dbe5b1b3e196e3bdf2e8ab6e.js");
  /*
   * Any copyright is dedicated to the Public Domain.
   * http://creativecommons.org/licenses/publicdomain/
   */
  
  function check(obj, name, value, readonly) {
      // Start with a non-configurable, writable data property implemented via
      // js::PropertyOp getter and setter.
      var pd = Object.getOwnPropertyDescriptor(obj, name);
  
      assertEq(pd.configurable, false, "non-configurable " + name);
      assertEq(pd.writable, !readonly, "writable " + name);
  
      try {
          // Do not allow a transition from js::PropertyOp to writable js::Value
          // data property.
          Object.defineProperty(obj, name, {writable: true});
          assertEq(0, 1);
      } catch (e) {
          assertEq('' + e, "TypeError: can't redefine non-configurable property '" + name + "'");
      }
  
      if (!readonly) {
          try {
              // Do not allow the property denoted by name to become a true data
              // property via a descriptor that preserves the native property's
              // writable attribute.
              Object.defineProperty(obj, name, {value: value});
              assertEq(0, 1);
          } catch (e) {
              assertEq('' + e, "TypeError: can't redefine non-configurable property '" + name + "'");
          }
      }
  
      try {
          // Do not allow the property to be frozen at some bogus value.
          Object.defineProperty(obj, name, {value: "bogus", writable: false});
          assertEq(0, 1);
      } catch (e) {
          assertEq('' + e, "TypeError: can't redefine non-configurable property '" + name + "'");
      }
  
      // Now make name non-writable.
      Object.defineProperty(obj, name, {writable: false})
  
      // Assert that the right getter result "stuck".
      assertEq(obj[name], value);
  
      // Test that it is operationally non-writable now.
      obj[name] = "eek!";
      assertEq(obj[name], value);
  }
  
  // Reset RegExp.leftContext to the empty string.
  /x/.test('x');
  
  var d = Object.getOwnPropertyDescriptor(RegExp, "leftContext");
  assertEq(d.set, undefined);
  assertEq(typeof d.get, "function");
  assertEq(d.enumerable, true);
  assertEq(d.configurable, false);
  assertEq(d.get.call(RegExp), "");
  
  reportCompare(0, 0, "ok");
  