- Timestamp:
- Jun 10, 2019, 2:42:31 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 5485e101, 86a8be5
- Parents:
- 6949c45
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
r6949c45 r558d13b 2191 2191 2192 2192 int isStringlikeConstantType(const Type *t) { 2193 const Type *referentType = nullptr; 2193 2194 if ( const ArrayType * aty = dynamic_cast< const ArrayType * >( t ) ) { 2194 if ( const BasicType * bty = dynamic_cast< const BasicType * >( aty->base ) ) { 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 ) ) { 2195 2201 if ( bty->kind == BasicType::Kind::Char ) { 2196 2202 return true; … … 2203 2209 virtual void visit( ConstantExpr * old ) override final { 2204 2210 ast::ConstantExpr *rslt = nullptr; 2205 if (isIntlikeConstantType(old->result)) { 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)) { 2206 2220 rslt = new ast::ConstantExpr( 2207 2221 old->location, … … 2217 2231 old->constant.get_value(), 2218 2232 (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::String2227 2233 ); 2228 2234 }
Note: See TracChangeset
for help on using the changeset viewer.