예제 #1
0
    private void Build(DThrow node, Hints hints, CompilerContext ctx)
    {
        if (node.Expression is not null)
        {
            Build(node.Expression, hints.Append(Push), ctx);
            AddLinePragma(node);
            cw.Fail();
        }
        else
        {
            if (!hints.Has(Catch) || ctx.Errors.Count is 0)
            {
                AddError(CompilerError.InvalidRethrow, node.Location);
            }
            else
            {
                cw.PushVar(new ScopeVar(ctx.Errors.Peek()));
            }

            AddLinePragma(node);
            cw.Fail();
        }
    }
예제 #2
0
 private void Build(DThrow node, Hints hints, CompilerContext ctx)
 {
     Build(node.Expression, hints.Append(Push), ctx);
     AddLinePragma(node);
     cw.Fail();
 }