Ejemplo n.º 1
0
        private static ParameterSyntax ConvertPointerToRefParameter(ParameterSyntax parameter)
        {
            var pointerType = (PointerTypeSyntax)parameter.Type;

            return(parameter
                   .AddModifiers(SyntaxFactory.Token(SyntaxKind.RefKeyword))
                   .WithType(pointerType.ElementType));
        }
Ejemplo n.º 2
0
 public static ParameterSyntax WithRef(this ParameterSyntax syntax, bool isRef)
 {
     if (isRef)
     {
         return(syntax.AddModifiers(SyntaxFactory.Token(SyntaxKind.RefKeyword)));
     }
     else
     {
         return(syntax.WithModifiers(SyntaxFactory.TokenList()));
     }
 }
Ejemplo n.º 3
0
        public CSharpSyntaxNode Convert(Parameter node)
        {
            ParameterSyntax csParameter = SyntaxFactory.Parameter(SyntaxFactory.Identifier(node.Name.Text));
            TypeSyntax      csType      = node.Type.ToCsNode <TypeSyntax>();

            Node initializer = node.Initializer;

            if (node.IsOptional && initializer == null)
            {
                initializer = NodeHelper.CreateNode(NodeKind.NullKeyword);
            }
            if (initializer != null)
            {
                csParameter = csParameter.WithDefault(SyntaxFactory.EqualsValueClause(initializer.ToCsNode <ExpressionSyntax>()));

                // A(alias: number = 1): void
                if (initializer.Kind != NodeKind.NullKeyword && initializer.Kind != NodeKind.UndefinedKeyword)
                {
                    switch (node.Type.Kind)
                    {
                    case NodeKind.NumberKeyword:
                        csType = SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.DoubleKeyword));
                        break;

                    case NodeKind.StringKeyword:
                        csType = SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.StringKeyword));
                        break;

                    case NodeKind.BooleanKeyword:
                        csType = SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.BoolKeyword));
                        break;

                    default:
                        break;
                    }
                }
            }

            if (node.IsVariable)
            {
                csParameter = csParameter.AddModifiers(SyntaxFactory.Token(SyntaxKind.ParamsKeyword));
            }
            if (!node.IgnoreType)
            {
                csParameter = csParameter.WithType(csType);
            }

            return(csParameter);
        }
Ejemplo n.º 4
0
 public static ParameterSyntax AddModifiers(this ParameterSyntax syntax, params SyntaxKind[] modifier)
 {
     return(syntax.AddModifiers(modifier.Select(Token).ToArray()));
 }
Ejemplo n.º 5
0
 public static ParameterSyntax WithRef(this ParameterSyntax syntax, bool isRef)
 => isRef
         ? syntax.AddModifiers(SyntaxFactory.Token(SyntaxKind.RefKeyword))
         : syntax.WithModifiers(SyntaxFactory.TokenList());