Example #1
0
    public static DyObject ExternalFunctionFailure(this ExecutionContext ctx, DyFunction func, string error)
    {
        var functionName = func.Self is null ? func.FunctionName
            : $"{func.Self.TypeName}.{func.FunctionName}";

        ctx.Error = new(DyError.ExternalFunctionFailure, functionName, error);
        return(Nil);
    }
Example #2
0
    internal override void SetInstanceMember(ExecutionContext ctx, HashString name, DyFunction func)
    {
        if ((string)name is Builtins.Get or Builtins.Set or Builtins.Length)
        {
            ctx.OverloadProhibited(this, (string)name);
            return;
        }

        base.SetInstanceMember(ctx, name, func);
    }
Example #3
0
    private static (DyVariant err, CallStackTrace?trace) GetErrorInformation(DyFunction func, Exception ex)
    {
        if (ex is DyCodeException err)
        {
            return(err.Error, err.CallTrace);
        }

        if (ex.InnerException is not null)
        {
            return(GetErrorInformation(func, ex.InnerException));
        }

        var functionName = func.Self is null ? func.FunctionName
            : $"{func.Self.TypeName}.{func.FunctionName}";

        return(new(DyError.ExternalFunctionFailure, functionName, ex.Message), null);
    }
Example #4
0
 public EqualityComparer(ExecutionContext ctx, DyObject functor)
 {
     this.ctx = ctx;
     func     = functor.ToFunction(ctx) !;
     ctx.ThrowIf();
 }
Example #5
0
 public CompositionContainer(DyFunction first, DyFunction second) : base(null, first.Parameters, first.VarArgIndex)
 {
     this.first  = first;
     this.second = second;
 }
Example #6
0
 protected override bool Equals(DyFunction func) =>
 func is CompositionContainer cc &&
Example #7
0
 protected override bool Equals(DyFunction func) =>
 FunctionName == func.FunctionName &&
 func is DyExternalFunction fn && fn.func.Equals(func) &&
Example #8
0
 protected override bool Equals(DyFunction func) =>
 func is DyNativeFunction m && m.UnitId == UnitId && m.FunctionId == FunctionId &&