// 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. // This tests that empty inner classes don't assign private brands of outer // classes in their instances after scope chain deserialization. 'use strict'; class Outer { constructor() {} #method(){} factory() { class Inner { constructor() {} } return Inner; } run(obj) { obj.#method(); } } const instance = new Outer(); const Inner = instance.factory(); // It should not pass the brand check. assertThrows(() => instance.run(new Inner()), TypeError); // It should pass the brand check. instance.run(new Outer());