private static string GenerateMethodWithNoRefOutParameters(MethodInfo baseMethod, string delegateCast, string argumentNameList, string outInitializers, string methodDescriptionWithOverride, string visibility, RequiresIsNewImplementation requiresIsNewImplementation, SortedSet <string> namespaces, bool isMake, bool hasEvents) { var expectationChecks = baseMethod.GetExpectationChecks(); var expectationExceptionMessage = baseMethod.GetExpectationExceptionMessage(); var requiresNew = requiresIsNewImplementation == RequiresIsNewImplementation.Yes ? "new" : string.Empty; var returnTypeName = $"{baseMethod.ReturnType.GetFullName(baseMethod.ReturnParameter)}"; if (baseMethod.ReturnType != typeof(void)) { var returnTypeAttributes = baseMethod.ReturnParameter.GetAttributes(true, namespaces); return(isMake ? MethodTemplates.GetFunctionForMake(outInitializers, methodDescriptionWithOverride, visibility, requiresNew, returnTypeAttributes, baseMethod.ReturnType) : baseMethod.ReturnType.RequiresExplicitCast() ? MethodTemplates.GetFunctionWithValueTypeReturnValue( baseMethod.MetadataToken, argumentNameList, returnTypeName, expectationChecks, delegateCast, outInitializers, expectationExceptionMessage, methodDescriptionWithOverride, visibility, requiresNew, returnTypeAttributes, hasEvents) : MethodTemplates.GetFunctionWithReferenceTypeReturnValue( baseMethod.MetadataToken, argumentNameList, returnTypeName, expectationChecks, delegateCast, outInitializers, expectationExceptionMessage, methodDescriptionWithOverride, visibility, requiresNew, returnTypeAttributes, hasEvents)); } else { return(isMake ? MethodTemplates.GetActionMethodForMake(outInitializers, methodDescriptionWithOverride, visibility) : MethodTemplates.GetActionMethod(baseMethod.MetadataToken, argumentNameList, expectationChecks, delegateCast, outInitializers, expectationExceptionMessage, methodDescriptionWithOverride, visibility, hasEvents)); } }
public static void GetActionMethodForMake() => Assert.That(MethodTemplates.GetActionMethodForMake("a", "b", "c"), Is.EqualTo( @"c b { a }"));