/// <summary> /// Called to perform type propagation (semantic analysis) /// </summary> /// <param name="node">node to type prop</param> /// <param name="semanticAnalysisAccess">Helper interface to access aspects of type propagation</param> /// <param name="cancellationToken">Token indicating whether compile has been cancelled.</param> public override Task DoTypePropagationAsync(Node node, ITypePropagationAccessor semanticAnalysisAccess, CompileCancellationToken cancellationToken) { // this simple example requires all inputs to be wired and forces all types to double foreach (Terminal terminal in node.Terminals) { if (terminal.Direction == Direction.Input) { terminal.TestRequiredTerminalConnected(); } terminal.DataType = NITypes.Double; } return(AsyncHelpers.CompletedTask); }
/// <summary> /// Called to perform type propagation (semantic analysis) /// </summary> /// <param name="node">node to type prop</param> /// <param name="typePropagationAccessor">Helper interface to access aspects of type propagation</param> /// <param name="cancellationToken">Token indicating whether compile has been cancelled.</param> public override Task DoTypePropagationAsync(Node node, ITypePropagationAccessor typePropagationAccessor, CompileCancellationToken cancellationToken) { GetTerminalByName("names").DataType = PFTypes.StringArray1D; GetTerminalByName("extra name").DataType = PFTypes.String; GetTerminalByName("length").DataType = PFTypes.Int32; // this simple example requires all inputs to be wired foreach (Terminal terminal in node.Terminals) { if (terminal.Direction == Direction.Input) { terminal.TestRequiredTerminalConnected(); } } return(AsyncHelpers.CompletedTask); }