Changes in src/Parser/ExpressionNode.cc [ab57786:4f147cc]
- File:
-
- 1 edited
-
src/Parser/ExpressionNode.cc (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ExpressionNode.cc
rab57786 r4f147cc 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 21 09:43:31201613 // Update Count : 50112 // Last Modified On : Tue Aug 16 00:09:20 2016 13 // Update Count : 495 14 14 // 15 15 … … 120 120 } // if 121 121 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 ) ); 125 123 } // build_constantInteger 126 124 … … 152 150 } // if 153 151 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 ) ); 157 153 } // build_constantFloat 158 154 159 155 Expression *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 ) ); 163 157 } // build_constantChar 164 158 … … 169 163 toString( str.size()+1-2 ) ) ), // +1 for '\0' and -2 for '"' 170 164 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 ) ); 174 166 } // build_constantStr 175 167 … … 191 183 192 184 Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) { 193 Type *targetType = decl_node->buildType();185 Type *targetType = maybeMoveBuildType( decl_node ); 194 186 if ( dynamic_cast< VoidType * >( targetType ) ) { 195 187 delete targetType; … … 221 213 } 222 214 Expression *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 ) ); 226 216 } 227 217 Expression *build_alignOfexpr( ExpressionNode *expr_node ) { … … 229 219 } 230 220 Expression *build_alignOftype( DeclarationNode *decl_node ) { 231 return new AlignofExpr( decl_node->buildType() );221 return new AlignofExpr( maybeMoveBuildType( decl_node) ); 232 222 } 233 223 Expression *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() ); 236 225 delete member; 237 226 return ret; … … 277 266 } 278 267 Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) { 279 return new AttrExpr( var, decl_node->buildType() );268 return new AttrExpr( var, maybeMoveBuildType( decl_node ) ); 280 269 } 281 270 … … 304 293 } 305 294 Expression *build_typevalue( DeclarationNode *decl ) { 306 return new TypeExpr( decl->buildType() );295 return new TypeExpr( maybeMoveBuildType( decl ) ); 307 296 } 308 297
Note:
See TracChangeset
for help on using the changeset viewer.