// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var ar;
Object.defineProperty(Array.prototype, 3,
    {
      get() {
        Object.defineProperty(
            ar, "length",
            { value: 3, writable: false, configurable: false });
      }
    });

function foo() {
  ar = [1, 2, 3];
  ar.length = 4;
  ar.pop();
}

assertThrows(foo, TypeError);
assertThrows(foo, TypeError);
assertThrows(foo, TypeError);
assertThrows(foo, TypeError);
