namespace Jint.Runtime.Environments { /// /// https://tc39.es/ecma262/#sec-privateenvironment-records /// internal sealed class PrivateEnvironmentRecord { private readonly PrivateEnvironmentRecord? _outerPrivateEnvironment; private readonly List _names = new(); private readonly record struct PrivateName(string Name, string Description); public PrivateEnvironmentRecord(PrivateEnvironmentRecord? outerPrivEnv) { _outerPrivateEnvironment = outerPrivEnv; } /// /// https://tc39.es/ecma262/#sec-resolve-private-identifier /// public string? ResolvePrivateIdentifier(string identifier) { var names = _names; foreach (var privateName in names) { if (privateName.Description == identifier) { return privateName.Name; } } return _outerPrivateEnvironment?.ResolvePrivateIdentifier(identifier); } } }