public void testCreateTerminalVariable() { TerminalParameterVariableCreateRequest createRequest = new TerminalParameterVariableCreateRequest(); ParameterVariable parameterVariable1 = new ParameterVariable(); parameterVariable1.Key = "testCreateVariable1Api3"; parameterVariable1.Value = "testApiCreate3"; parameterVariable1.PackageName = "com.pax.android.demoapp"; parameterVariable1.Remarks = "今日头条app testCreateApi3"; ParameterVariable parameterVariable2 = new ParameterVariable(); parameterVariable2.Key = "testCreateVariable1Api4"; parameterVariable2.Value = "testApiCreate4"; parameterVariable2.PackageName = "com.pax.android.demoapp"; parameterVariable2.Remarks = "今日头条app testCreateApi4"; List <ParameterVariable> variableList = new List <ParameterVariable>(); variableList.Add(parameterVariable1); variableList.Add(parameterVariable2); createRequest.TID = "JDEW5LCP"; createRequest.VariableList = variableList; Result <String> createResult = API.CreateTerminalVariable(createRequest); _logger.DebugFormat("Result=\n{0}", JsonConvert.SerializeObject(createResult)); Assert.AreEqual(createResult.BusinessCode, 0); }
public LambdaAction(ParseInfo parseInfo, Scope scope, DeltinScriptParser.LambdaContext context) { Scope lambdaScope = scope.Child(); RecursiveCallHandler = new LambdaRecursionHandler(this); CallInfo = new CallInfo(RecursiveCallHandler, parseInfo.Script); // Get the lambda parameters. Parameters = new Var[context.define().Length]; InvokedState = new SubLambdaInvoke[Parameters.Length]; for (int i = 0; i < Parameters.Length; i++) { InvokedState[i] = new SubLambdaInvoke(); // TODO: Make custom builder. Parameters[i] = new ParameterVariable(lambdaScope, new DefineContextHandler(parseInfo, context.define(i)), InvokedState[i]); } CodeType[] argumentTypes = Parameters.Select(arg => arg.CodeType).ToArray(); // context.block() will not be null if the lambda is a block. // () => {} if (context.block() != null) { // Parse the block. Block = new BlockAction(parseInfo.SetCallInfo(CallInfo), lambdaScope, context.block()); // Validate the block. BlockTreeScan validation = new BlockTreeScan(parseInfo, Block, "lambda", DocRange.GetRange(context.INS())); validation.ValidateReturns(); if (validation.ReturnsValue) { LambdaType = new ValueBlockLambda(validation.ReturnType, argumentTypes); MultiplePaths = validation.MultiplePaths; } else { LambdaType = new BlockLambda(argumentTypes); } } // context.expr() will not be null if the lambda is an expression. // () => 2 * x else if (context.expr() != null) { // Get the lambda expression. Expression = parseInfo.SetCallInfo(CallInfo).GetExpression(lambdaScope, context.expr()); LambdaType = new MacroLambda(Expression.Type(), argumentTypes); } // Add so the lambda can be recursive-checked. parseInfo.TranslateInfo.RecursionCheck(CallInfo); // Add hover info parseInfo.Script.AddHover(DocRange.GetRange(context.INS()), new MarkupBuilder().StartCodeLine().Add(LambdaType.GetName()).EndCodeLine().ToString()); }
private static TVec GetVariables(IDictionary <IEditParameter, ParameterVariable[]> paramsToVars, IEditParameter editParameter) { ParameterVariable[] vars; if (!paramsToVars.TryGetValue(editParameter, out vars)) { vars = new ParameterVariable[editParameter.Dimension]; for (int i = 0; i < editParameter.Dimension; i++) { vars[i] = new ParameterVariable(editParameter, i); } paramsToVars.Add(editParameter, vars); } return(new TVec(vars)); }
public LambdaAction(ParseInfo parseInfo, Scope scope, DeltinScriptParser.LambdaContext context) { Scope lambdaScope = scope.Child(); // Get the lambda parameters. Parameters = new Var[context.define().Length]; for (int i = 0; i < Parameters.Length; i++) { // TODO: Make custom builder. Parameters[i] = new ParameterVariable(lambdaScope, new DefineContextHandler(parseInfo, context.define(i))); } CodeType[] argumentTypes = Parameters.Select(arg => arg.CodeType).ToArray(); // context.block() will not be null if the lambda is a block. // () => {} if (context.block() != null) { // Parse the block. Block = new BlockAction(parseInfo, lambdaScope, context.block()); // Validate the block. BlockTreeScan validation = new BlockTreeScan(parseInfo, Block, "lambda", DocRange.GetRange(context.INS())); validation.ValidateReturns(); if (validation.ReturnsValue) { LambdaType = new ValueBlockLambda(validation.ReturnType, argumentTypes); MultiplePaths = validation.MultiplePaths; } else { LambdaType = new BlockLambda(argumentTypes); } } // context.expr() will not be null if the lambda is an expression. // () => 2 * x else if (context.expr() != null) { // Get the lambda expression. Expression = parseInfo.GetExpression(lambdaScope, context.expr()); LambdaType = new MacroLambda(Expression.Type(), argumentTypes); } }
public LambdaAction(ParseInfo parseInfo, Scope scope, LambdaExpression context) { _context = context; _lambdaScope = scope.Child(); _parseInfo = parseInfo; RecursiveCallHandler = new LambdaRecursionHandler(this); CallInfo = new CallInfo(RecursiveCallHandler, parseInfo.Script); This = scope.GetThis(); _isExplicit = context.Parameters.Any(p => p.Type != null); var parameterState = context.Parameters.Count == 0 || _isExplicit ? ParameterState.CountAndTypesKnown : ParameterState.CountKnown; // Get the lambda parameters. Parameters = new Var[context.Parameters.Count]; InvokedState = new SubLambdaInvoke[Parameters.Length]; _argumentTypes = new CodeType[Parameters.Length]; for (int i = 0; i < Parameters.Length; i++) { if (_isExplicit && context.Parameters[i].Type == null) { parseInfo.Script.Diagnostics.Error("Inconsistent lambda parameter usage; parameter types must be all explicit or all implicit", context.Parameters[i].Range); } InvokedState[i] = new SubLambdaInvoke(); Parameters[i] = new ParameterVariable(_lambdaScope, new LambdaContextHandler(parseInfo, context.Parameters[i]), InvokedState[i]); _argumentTypes[i] = Parameters[i].CodeType; } new CheckLambdaContext( parseInfo, this, "Cannot determine lambda in the current context", context.Range, parameterState ).Check(); // Add hover info // parseInfo.Script.AddHover(context.Arrow.Range, new MarkupBuilder().StartCodeLine().Add(LambdaType.GetName()).EndCodeLine().ToString()); }