src/compiler/SemanticAnalysis.cpp
changeset 217 c22e983b3b6e
parent 215 b8f650a441a5
child 218 ccb089827f87
     1.1 --- a/src/compiler/SemanticAnalysis.cpp	Sun Nov 18 15:26:12 2012 -0800
     1.2 +++ b/src/compiler/SemanticAnalysis.cpp	Sun Nov 18 15:50:41 2012 -0800
     1.3 @@ -586,6 +586,31 @@
     1.4                                right);
     1.5  }
     1.6  
     1.7 +void
     1.8 +SemanticAnalysis::visitIncDecExpression(IncDecExpression *node)
     1.9 +{
    1.10 +    HLValue *lval = lvalue(node->expression());
    1.11 +    if (!lval)
    1.12 +        return;
    1.13 +
    1.14 +    if (!lval->type()->isInt32() && !lval->type()->isFloat()) {
    1.15 +        assert(false);
    1.16 +        return;
    1.17 +    }
    1.18 +
    1.19 +    HIR *rval;
    1.20 +    if (lval->type()->isInt32())
    1.21 +        rval = new (pool_) HInteger(lval->type(), 1);
    1.22 +    else
    1.23 +        rval = new (pool_) HFloat(lval->type(), 1.0);
    1.24 +
    1.25 +    if (node->postfix()) {
    1.26 +        assert(false);
    1.27 +    } else {
    1.28 +        hir_ = new (pool_) HStore(node->token(), lval, rval);
    1.29 +    }
    1.30 +}
    1.31 +
    1.32  Type *
    1.33  SemanticAnalysis::coercionType(TokenKind token, HIR *left, HIR *right)
    1.34  {