public RefAssignEx(Text.Span span, VarLikeConstructUse /*!*/ lvalue, Expression /*!*/ rvalue) : base(span) { Debug.Assert(rvalue is VarLikeConstructUse || rvalue is NewEx); this.lvalue = lvalue; this.rvalue = rvalue; }
BoundExpression BindVarLikeConstructUse(AST.VarLikeConstructUse expr, BoundAccess access) { if (expr is AST.SimpleVarUse) { return(BindSimpleVarUse((AST.SimpleVarUse)expr, access)); } if (expr is AST.FunctionCall) { return(BindFunctionCall((AST.FunctionCall)expr, access)); } if (expr is AST.NewEx) { return(BindNew((AST.NewEx)expr, access)); } if (expr is AST.ArrayEx) { return(BindArrayEx((AST.ArrayEx)expr, access)); } if (expr is AST.ItemUse) { return(BindItemUse((AST.ItemUse)expr, access)); } if (expr is AST.StaticFieldUse) { return(BindFieldUse((AST.StaticFieldUse)expr, access)); } if (expr is AST.ListEx) { return(BindListEx((AST.ListEx)expr).WithAccess(access)); } throw new NotImplementedException(expr.GetType().FullName); }
/// <summary> /// Initializes instance of <see cref="ForeachVar"/> representing PHP list expression. /// </summary> /// <param name="list"></param> public ForeachVar(ListEx /*!*/ list) { Debug.Assert(list != null); _target = list; _alias = false; }
public ValueAssignEx(Text.Span span, Operations operation, VarLikeConstructUse /*!*/ lvalue, Expression /*!*/ rvalue) : base(span) { this.lvalue = lvalue; this.rvalue = rvalue; this.operation = operation; }
/// <summary> /// Initializes instance of <see cref="ForeachVar"/> representing PHP list expression. /// </summary> /// <param name="list"></param> public ForeachVar(IArrayExpression /*!*/ list) { Debug.Assert(list != null); Debug.Assert(list.Operation == Operations.List); _target = (VarLikeConstructUse)list; _alias = false; }
/// <summary> /// Create new assignment. /// </summary> /// <param name="span">Entire span.</param> /// <param name="lvalue">Assigned variable.</param> /// <param name="rvalue">Assigned value.</param> public RefAssignEx(Text.Span span, VarLikeConstructUse /*!*/ lvalue, Expression /*!*/ rvalue) : base(span) { Debug.Assert(rvalue != null); Debug.Assert(rvalue.AllowsPassByReference); this.lvalue = lvalue; this.rvalue = rvalue; }
protected AssignEx(Text.Span p, VarLikeConstructUse target, Expression rValue) : base(p) { LValue = target ?? throw new ArgumentNullException(nameof(target)); RValue = rValue ?? throw new ArgumentNullException(nameof(rValue)); }
/// <summary> /// Create new assignment. /// </summary> /// <param name="span">Entire span.</param> /// <param name="lvalue">Assigned variable.</param> /// <param name="rvalue">Assigned value.</param> public RefAssignEx(Text.Span span, VarLikeConstructUse /*!*/ lvalue, Expression /*!*/ rvalue) : base(span, lvalue, rvalue) { Debug.Assert(rvalue.AllowsPassByReference); }
public ForeachVar(VariableUse variable, bool alias) { _target = variable; _alias = alias; }