Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ExpressionNode.cc

    rab57786 r4f147cc  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug 21 09:43:31 2016
    13 // Update Count     : 501
     12// Last Modified On : Tue Aug 16 00:09:20 2016
     13// Update Count     : 495
    1414//
    1515
     
    120120        } // if
    121121
    122         Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) );
    123         delete &str;                                                                            // created by lex
    124         return ret;
     122        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) );
    125123} // build_constantInteger
    126124
     
    152150        } // if
    153151
    154         Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) );
    155         delete &str;                                                                            // created by lex
    156         return ret;
     152        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) );
    157153} // build_constantFloat
    158154
    159155Expression *build_constantChar( const std::string & str ) {
    160         Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
    161         delete &str;                                                                            // created by lex
    162         return ret;
     156        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
    163157} // build_constantChar
    164158
     
    169163                                                                                        toString( str.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
    170164                                                                   false, false );
    171         ConstantExpr * ret = new ConstantExpr( Constant( at, str ) );
    172         delete &str;                                                                            // created by lex
    173         return ret;
     165        return new ConstantExpr( Constant( at, str ) );
    174166} // build_constantStr
    175167
     
    191183
    192184Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    193         Type *targetType = decl_node->buildType();
     185        Type *targetType = maybeMoveBuildType( decl_node );
    194186        if ( dynamic_cast< VoidType * >( targetType ) ) {
    195187                delete targetType;
     
    221213}
    222214Expression *build_sizeOftype( DeclarationNode *decl_node ) {
    223         Expression* ret = new SizeofExpr( decl_node->buildType() );
    224         delete decl_node;
    225         return ret;
     215        return new SizeofExpr( maybeMoveBuildType( decl_node ) );
    226216}
    227217Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
     
    229219}
    230220Expression *build_alignOftype( DeclarationNode *decl_node ) {
    231         return new AlignofExpr( decl_node->buildType() );
     221        return new AlignofExpr( maybeMoveBuildType( decl_node) );
    232222}
    233223Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
    234         Expression* ret = new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
    235         delete decl_node;
     224        Expression* ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() );
    236225        delete member;
    237226        return ret;
     
    277266}
    278267Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
    279         return new AttrExpr( var, decl_node->buildType() );
     268        return new AttrExpr( var, maybeMoveBuildType( decl_node ) );
    280269}
    281270
     
    304293}
    305294Expression *build_typevalue( DeclarationNode *decl ) {
    306         return new TypeExpr( decl->buildType() );
     295        return new TypeExpr( maybeMoveBuildType( decl ) );
    307296}
    308297
Note: See TracChangeset for help on using the changeset viewer.