12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #nullable enable
- using Esprima;
- using Esprima.Ast;
- using Jint.Native.Function;
- using Jint.Runtime.Interpreter.Expressions;
- namespace Jint.Runtime.CallStack
- {
- internal readonly struct CallStackElement
- {
- public CallStackElement(
- FunctionInstance function,
- JintExpression expression)
- {
- Function = function;
- Expression = expression;
- }
- public readonly FunctionInstance Function;
- public readonly JintExpression? Expression;
- public Location Location
- {
- get
- {
- var expressionLocation = Expression?._expression.Location;
- if (expressionLocation != null && expressionLocation.Value != default)
- {
- return expressionLocation.Value;
- }
- return ((Node?) Function._functionDefinition?.Function)?.Location ?? default;
- }
- }
- public NodeList<Expression>? Arguments =>
- Function._functionDefinition?.Function.Params;
- public override string ToString()
- {
- var name = TypeConverter.ToString(Function.Get(CommonProperties.Name));
- if (string.IsNullOrWhiteSpace(name))
- {
- if (Expression is not null)
- {
- name = JintExpression.ToString(Expression._expression);
- }
- }
-
- return name ?? "(anonymous)";
- }
- }
- }
|