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());
        }
示例#3
0
        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]);
        }