JintPrivateIdentifierExpression.cs 833 B

12345678910111213141516171819202122232425262728
  1. using Esprima.Ast;
  2. namespace Jint.Runtime.Interpreter.Expressions;
  3. internal sealed class JintPrivateIdentifierExpression : JintExpression
  4. {
  5. private readonly string _privateIdentifierString;
  6. public JintPrivateIdentifierExpression(PrivateIdentifier expression) : base(expression)
  7. {
  8. _privateIdentifierString = expression.Name;
  9. }
  10. protected override object EvaluateInternal(EvaluationContext context)
  11. {
  12. var engine = context.Engine;
  13. var env = engine.ExecutionContext.PrivateEnvironment;
  14. var privateIdentifier = env!.ResolvePrivateIdentifier(_privateIdentifierString);
  15. if (privateIdentifier is not null)
  16. {
  17. return privateIdentifier;
  18. }
  19. ExceptionHelper.ThrowReferenceError(engine.Realm, "TODO Not found!!");
  20. return null;
  21. }
  22. }