public override IEnumerable <SyntaxNode> BuildSyntax(IDom item) { var itemAsT = item as IParameter; Guardian.Assert.IsNotNull(itemAsT, nameof(itemAsT)); var nameSyntax = SyntaxFactory.Identifier(itemAsT.Name); var syntaxType = (TypeSyntax)(RDom.CSharp.GetSyntaxNode(itemAsT.Type)); syntaxType = BuildSyntaxHelpers.RemoveLeadingSpaces(syntaxType); var node = SyntaxFactory.Parameter(nameSyntax) .WithType(syntaxType); if (itemAsT.DefaultValueType != LiteralKind.Unknown) { var defaultValueExpression = BuildSyntaxHelpers.BuildArgValueExpression( itemAsT.DefaultValue, itemAsT.DefaultConstantIdentifier, itemAsT.DefaultValueType); var defaultClause = SyntaxFactory.EqualsValueClause(defaultValueExpression); defaultClause = BuildSyntaxHelpers.AttachWhitespace(defaultClause, item.Whitespace2Set, WhitespaceLookup); node = node.WithDefault(defaultClause); } var attributes = BuildSyntaxWorker.BuildAttributeSyntax(itemAsT.Attributes); if (attributes.Any()) { node = node.WithAttributeLists(BuildSyntaxHelpers.WrapInAttributeList(attributes)); } var modifiers = SyntaxFactory.TokenList(); if (itemAsT.IsOut) { modifiers = modifiers.Add(SyntaxFactory.Token(SyntaxKind.OutKeyword)); } if (itemAsT.IsRef) { modifiers = modifiers.Add(SyntaxFactory.Token(SyntaxKind.RefKeyword)); } if (itemAsT.IsParamArray) { modifiers = modifiers.Add(SyntaxFactory.Token(SyntaxKind.ParamsKeyword)); } if (modifiers.Any()) { node = node.WithModifiers(modifiers); } node = BuildSyntaxHelpers.AttachWhitespace(node, item.Whitespace2Set, WhitespaceLookup); node = BuildSyntaxHelpers.AttachWhitespaceToFirst(node, item.Whitespace2Set[LanguageElement.ParameterFirstToken]); node = BuildSyntaxHelpers.AttachWhitespaceToLast(node, item.Whitespace2Set[LanguageElement.ParameterLastToken]); return(node.PrepareForBuildSyntaxOutput(item, OutputContext)); }