Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ExpressionNode.cc

    r7ecbb7e r7880579  
    167167
    168168NameExpr * build_varref( const string *name, bool labelp ) {
    169         NameExpr *expr = new NameExpr( *name, nullptr );
    170         delete name;
    171         return expr;
     169        return new NameExpr( *name, nullptr );
    172170}
    173171
     
    186184        if ( dynamic_cast< VoidType * >( targetType ) ) {
    187185                delete targetType;
    188                 return new CastExpr( maybeMoveBuild< Expression >(expr_node) );
     186                return new CastExpr( maybeBuild< Expression >(expr_node) );
    189187        } else {
    190                 return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );
     188                return new CastExpr( maybeBuild< Expression >(expr_node), targetType );
    191189        } // if
    192190}
    193191
    194192Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    195         UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) );
     193        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild< Expression >(expr_node) );
    196194        delete member;
    197195        return ret;
     
    200198Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    201199        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    202         deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) );
     200        deref->get_args().push_back( maybeBuild< Expression >(expr_node) );
    203201        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    204202        delete member;
     
    207205
    208206Expression *build_addressOf( ExpressionNode *expr_node ) {
    209                 return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );
     207                return new AddressExpr( maybeBuild< Expression >(expr_node) );
    210208}
    211209Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
    212         return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) );
     210        return new SizeofExpr( maybeBuild< Expression >(expr_node) );
    213211}
    214212Expression *build_sizeOftype( DeclarationNode *decl_node ) {
     
    216214}
    217215Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
    218         return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) );
     216        return new AlignofExpr( maybeBuild< Expression >(expr_node) );
    219217}
    220218Expression *build_alignOftype( DeclarationNode *decl_node ) {
     
    226224
    227225Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
    228         return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind );
     226        return new LogicalExpr( notZeroExpr( maybeBuild< Expression >(expr_node1) ), notZeroExpr( maybeBuild< Expression >(expr_node2) ), kind );
    229227}
    230228
    231229Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
    232230        std::list< Expression * > args;
    233         args.push_back( maybeMoveBuild< Expression >(expr_node) );
     231        args.push_back( maybeBuild< Expression >(expr_node) );
    234232        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    235233}
    236234Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
    237235        std::list< Expression * > args;
    238         args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) );
     236        args.push_back( new AddressExpr( maybeBuild< Expression >(expr_node) ) );
    239237        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    240238}
    241239Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    242240        std::list< Expression * > args;
    243         args.push_back( maybeMoveBuild< Expression >(expr_node1) );
    244         args.push_back( maybeMoveBuild< Expression >(expr_node2) );
     241        args.push_back( maybeBuild< Expression >(expr_node1) );
     242        args.push_back( maybeBuild< Expression >(expr_node2) );
    245243        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    246244}
    247245Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    248246        std::list< Expression * > args;
    249         args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) );
    250         args.push_back( maybeMoveBuild< Expression >(expr_node2) );
     247        args.push_back( new AddressExpr( maybeBuild< Expression >(expr_node1) ) );
     248        args.push_back( maybeBuild< Expression >(expr_node2) );
    251249        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    252250}
    253251
    254252Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
    255         return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) );
     253        return new ConditionalExpr( notZeroExpr( maybeBuild< Expression >(expr_node1) ), maybeBuild< Expression >(expr_node2), maybeBuild< Expression >(expr_node3) );
    256254}
    257255
    258256Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    259         return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) );
     257        return new CommaExpr( maybeBuild< Expression >(expr_node1), maybeBuild< Expression >(expr_node2) );
    260258}
    261259
    262260Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
    263         return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) );
     261        return new AttrExpr( var, maybeBuild< Expression >(expr_node) );
    264262}
    265263Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
     
    269267Expression *build_tuple( ExpressionNode * expr_node ) {
    270268        TupleExpr *ret = new TupleExpr();
    271         buildMoveList( expr_node, ret->get_exprs() );
     269        buildList( expr_node, ret->get_exprs() );
    272270        return ret;
    273271}
     
    275273Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
    276274        std::list< Expression * > args;
    277         buildMoveList( expr_node, args );
    278         return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr );
     275
     276        buildList( expr_node, args );
     277        return new UntypedExpr( maybeBuild< Expression >(function), args, nullptr );
    279278}
    280279
    281280Expression *build_range( ExpressionNode * low, ExpressionNode *high ) {
    282         return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) );
     281        Expression *low_cexpr = maybeBuild< Expression >( low );
     282        Expression *high_cexpr = maybeBuild< Expression >( high );
     283        return new RangeExpr( low_cexpr, high_cexpr );
    283284}
    284285
    285286Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
    286         return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) );
     287        return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild< Expression >(operand) );
    287288}
    288289
    289290Expression *build_valexpr( StatementNode *s ) {
    290         return new UntypedValofExpr( maybeMoveBuild< Statement >(s), nullptr );
     291        return new UntypedValofExpr( maybeBuild< Statement >(s), nullptr );
    291292}
    292293Expression *build_typevalue( DeclarationNode *decl ) {
     
    297298        Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type
    298299        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    299                 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) );
     300                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild< Initializer >(kids) );
    300301        // these types do not have associated type information
    301302        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
    302                 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
     303                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild< Initializer >(kids) );
    303304        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
    304                 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
     305                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild< Initializer >(kids) );
    305306        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
    306                 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
     307                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild< Initializer >(kids) );
    307308        } else {
    308309                assert( false );
Note: See TracChangeset for help on using the changeset viewer.