Changes in / [5485e101:2773ab8]


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Convert.cpp

    r5485e101 r2773ab8  
    21912191
    21922192        int isStringlikeConstantType(const Type *t) {
    2193                 const Type *referentType = nullptr;
    21942193                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 ) ) {
    22012195                           if ( bty->kind == BasicType::Kind::Char ) {
    22022196                                   return true;
     
    22092203        virtual void visit( ConstantExpr * old ) override final {
    22102204                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)) {
    22202206                        rslt = new ast::ConstantExpr(
    22212207                                old->location,
     
    22312217                                old->constant.get_value(),
    22322218                                (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
    22332227                        );
    22342228                }
Note: See TracChangeset for help on using the changeset viewer.