public Decrement(Expression op, DecrimentType type) : base(op, null, type == DecrimentType.Postdecriment) { if (op == null) { throw new ArgumentNullException(nameof(op)); } Type = type; }
public override bool Build(ref CodeNode _this, int expressionDepth, System.Collections.Generic.Dictionary <string, VariableDescriptor> variables, CodeContext codeContext, InternalCompilerMessageCallback message, FunctionInfo stats, Options opts) { _codeContext = codeContext; Parser.Build(ref _left, expressionDepth + 1, variables, codeContext | CodeContext.InExpression, message, stats, opts); if (expressionDepth <= 1 && _type == DecrimentType.Postdecriment) { _type = DecrimentType.Predecriment; } var f = _left as VariableReference ?? ((_left is AssignmentOperatorCache) ? (_left as AssignmentOperatorCache).Source as VariableReference : null); if (f != null) { (f.Descriptor.assignments ?? (f.Descriptor.assignments = new System.Collections.Generic.List <Expression>())).Add(this); } return(false); }