1+ namespace Immutype . Core ;
2+
3+ internal static class SyntaxRepo
4+ {
5+ public static SyntaxToken WithSpace ( this SyntaxKind syntaxKind ) =>
6+ SyntaxFactory . Token ( SyntaxFactory . TriviaList ( ) , syntaxKind , SyntaxFactory . TriviaList ( SyntaxFactory . ElasticSpace ) ) ;
7+
8+ public static SyntaxToken WithSpace ( this SyntaxToken syntaxToken ) =>
9+ syntaxToken . WithLeadingTrivia ( syntaxToken . LeadingTrivia . Concat ( new [ ] { SyntaxFactory . ElasticSpace } ) ) ;
10+
11+ private static SyntaxToken WithNewLine ( this SyntaxKind syntaxKind ) =>
12+ SyntaxFactory . Token ( SyntaxFactory . TriviaList ( ) , syntaxKind , SyntaxFactory . TriviaList ( SyntaxFactory . CarriageReturn , SyntaxFactory . LineFeed ) ) ;
13+
14+ public static TSyntax WithSpace < TSyntax > ( this TSyntax node ) where TSyntax : SyntaxNode =>
15+ node . WithLeadingTrivia ( node . GetLeadingTrivia ( ) . Concat ( new [ ] { SyntaxFactory . ElasticSpace } ) ) ;
16+
17+ public static TSyntax WithNewLine < TSyntax > ( this TSyntax node ) where TSyntax : SyntaxNode =>
18+ node . WithLeadingTrivia ( node . GetLeadingTrivia ( ) . Concat ( new [ ] { SyntaxFactory . CarriageReturn , SyntaxFactory . LineFeed } ) ) ;
19+
20+ public static ExpressionStatementSyntax ExpressionStatement ( ExpressionSyntax expression )
21+ => SyntaxFactory . ExpressionStatement ( default , expression , SyntaxKind . SemicolonToken . WithNewLine ( ) ) ;
22+
23+ public static ObjectCreationExpressionSyntax ObjectCreationExpression ( TypeSyntax type , ArgumentListSyntax ? argumentList = default , InitializerExpressionSyntax ? initializer = default )
24+ => SyntaxFactory . ObjectCreationExpression ( SyntaxKind . NewKeyword . WithSpace ( ) , type , argumentList , initializer ) ;
25+
26+ #pragma warning disable RS0027
27+ public static ReturnStatementSyntax ReturnStatement ( ExpressionSyntax ? expression = default )
28+ => SyntaxFactory . ReturnStatement ( default , SyntaxKind . ReturnKeyword . WithSpace ( ) , expression , SyntaxFactory . Token ( SyntaxKind . SemicolonToken ) ) ;
29+ #pragma warning restore RS0027
30+
31+ public static ArrayCreationExpressionSyntax ArrayCreationExpression ( ArrayTypeSyntax type , InitializerExpressionSyntax ? initializer = default )
32+ => SyntaxFactory . ArrayCreationExpression ( SyntaxKind . NewKeyword . WithSpace ( ) , type , initializer ) ;
33+
34+ public static MethodDeclarationSyntax MethodDeclaration ( TypeSyntax returnType , string identifier )
35+ => SyntaxFactory . MethodDeclaration ( default , default , returnType , default , SyntaxFactory . Identifier ( identifier ) . WithSpace ( ) , default , SyntaxFactory . ParameterList ( ) , default , default , default , default ) ;
36+
37+ public static MethodDeclarationSyntax MethodDeclaration ( TypeSyntax returnType , SyntaxToken identifier )
38+ => SyntaxFactory . MethodDeclaration ( default , default , returnType , default , identifier . WithSpace ( ) , default , SyntaxFactory . ParameterList ( ) , default , default , default , default ) ;
39+
40+ public static ClassDeclarationSyntax ClassDeclaration ( string identifier )
41+ => SyntaxFactory . ClassDeclaration ( default , default , SyntaxKind . ClassKeyword . WithSpace ( ) , SyntaxFactory . Identifier ( identifier ) , default , default , default , SyntaxKind . OpenBraceToken . WithNewLine ( ) , default , SyntaxKind . CloseBraceToken . WithNewLine ( ) , default ) ;
42+
43+ public static ParameterSyntax Parameter ( SyntaxToken identifier )
44+ => SyntaxFactory . Parameter ( default , default , default , identifier . WithSpace ( ) , default ) ;
45+
46+ #pragma warning disable RS0027
47+ public static ThrowStatementSyntax ThrowStatement ( ExpressionSyntax ? expression = default )
48+ => SyntaxFactory . ThrowStatement ( default , SyntaxKind . ThrowKeyword . WithSpace ( ) , expression , SyntaxFactory . Token ( SyntaxKind . SemicolonToken ) ) ;
49+ #pragma warning restore RS0027
50+ }
0 commit comments