private static ParameterSyntax ConvertPointerToRefParameter(ParameterSyntax parameter) { var pointerType = (PointerTypeSyntax)parameter.Type; return(parameter .AddModifiers(SyntaxFactory.Token(SyntaxKind.RefKeyword)) .WithType(pointerType.ElementType)); }
public static ParameterSyntax WithRef(this ParameterSyntax syntax, bool isRef) { if (isRef) { return(syntax.AddModifiers(SyntaxFactory.Token(SyntaxKind.RefKeyword))); } else { return(syntax.WithModifiers(SyntaxFactory.TokenList())); } }
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); }
public static ParameterSyntax AddModifiers(this ParameterSyntax syntax, params SyntaxKind[] modifier) { return(syntax.AddModifiers(modifier.Select(Token).ToArray())); }
public static ParameterSyntax WithRef(this ParameterSyntax syntax, bool isRef) => isRef ? syntax.AddModifiers(SyntaxFactory.Token(SyntaxKind.RefKeyword)) : syntax.WithModifiers(SyntaxFactory.TokenList());