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);
        }
Beispiel #2
0
        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);
        }