internal static ArgumentSyntax DecorateWithModifiers(this ArgumentSyntax @this, IParameterSymbol parameterSymbol) { switch (parameterSymbol.RefKind) { case RefKind.None: break; case RefKind.Ref: @this = @this.WithRefKindKeyword( SyntaxKind.RefKeyword.BuildToken(Array.Empty <SyntaxTrivia>(), new[] { Space })); break; case RefKind.Out: @this = @this.WithRefKindKeyword( SyntaxKind.OutKeyword.BuildToken(Array.Empty <SyntaxTrivia>(), new[] { Space })); break; case RefKind.In: break; default: throw new ArgumentOutOfRangeException(); } return(@this); }
internal ArgumentSyntax GetParameter(string paramName, bool withModifiers) { ArgumentSyntax param = null; if (Type.IsDefault) { param = SyntaxFactory.Argument( SyntaxFactory.IdentifierName(paramName)); } else { param = SyntaxFactory.Argument( SyntaxFactory.MemberAccessExpression( SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.IdentifierName(paramName), SyntaxFactory.IdentifierName("Object"))); } if (withModifiers && Modifiers.Length != 0) { param = param.WithRefKindKeyword( SyntaxFactory.ParseToken(Modifiers[0])); } return(param); }