public static NIFunctionBuilder DefineMethodType(this string functionName) { NIFunctionBuilder functionBuilder = NITypes.Factory.DefineFunction(functionName); functionBuilder.IsStatic = true; return(functionBuilder); }
protected NIType DefineGenericOutputFunctionSignature() { NIFunctionBuilder functionBuilder = NITypes.Factory.DefineFunction("genericOutput"); NIType typeParameter = Signatures.AddGenericDataTypeParameter(functionBuilder, "TData"); return(functionBuilder.AddOutput(typeParameter, "out").CreateType()); }
private static NIType AddGenericMutabilityTypeParameter(NIFunctionBuilder functionBuilder, string name) { var genericTypeParameters = functionBuilder.MakeGenericParameters(name); var parameterBuilder = genericTypeParameters.ElementAt(0); SetMutabilityTypeAttribute((NIAttributedBaseBuilder)parameterBuilder); return(parameterBuilder.CreateType()); }
public static NIType AddGenericLifetimeTypeParameter(NIFunctionBuilder functionBuilder, string name) { var genericTypeParameters = functionBuilder.MakeGenericParameters(name); var parameterBuilder = genericTypeParameters.ElementAt(0); DataTypes.SetLifetimeTypeAttribute((NIAttributedBaseBuilder)parameterBuilder); return(parameterBuilder.CreateType()); }
public static NIType AddGenericDataTypeParameter(NIFunctionBuilder functionBuilder, string name, params NITypeBuilder[] constraints) { var genericTypeParameters = functionBuilder.MakeGenericParameters(name); NITypeBuilder typeBuilder = genericTypeParameters.ElementAt(0); // HACK, but there seems to be no other public way to add constraints to an NITypeBuilder List <NITypeBuilder> builderConstraints = (List <NITypeBuilder>)((NIGenericTypeBuilder)typeBuilder).Constraints; builderConstraints.AddRange(constraints); return(typeBuilder.CreateType()); }
public void FunctionNodeWithNonGenericSignatureParameterAndIncorrectTypeWired_ValidateVariableUsages_ErrorCreated() { DfirRoot dfirRoot = DfirRoot.Create(); NIFunctionBuilder signatureTypeBuilder = NITypes.Factory.DefineFunction("NonGenericInput"); NIType signatureType = signatureTypeBuilder.AddInput(NITypes.Int32, "input").CreateType(); FunctionalNode functionalNode = new FunctionalNode(dfirRoot.BlockDiagram, signatureType); ConnectConstantToInputTerminal(functionalNode.InputTerminals[0], NITypes.Boolean, false); RunSemanticAnalysisUpToValidation(dfirRoot); AssertTerminalHasTypeConflictMessage(functionalNode.InputTerminals[0]); }
static AutomaticNodeInsertionTests() { NIFunctionBuilder signatureBuilder = NITypes.Factory.DefineFunction("outputOwner"); _outputOwnerSignature = signatureBuilder.AddOutput(NITypes.Int32, "owner").CreateType(); signatureBuilder = NITypes.Factory.DefineFunction("outputString"); _outputOwnerStringSignature = signatureBuilder.AddOutput(NITypes.String, "owner").CreateType(); signatureBuilder = NITypes.Factory.DefineFunction("stringSlicePassthrough"); signatureBuilder.AddInputOutput( DataTypes.StringSliceType.CreateImmutableReference(Signatures.AddGenericLifetimeTypeParameter(signatureBuilder, "TLife")), "stringSlice"); _stringSlicePassthroughSignature = signatureBuilder.CreateType(); }
public static NIFunctionBuilder AddInputOutput(this NIFunctionBuilder functionBuilder, NIType parameterType, string name) { functionBuilder.DefineParameter(parameterType, name, NIParameterPassingRule.Required, NIParameterPassingRule.Optional); return(functionBuilder); }
public static void AddInputOutputParameter(NIFunctionBuilder functionBuilder, NIType parameterType, string name) { functionBuilder.DefineParameter(parameterType, name, NIParameterPassingRule.Required, NIParameterPassingRule.Recommended); }