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));
        }
Ejemplo n.º 2
0
        public override IEnumerable <SyntaxNode> BuildSyntax(IDom item)
        {
            var itemAsT          = item as IArgument;
            var modifiers        = BuildSyntaxHelpers.BuildModfierSyntax(itemAsT);
            var expressionSyntax = (ExpressionSyntax)RDom.CSharp.GetSyntaxNode(itemAsT.ValueExpression);

            expressionSyntax = BuildSyntaxHelpers.AttachWhitespaceToFirstAndLast(expressionSyntax, itemAsT.Whitespace2Set[LanguageElement.Expression]);
            var node = SyntaxFactory.Argument(expressionSyntax);

            if (itemAsT.IsOut)
            {
                node = node.WithRefOrOutKeyword(SyntaxFactory.Token(SyntaxKind.OutKeyword));
            }
            else if (itemAsT.IsRef)
            {
                node = node.WithRefOrOutKeyword(SyntaxFactory.Token(SyntaxKind.RefKeyword));
            }
            node = BuildSyntaxHelpers.AttachWhitespaceToFirst(node, itemAsT.Whitespace2Set[LanguageElement.OutModifier]);
            node = BuildSyntaxHelpers.AttachWhitespaceToFirst(node, itemAsT.Whitespace2Set[LanguageElement.RefModifier]);

            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));
        }
Ejemplo n.º 3
0
        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));
        }
        public override IEnumerable <SyntaxNode> BuildSyntax(IDom item)
        {
            var itemAsT = item as IReferencedType;
            var node    = TypeSyntaxFromType(itemAsT);

            node = BuildSyntaxHelpers.AttachWhitespaceToFirst(node,
                                                              itemAsT.Whitespace2Set.
                                                              Where(x => x.LanguageElement == LanguageElement.FirstToken)
                                                              .FirstOrDefault());
            node = BuildSyntaxHelpers.AttachWhitespaceToLast(node,
                                                             itemAsT.Whitespace2Set.
                                                             Where(x => x.LanguageElement == LanguageElement.LastToken)
                                                             .FirstOrDefault());
            node = BuildSyntaxHelpers.AttachWhitespace(node, itemAsT.Whitespace2Set, whitespaceLookup);

            return(node.PrepareForBuildSyntaxOutput(item, OutputContext));
        }