Changeset 5485e101


Ignore:
Timestamp:
Jun 10, 2019, 5:20:11 PM (5 years ago)
Author:
Aaron Moss <a3moss@…>
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:
396037d
Parents:
2773ab8 (diff), 558d13b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Convert.cpp

    r2773ab8 r5485e101  
    21912191
    21922192        int isStringlikeConstantType(const Type *t) {
     2193                const Type *referentType = nullptr;
    21932194                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 ) ) {
    21952201                           if ( bty->kind == BasicType::Kind::Char ) {
    21962202                                   return true;
     
    22032209        virtual void visit( ConstantExpr * old ) override final {
    22042210                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)) {
    22062220                        rslt = new ast::ConstantExpr(
    22072221                                old->location,
     
    22172231                                old->constant.get_value(),
    22182232                                (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
    22272233                        );
    22282234                }
Note: See TracChangeset for help on using the changeset viewer.