Changes in / [5485e101:2773ab8]
- File:
-
- 1 edited
-
src/AST/Convert.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
r5485e101 r2773ab8 2191 2191 2192 2192 int isStringlikeConstantType(const Type *t) { 2193 const Type *referentType = nullptr;2194 2193 if ( const ArrayType * aty = dynamic_cast< const ArrayType * >( t ) ) { 2195 referentType = aty->base; 2196 } else if ( const PointerType * pty = dynamic_cast< const PointerType * >( t ) ) { 2197 referentType = pty->base; 2198 } 2199 if (referentType) { 2200 if ( const BasicType * bty = dynamic_cast< const BasicType * >( referentType ) ) { 2194 if ( const BasicType * bty = dynamic_cast< const BasicType * >( aty->base ) ) { 2201 2195 if ( bty->kind == BasicType::Kind::Char ) { 2202 2196 return true; … … 2209 2203 virtual void visit( ConstantExpr * old ) override final { 2210 2204 ast::ConstantExpr *rslt = nullptr; 2211 if (isStringlikeConstantType(old->result)) { 2212 rslt = new ast::ConstantExpr( 2213 old->location, 2214 GET_ACCEPT_1(result, Type), 2215 old->constant.get_value(), 2216 0, 2217 ast::ConstantExpr::Kind::String 2218 ); 2219 } else if (isIntlikeConstantType(old->result)) { 2205 if (isIntlikeConstantType(old->result)) { 2220 2206 rslt = new ast::ConstantExpr( 2221 2207 old->location, … … 2231 2217 old->constant.get_value(), 2232 2218 (double) old->constant.get_dval() 2219 ); 2220 } else if (isStringlikeConstantType(old->result)) { 2221 rslt = new ast::ConstantExpr( 2222 old->location, 2223 GET_ACCEPT_1(result, Type), 2224 old->constant.get_value(), 2225 0, 2226 ast::ConstantExpr::Kind::String 2233 2227 ); 2234 2228 }
Note:
See TracChangeset
for help on using the changeset viewer.