Example #1
0
 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));
            }
        }
Example #3
0
        // 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));
        }