using Jint.Native; namespace Jint.Runtime.Environments; /// /// https://tc39.es/ecma262/#sec-privateenvironment-records /// internal sealed class PrivateEnvironment { public PrivateEnvironment(PrivateEnvironment? outerPrivEnv) { OuterPrivateEnvironment = outerPrivEnv; } public PrivateEnvironment? OuterPrivateEnvironment { get; } public Dictionary Names { get; } = new(); /// /// https://tc39.es/ecma262/#sec-resolve-private-identifier /// public PrivateName? ResolvePrivateIdentifier(string identifier) { foreach (var pn in Names) { if (string.Equals(pn.Value.Description, identifier, StringComparison.Ordinal)) { return pn.Value; } } return OuterPrivateEnvironment?.ResolvePrivateIdentifier(identifier); } }