static AutomaticNodeInsertionTests() { NIFunctionBuilder signatureBuilder = PFTypes.Factory.DefineFunction("outputOwner"); Signatures.AddOutputParameter(signatureBuilder, PFTypes.Int32, "owner"); _outputOwnerSignature = signatureBuilder.CreateType(); signatureBuilder = PFTypes.Factory.DefineFunction("outputString"); Signatures.AddOutputParameter(signatureBuilder, PFTypes.String, "owner"); _outputOwnerStringSignature = signatureBuilder.CreateType(); signatureBuilder = PFTypes.Factory.DefineFunction("stringSlicePassthrough"); Signatures.AddInputOutputParameter( signatureBuilder, DataTypes.StringSliceType.CreateImmutableReference(Signatures.AddGenericLifetimeTypeParameter(signatureBuilder, "TLife")), "stringSlice"); _stringSlicePassthroughSignature = signatureBuilder.CreateType(); }
protected NIType DefineGenericOutputFunctionSignature() { NIFunctionBuilder functionBuilder = PFTypes.Factory.DefineFunction("genericOutput"); NIType typeParameter = Signatures.AddGenericDataTypeParameter(functionBuilder, "TData"); Signatures.AddOutputParameter(functionBuilder, typeParameter, "out"); return(functionBuilder.CreateType()); }
public void FunctionNodeWithNonGenericSignatureParameterAndIncorrectTypeWired_ValidateVariableUsages_ErrorCreated() { DfirRoot dfirRoot = DfirRoot.Create(); NIFunctionBuilder signatureTypeBuilder = PFTypes.Factory.DefineFunction("NonGenericInput"); Signatures.AddInputParameter(signatureTypeBuilder, PFTypes.Int32, "input"); NIType signatureType = signatureTypeBuilder.CreateType(); FunctionalNode functionalNode = new FunctionalNode(dfirRoot.BlockDiagram, signatureType); ConnectConstantToInputTerminal(functionalNode.InputTerminals[0], PFTypes.Boolean, false); RunSemanticAnalysisUpToValidation(dfirRoot); AssertTerminalHasTypeConflictMessage(functionalNode.InputTerminals[0]); }