using Esprima.Ast; using Jint.Native; namespace Jint.Runtime.Environments; /// /// https://tc39.es/ecma262/#sec-privateenvironment-records /// internal sealed class PrivateEnvironmentRecord { public PrivateEnvironmentRecord(PrivateEnvironmentRecord? outerPrivEnv) { OuterPrivateEnvironment = outerPrivEnv; } public PrivateEnvironmentRecord? 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 (pn.Value.Description == identifier) { return pn.Value; } } return OuterPrivateEnvironment?.ResolvePrivateIdentifier(identifier); } }