Changeset ac911f4


Ignore:
Timestamp:
Jul 30, 2016, 11:37:26 AM (5 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, ctor, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
3778cb2
Parents:
66d12f7
Message:

case range, second attempt

Location:
src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r66d12f7 rac911f4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 30 01:48:20 2016
    13 // Update Count     : 329
     12// Last Modified On : Sat Jul 30 11:27:07 2016
     13// Update Count     : 340
    1414//
    1515
     
    473473                        } else {
    474474                                if ( nameExpr->get_name() != "Range" ) {
     475                                        // builtin routines
    475476                                        nameExpr->accept( *this );
    476477                                        output << "(";
     
    478479                                        output << ")";
    479480                                } else {
    480                                         genFredList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
    481 //                                      output << (*(untypedExpr->get_args().begin()))->accept( *this );// << " ... " << (*untypedExpr->get_args().end())->accept( *this ).getname();
     481                                        // case V1 ... V2 or case V1~V2
     482                                        assert( untypedExpr->get_args().size() == 2 );
     483                                        (*untypedExpr->get_args().begin())->accept( *this );
     484                                        output << " ... ";
     485                                        (*--untypedExpr->get_args().end())->accept( *this );
    482486                                } // if
    483487                        } // if
  • src/CodeGen/CodeGenerator.h

    r66d12f7 rac911f4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 30 01:23:43 2016
    13 // Update Count     : 36
     12// Last Modified On : Sat Jul 30 11:10:42 2016
     13// Update Count     : 37
    1414//
    1515
     
    9090
    9191                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
    92                 template< class Iterator > void genFredList( Iterator begin, Iterator end );
    9392
    9493                struct Indenter {
     
    132131        }
    133132
    134         template< class Iterator >
    135         void CodeGenerator::genFredList( Iterator begin, Iterator end ) {
    136                 if ( begin == end ) return;
    137 
    138                 for ( ;; ) {
    139                         (*begin++)->accept( *this );
    140                         if ( begin == end ) return;
    141                         output << " ... ";
    142                 } // for
    143         }
    144 
    145133        inline bool doSemicolon( Declaration* decl ) {
    146134                if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
  • src/tests/switch.c

    r66d12f7 rac911f4  
    1010// Created On       : Tue Jul 12 06:50:22 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 18:02:23 2016
    13 // Update Count     : 22
     12// Last Modified On : Sat Jul 30 11:31:13 2016
     13// Update Count     : 28
    1414//
    1515
     
    4949          default:
    5050                i = 3;
    51           case 3:
     51          case 19:
    5252          case 'A' ... 'Z':
    53           case 5 ... 6:
    54           case 2, 4:
     53          case 1 ... 6:
     54          case 20, 30:
    5555                j = 3;
    5656                f( 3 );
     
    7878                struct S { int i; };
    7979                S s;
    80           case 3:
     80          case 19:
    8181          case 'A' ... 'Z':
    82           case 5 ... 6:
    83           case 2, 4, 7:
     82          case 0 ... 6:
     83          case 20, 30, 40:
    8484                i = 3;
    8585                f( 3 );
Note: See TracChangeset for help on using the changeset viewer.