Changes in src/Parser/ExpressionNode.cc [7ecbb7e:7880579]
- File:
-
- 1 edited
-
src/Parser/ExpressionNode.cc (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ExpressionNode.cc
r7ecbb7e r7880579 167 167 168 168 NameExpr * 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 ); 172 170 } 173 171 … … 186 184 if ( dynamic_cast< VoidType * >( targetType ) ) { 187 185 delete targetType; 188 return new CastExpr( maybe MoveBuild< Expression >(expr_node) );186 return new CastExpr( maybeBuild< Expression >(expr_node) ); 189 187 } else { 190 return new CastExpr( maybe MoveBuild< Expression >(expr_node), targetType );188 return new CastExpr( maybeBuild< Expression >(expr_node), targetType ); 191 189 } // if 192 190 } 193 191 194 192 Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) { 195 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybe MoveBuild< Expression >(expr_node) );193 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild< Expression >(expr_node) ); 196 194 delete member; 197 195 return ret; … … 200 198 Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) { 201 199 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) ); 202 deref->get_args().push_back( maybe MoveBuild< Expression >(expr_node) );200 deref->get_args().push_back( maybeBuild< Expression >(expr_node) ); 203 201 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref ); 204 202 delete member; … … 207 205 208 206 Expression *build_addressOf( ExpressionNode *expr_node ) { 209 return new AddressExpr( maybe MoveBuild< Expression >(expr_node) );207 return new AddressExpr( maybeBuild< Expression >(expr_node) ); 210 208 } 211 209 Expression *build_sizeOfexpr( ExpressionNode *expr_node ) { 212 return new SizeofExpr( maybe MoveBuild< Expression >(expr_node) );210 return new SizeofExpr( maybeBuild< Expression >(expr_node) ); 213 211 } 214 212 Expression *build_sizeOftype( DeclarationNode *decl_node ) { … … 216 214 } 217 215 Expression *build_alignOfexpr( ExpressionNode *expr_node ) { 218 return new AlignofExpr( maybe MoveBuild< Expression >(expr_node) );216 return new AlignofExpr( maybeBuild< Expression >(expr_node) ); 219 217 } 220 218 Expression *build_alignOftype( DeclarationNode *decl_node ) { … … 226 224 227 225 Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) { 228 return new LogicalExpr( notZeroExpr( maybe MoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind );226 return new LogicalExpr( notZeroExpr( maybeBuild< Expression >(expr_node1) ), notZeroExpr( maybeBuild< Expression >(expr_node2) ), kind ); 229 227 } 230 228 231 229 Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) { 232 230 std::list< Expression * > args; 233 args.push_back( maybe MoveBuild< Expression >(expr_node) );231 args.push_back( maybeBuild< Expression >(expr_node) ); 234 232 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 235 233 } 236 234 Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) { 237 235 std::list< Expression * > args; 238 args.push_back( new AddressExpr( maybe MoveBuild< Expression >(expr_node) ) );236 args.push_back( new AddressExpr( maybeBuild< Expression >(expr_node) ) ); 239 237 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 240 238 } 241 239 Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 242 240 std::list< Expression * > args; 243 args.push_back( maybe MoveBuild< Expression >(expr_node1) );244 args.push_back( maybe MoveBuild< Expression >(expr_node2) );241 args.push_back( maybeBuild< Expression >(expr_node1) ); 242 args.push_back( maybeBuild< Expression >(expr_node2) ); 245 243 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 246 244 } 247 245 Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 248 246 std::list< Expression * > args; 249 args.push_back( new AddressExpr( maybe MoveBuild< Expression >(expr_node1) ) );250 args.push_back( maybe MoveBuild< Expression >(expr_node2) );247 args.push_back( new AddressExpr( maybeBuild< Expression >(expr_node1) ) ); 248 args.push_back( maybeBuild< Expression >(expr_node2) ); 251 249 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 252 250 } 253 251 254 252 Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) { 255 return new ConditionalExpr( notZeroExpr( maybe MoveBuild< 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) ); 256 254 } 257 255 258 256 Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 259 return new CommaExpr( maybe MoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) );257 return new CommaExpr( maybeBuild< Expression >(expr_node1), maybeBuild< Expression >(expr_node2) ); 260 258 } 261 259 262 260 Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) { 263 return new AttrExpr( var, maybe MoveBuild< Expression >(expr_node) );261 return new AttrExpr( var, maybeBuild< Expression >(expr_node) ); 264 262 } 265 263 Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) { … … 269 267 Expression *build_tuple( ExpressionNode * expr_node ) { 270 268 TupleExpr *ret = new TupleExpr(); 271 build MoveList( expr_node, ret->get_exprs() );269 buildList( expr_node, ret->get_exprs() ); 272 270 return ret; 273 271 } … … 275 273 Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) { 276 274 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 ); 279 278 } 280 279 281 280 Expression *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 ); 283 284 } 284 285 285 286 Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) { 286 return new AsmExpr( maybe MoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) );287 return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild< Expression >(operand) ); 287 288 } 288 289 289 290 Expression *build_valexpr( StatementNode *s ) { 290 return new UntypedValofExpr( maybe MoveBuild< Statement >(s), nullptr );291 return new UntypedValofExpr( maybeBuild< Statement >(s), nullptr ); 291 292 } 292 293 Expression *build_typevalue( DeclarationNode *decl ) { … … 297 298 Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type 298 299 if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type 299 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybe MoveBuild< Initializer >(kids) );300 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild< Initializer >(kids) ); 300 301 // these types do not have associated type information 301 302 } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl ) ) { 302 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybe MoveBuild< Initializer >(kids) );303 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild< Initializer >(kids) ); 303 304 } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl ) ) { 304 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybe MoveBuild< Initializer >(kids) );305 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild< Initializer >(kids) ); 305 306 } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl ) ) { 306 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybe MoveBuild< Initializer >(kids) );307 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild< Initializer >(kids) ); 307 308 } else { 308 309 assert( false );
Note:
See TracChangeset
for help on using the changeset viewer.