public override void EmitPushValue(DMObject dmObject, DMProc proc) { if (_astNode.Parameters.Length == 0 || _astNode.Parameters.Length > 4) { throw new CompileErrorException(_astNode.Location, "Invalid input() parameter count"); } //Push input's four arguments, pushing null for the missing ones for (int i = 3; i >= 0; i--) { if (i < _astNode.Parameters.Length) { DMASTCallParameter parameter = _astNode.Parameters[i]; if (parameter.Key != null) { throw new CompileErrorException(parameter.Location, "input() does not take named arguments"); } DMExpression.Create(dmObject, proc, parameter.Value).EmitPushValue(dmObject, proc); } else { proc.PushNull(); } } proc.Prompt(_astNode.Types); }
public void VisitNewList(DMASTNewList newList) { DMExpression[] expressions = new DMExpression[newList.Parameters.Length]; for (int i = 0; i < newList.Parameters.Length; i++) { DMASTCallParameter parameter = newList.Parameters[i]; if (parameter.Name != null) { throw new CompileErrorException(newList.Location, "newlist() does not take named arguments"); } expressions[i] = DMExpression.Create(_dmObject, _proc, parameter.Value, _inferredPath); } Result = new Expressions.NewList(newList.Location, expressions); }