@@ -172,7 +172,7 @@ void ProcessClasses(YNamespace @namespace, NamespaceDeclarationSyntax inputNames
172172 }
173173 }
174174
175- // todo here could be generics or reflection
175+ // todo good place to use generics or reflection
176176
177177 YStatement ProcessStatement ( StatementSyntax statement )
178178 {
@@ -205,6 +205,8 @@ YExpr ProcessExpr(ExpressionSyntax expr)
205205 return ProcessExpr ( ( MemberAccessExpressionSyntax ) expr ) ;
206206 } else if ( expr is ThisExpressionSyntax ) {
207207 return ProcessExpr ( ( ThisExpressionSyntax ) expr ) ;
208+ } else if ( expr is AssignmentExpressionSyntax ) {
209+ return ProcessExpr ( ( AssignmentExpressionSyntax ) expr ) ;
208210 }
209211
210212 throw new TException ( "Unable to process expression" ) ;
@@ -220,7 +222,7 @@ YExpr ProcessExpr(LiteralExpressionSyntax expr)
220222 if ( expr . Token . IsKind ( SyntaxKind . NullKeyword ) ) {
221223 return YLiteralExpr . Null ;
222224 } else if ( expr . Token . IsKind ( SyntaxKind . NumericLiteralToken ) ) {
223- return new YLiteralExpr ( expr . Token . Value ) ; // looks same as YConstExpr
225+ return new YLiteralExpr ( expr . Token . Value ) ; // Looks like YConstExpr, wtf?!
224226 }
225227
226228 throw new TException ( "Unable to process expr" ) ;
@@ -267,17 +269,21 @@ YExpr ProcessExpr(BinaryExpressionSyntax binaryExpression)
267269 return new YBinaryExpr ( left , right , operation ) ;
268270 }
269271
272+ YExpr ProcessExpr ( AssignmentExpressionSyntax assignmentExpression )
273+ {
274+ YExpr left = ProcessExpr ( assignmentExpression . Left ) ;
275+ YExpr right = ProcessExpr ( assignmentExpression . Right ) ;
276+
277+ return new YAssign ( left , right ) ;
278+ }
279+
270280 YStatement ProcessStatement ( IfStatementSyntax ifStatement )
271281 {
272282 YExpr condition = ProcessExpr ( ifStatement . Condition ) ;
273283 YStatement statement = ProcessStatement ( ifStatement . Statement ) ;
274284 YStatement elseStatement = ProcessStatement ( ifStatement . Else . Statement ) ;
275285
276- if ( condition != null && statement != null ) {
277- return new YIf ( condition , statement , elseStatement ) ;
278- }
279-
280- throw new TException ( "Unable to process statement" ) ;
286+ return new YIf ( condition , statement , elseStatement ) ;
281287 }
282288
283289 YStatement ProcessStatement ( ReturnStatementSyntax statement )
@@ -298,18 +304,7 @@ YStatement ProcessStatement(BlockSyntax statement)
298304
299305 YStatement ProcessStatement ( ExpressionStatementSyntax statement )
300306 {
301- if ( statement . Expression is AssignmentExpressionSyntax ) { // ?!
302- var assignmentExpression = ( AssignmentExpressionSyntax ) statement . Expression ;
303-
304- YExpr left = ProcessExpr ( assignmentExpression . Left ) ;
305- YExpr right = ProcessExpr ( assignmentExpression . Right ) ;
306-
307- if ( left != null && right != null ) {
308- return new YAssign ( left , right ) ; // expression or statement?!
309- }
310- }
311-
312- throw new TException ( "Unable to process statement" ) ;
307+ return new YExprStatement ( ProcessExpr ( statement . Expression ) ) ;
313308 }
314309
315310 YOperator ProcessOperator ( SyntaxToken token )
0 commit comments