Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Expression.cc

    r0690350 r5e2c348  
    597597
    598598StmtExpr::StmtExpr( CompoundStmt *statements ) : statements( statements ) {
     599        computeResult();
     600}
     601StmtExpr::StmtExpr( const StmtExpr &other ) : Expression( other ), statements( other.statements->clone() ) {
     602        cloneAll( other.returnDecls, returnDecls );
     603        cloneAll( other.dtors, dtors );
     604}
     605StmtExpr::~StmtExpr() {
     606        delete statements;
     607        deleteAll( dtors );
     608        deleteAll( returnDecls );
     609}
     610void StmtExpr::computeResult() {
    599611        assert( statements );
    600         std::list< Statement * > & body = statements->get_kids();
     612        std::list< Statement * > & body = statements->kids;
     613        delete result;
     614        result = nullptr;
    601615        if ( ! body.empty() ) {
    602616                if ( ExprStmt * exprStmt = dynamic_cast< ExprStmt * >( body.back() ) ) {
     
    608622                result = new VoidType( Type::Qualifiers() );
    609623        }
    610 }
    611 StmtExpr::StmtExpr( const StmtExpr &other ) : Expression( other ), statements( other.statements->clone() ) {
    612         cloneAll( other.returnDecls, returnDecls );
    613         cloneAll( other.dtors, dtors );
    614 }
    615 StmtExpr::~StmtExpr() {
    616         delete statements;
    617         deleteAll( dtors );
    618         deleteAll( returnDecls );
    619624}
    620625void StmtExpr::print( std::ostream &os, Indenter indent ) const {
Note: See TracChangeset for help on using the changeset viewer.