private ArgumentListSyntax FormatThenArguments(List <InvocationExpressionSyntax> checks) { var lambda = TypeAssertionGenerator.WrapIntoLambda(checks, "c"); var arglist = ArgumentList(SingletonSeparatedList(Argument(lambda))).WithAdditionalAnnotations(Annotations.ThenArgument); return(arglist); }
private void Visit(CommandBase command) { if (command is End) { TheEnd(); } else { var validatedProperties = GetValidatedProperties(command); if (validatedProperties.Length == 0) { Then(command); //needed to do not overwhelm braces } else { var invokations = new List <InvocationExpressionSyntax>(); foreach (var validatedProperty in validatedProperties) { if (_optOuts.Contains(validatedProperty.Item1.OptOutFlag)) { continue; } var commandDescription = string.IsNullOrEmpty(command.Annotation)? command.GetType().Name:$"'{command.Annotation}'"; var meaning = validatedProperty.Item1.Meaning ?? $"property {validatedProperty.Item2.Name}"; var propMeaning = validatedProperty.Item1.Meaning ?? $"{meaning} of command {commandDescription}"; var instance = new AssertInstanceReference ( validatedProperty.Item2.GetValue(command), validatedProperty.Item2.PropertyType, MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, IdentifierName("c"), IdentifierName(validatedProperty.Item2.Name)), propMeaning, _usings ); var assertions = TypeAssertionGenerator.AssertionFor(instance) .ToArray(); invokations.AddRange(assertions); invokations.Add(null); } Then(command, invokations); } } }