public override void Parse(ActionSet actionSet, WorkshopParameter[] parameters) { WorkshopFunctionBuilder.Call( actionSet, new Functions.Builder.CallInfo(parameters.Select(p => p.Value).ToArray()), new UserConstructorController(this, actionSet.ToWorkshop)); }
public IWorkshopTree Parse(ActionSet actionSet, MethodCall methodCall) { actionSet = actionSet .SetThisTypeLinker(methodCall.TypeArgs) .MergeTypeLinker(InstanceInfo); if (Provider.Block != null) { return(WorkshopFunctionBuilder.Call(actionSet, methodCall, new UserFunctionController(actionSet.ToWorkshop, this, methodCall.TypeArgs))); } else { return(MacroBuilder.CallMacroFunction(actionSet, this, methodCall)); } }
// Calls the lambda subroutine public IWorkshopTree Call(ActionSet actionSet, ICallInfo call, CodeType expectedType) { WorkshopFunctionBuilder.Call(actionSet, call, this); // No return type expected. if (expectedType == null) { return(null); } // Make sure the returnRecycler is reset. _returnRecycler.Reset(); return(expectedType.GetRealType(actionSet.ThisTypeLinker).GetGettableAssigner(new AssigningAttributes("todo:name", true, false)) .GetValue(new GettableAssignerValueInfo(actionSet) { IndexReferenceCreator = _returnRecycler, SetInitialValue = SetInitialValue.DoNotSet }) .GetVariable()); }
private IWorkshopTree OutputPortable(ActionSet actionSet, IWorkshopTree[] parameterValues) { var controller = actionSet.ToWorkshop.LambdaBuilder; return(WorkshopFunctionBuilder.Call(actionSet, new Functions.Builder.CallInfo(parameterValues), controller)); }