public override IEnumerable <SyntaxNode> BuildSyntax(IDom item) { var itemAsT = item as IAttributeValue; var argNameSyntax = SyntaxFactory.IdentifierName(itemAsT.Name); argNameSyntax = BuildSyntaxHelpers.AttachWhitespaceToFirst(argNameSyntax, item.Whitespace2Set[LanguageElement.AttributeValueName]); argNameSyntax = BuildSyntaxHelpers.AttachWhitespaceToLast(argNameSyntax, item.Whitespace2Set[LanguageElement.AttributeValueName]); //var kind = Mappings.SyntaxKindFromLiteralKind(itemAsT.ValueType, itemAsT.Value); ExpressionSyntax expr = BuildSyntaxHelpers.BuildArgValueExpression( itemAsT.Value, itemAsT.ValueConstantIdentifier, itemAsT.ValueType); var node = SyntaxFactory.AttributeArgument(expr); if (itemAsT.Style == AttributeValueStyle.Colon) { var nameColon = SyntaxFactory.NameColon(argNameSyntax); nameColon = BuildSyntaxHelpers.AttachWhitespaceToLast(nameColon, item.Whitespace2Set[LanguageElement.AttributeValueEqualsOrColon]); node = node.WithNameColon(nameColon); } else if (itemAsT.Style == AttributeValueStyle.Equals) { var nameEquals = SyntaxFactory.NameEquals(argNameSyntax); nameEquals = BuildSyntaxHelpers.AttachWhitespaceToLast(nameEquals, item.Whitespace2Set[LanguageElement.AttributeValueEqualsOrColon]); node = node.WithNameEquals(nameEquals); } node = BuildSyntaxHelpers.AttachWhitespaceToFirstAndLast(node, item.Whitespace2Set[LanguageElement.AttributeValueValue]); return(node.PrepareForBuildSyntaxOutput(item, OutputContext)); }
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)); }