@@ -333,6 +333,34 @@ function buildFromBinaryExpression(
333333 }
334334}
335335
336+ function buildFromPostfixUnaryExpression (
337+ expr : ts . PostfixUnaryExpression ,
338+ ctx : Context ,
339+ builder : llvm . IRBuilder
340+ ) : llvm . Value {
341+ switch ( expr . operator ) {
342+ case ts . SyntaxKind . PlusPlusToken : {
343+ const left = buildFromExpression ( expr . operand , ctx , builder ) ;
344+
345+ const next = builder . createFAdd (
346+ loadIfNeeded ( left , builder , ctx ) ,
347+ llvm . ConstantFP . get ( ctx . llvmContext , 1 )
348+ ) ;
349+
350+ return builder . createStore (
351+ next ,
352+ left ,
353+ false
354+ ) ;
355+ }
356+ default :
357+ throw new UnsupportedError (
358+ expr ,
359+ `Unsupported PostfixUnaryExpression.operator: "${ expr . operator } "`
360+ ) ;
361+ }
362+ }
363+
336364function buildCalleFromCallExpression (
337365 expr : ts . CallExpression ,
338366 ctx : Context ,
@@ -464,6 +492,8 @@ function buildFromExpression(block: ts.Expression, ctx: Context, builder: llvm.I
464492 return buildFromFalseKeyword ( < any > block , ctx , builder ) ;
465493 case ts . SyntaxKind . BinaryExpression :
466494 return buildFromBinaryExpression ( < any > block , ctx , builder ) ;
495+ case ts . SyntaxKind . PostfixUnaryExpression :
496+ return buildFromPostfixUnaryExpression ( < any > block , ctx , builder ) ;
467497 case ts . SyntaxKind . CallExpression :
468498 return < any > buildFromCallExpression ( < any > block , ctx , builder ) ;
469499 case ts . SyntaxKind . ExpressionStatement :
0 commit comments