public override MemoryEntry Exit(ExitEx exit, MemoryEntry status) { var end = new ThrowInfo(new CatchBlockDescription(Flow.ProgramEnd, new GenericQualifiedName(), null), status); Flow.SetThrowBranching(new[] { end }, true); // Exit expression never returns, but it is still expression so it must return something return(new MemoryEntry(OutSet.AnyValue)); }
public override void VisitExitEx(ExitEx x) { // NOTE: Added by VisitExpressionStmt already // NOTE: similar to ThrowEx but unhandleable // connect to Exception block Connect(_current, this.GetExceptionBlock()); // unreachable _current = NewDeadBlock(); }
public override void VisitExitEx(ExitEx x) { ConsumeToken(Tokens.T_EXIT, "exit", x.Span.Start); VisitElement(x.ResulExpr); }
/// <summary> /// Visit exit expression. /// </summary> /// <param name="x"></param> virtual public void VisitExitEx(ExitEx x) { VisitElement(x.ResulExpr); }
override public void VisitExitEx(ExitEx x) { _serializer.StartSerialize(typeof(ExitEx).Name, SerializeSpan(x.Span)); base.VisitExitEx(x); _serializer.EndSerialize(); }
public override void VisitExitEx(ExitEx x) { var resultValue = CreateRValue(x.ResulExpr); Result(new ExitExPoint(x, resultValue)); }
/// <inheritdoc /> public override void VisitExitEx(ExitEx x) { RValueResult(x); }
/// <summary> /// Terminates execution of the PHP code. It gives order to analysis to jump at the end of program. /// </summary> /// <param name="exit"><c>exit</c> expression</param> /// <param name="status">Exit status printed if it is string or returned if it is integer</param> /// <returns>Anything, return value is ignored</returns> public abstract MemoryEntry Exit(ExitEx exit, MemoryEntry status);
/// <summary> /// Initializes a new instance of the <see cref="ExitExPoint" /> class. /// </summary> /// <param name="exitEx"><c>exit</c> expression</param> /// <param name="resultExpression">Program point with exit status</param> internal ExitExPoint(ExitEx exitEx, ValuePoint resultExpression) { Exit = exitEx; ResultExpression = resultExpression; }
private static DieExpression ToDieExpression(ExitEx e) { return(new DieExpression(ToCallSignature(new CallParameter(Parse(e.ResulExpr), ampersand: false, is_unpack: false)))); }
/// <inheritdoc /> override public void VisitExitEx(ExitEx x) { VisitElement(x.ResulExpr); result = new ExitEx(x.Position, (Expression)result); }