@@ -110,22 +110,101 @@ private BlockSyntax Transform( BlockSyntax block )
110110
111111 private StatementSyntax Transform ( StatementSyntax stmt )
112112 => stmt switch {
113+ BlockSyntax blockStmt => Transform ( blockStmt ) ,
114+
115+ BreakStatementSyntax => stmt ,
116+
117+ ContinueStatementSyntax => stmt ,
118+
119+ DoStatementSyntax doStmt => doStmt
120+ . WithStatement ( Transform ( doStmt . Statement ) )
121+ . WithCondition ( Transform ( doStmt . Condition ) ) ,
122+
123+ EmptyStatementSyntax => stmt ,
124+
113125 ExpressionStatementSyntax exprStmt => exprStmt
114126 . WithExpression ( Transform ( exprStmt . Expression ) ) ,
115127
128+ GotoStatementSyntax => stmt ,
129+
130+ IfStatementSyntax ifStmt => ifStmt
131+ . WithCondition ( Transform ( ifStmt . Condition ) )
132+ . WithStatement ( Transform ( ifStmt . Statement ) )
133+ . WithElse ( MaybeTransform ( ifStmt . Else , Transform ) ) ,
134+
135+ LabeledStatementSyntax labeledStmt => labeledStmt
136+ . WithStatement ( Transform ( labeledStmt . Statement ) ) ,
137+
138+ ThrowStatementSyntax throwStmt => throwStmt
139+ . WithExpression ( MaybeTransform ( throwStmt . Expression , Transform ) ) ,
140+
116141 ReturnStatementSyntax returnStmt => returnStmt
117142 . WithExpression ( MaybeTransform ( returnStmt . Expression , Transform ) ) ,
118143
144+ WhileStatementSyntax whileStmt => whileStmt
145+ . WithCondition ( Transform ( whileStmt . Condition ) )
146+ . WithStatement ( Transform ( whileStmt . Statement ) ) ,
147+
119148 _ => UnhandledSyntax ( stmt )
120149 } ;
121150
122151 private ExpressionSyntax Transform ( ExpressionSyntax expr )
123152 => expr switch {
153+ AssignmentExpressionSyntax asgnExpr => asgnExpr
154+ . WithLeft ( Transform ( asgnExpr . Left ) )
155+ . WithRight ( Transform ( asgnExpr . Right ) ) ,
156+
157+ BinaryExpressionSyntax binExpr => binExpr
158+ . WithLeft ( Transform ( binExpr . Left ) )
159+ . WithRight ( Transform ( binExpr . Right ) ) ,
160+
161+
162+ ConditionalExpressionSyntax condExpr => condExpr
163+ . WithCondition ( Transform ( condExpr . Condition ) )
164+ . WithWhenTrue ( Transform ( condExpr . WhenTrue ) )
165+ . WithWhenFalse ( Transform ( condExpr . WhenFalse ) ) ,
166+
167+ DefaultExpressionSyntax => expr ,
168+
169+ ElementAccessExpressionSyntax eaExpr => eaExpr
170+ . WithExpression ( Transform ( eaExpr . Expression ) )
171+ . WithArgumentList ( TransformAll ( eaExpr . ArgumentList , Transform ) ) ,
172+
124173 LiteralExpressionSyntax => expr ,
125174
175+ ObjectCreationExpressionSyntax newExpr => newExpr
176+ . WithArgumentList ( MaybeTransform ( newExpr . ArgumentList , Transform ) )
177+ . WithInitializer ( MaybeTransform ( newExpr . Initializer , Transform ) ) ,
178+
179+ ParenthesizedExpressionSyntax pExpr => pExpr
180+ . WithExpression ( Transform ( pExpr . Expression ) ) ,
181+
182+ PostfixUnaryExpressionSyntax postfixExpr => postfixExpr
183+ . WithOperand ( Transform ( postfixExpr . Operand ) ) ,
184+
185+ PrefixUnaryExpressionSyntax prefixExpr => prefixExpr
186+ . WithOperand ( Transform ( prefixExpr . Operand ) ) ,
187+
188+ SizeOfExpressionSyntax => expr ,
189+
190+ ThisExpressionSyntax => expr ,
191+
192+
126193 _ => UnhandledSyntax ( expr )
127194 } ;
128195
196+ private ElseClauseSyntax Transform ( ElseClauseSyntax clause )
197+ => clause . WithStatement ( Transform ( clause . Statement ) ) ;
198+
199+ private ArgumentListSyntax Transform ( ArgumentListSyntax argList )
200+ => TransformAll ( argList , Transform ) ;
201+
202+ private ArgumentSyntax Transform ( ArgumentSyntax argument )
203+ => argument . WithExpression ( Transform ( argument . Expression ) ) ;
204+
205+ private InitializerExpressionSyntax Transform ( InitializerExpressionSyntax initializer )
206+ => initializer . WithExpressions ( TransformAll ( initializer . Expressions , Transform ) ) ;
207+
129208 private bool IsGenerateSyncAttribute ( AttributeSyntax attribute ) {
130209 var attributeConstructorSymbol = Model . GetSymbolInfo ( attribute , Token ) . Symbol as IMethodSymbol ;
131210
0 commit comments