Changeset 88bc876 for src/CodeGen


Ignore:
Timestamp:
Jul 16, 2024, 5:28:10 PM (2 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
master
Children:
97f9619
Parents:
2363147
Message:

Breaks (and some other control flow) in a loop else clause now work. I also implemented else clauses in printing and code generation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cpp

    r2363147 r88bc876  
    11951195        stmt->body->accept( *visitor );
    11961196
    1197         output << indent;
    1198 
    11991197        if ( stmt->isDoWhile ) {
    12001198                output << " while (";
    12011199                stmt->cond->accept( *visitor );
    1202                 output << ");";
     1200                output << ( ( nullptr == stmt->else_ ) ? ");" : ")" );
     1201        }
     1202        if ( stmt->else_ ) {
     1203                output << " else ";
     1204                stmt->else_->accept( *visitor );
    12031205        }
    12041206}
     
    12251227                stmt->body->accept( *visitor );
    12261228        }
     1229
     1230        if ( nullptr != stmt->else_ ) {
     1231                assertf( !options.genC, "Loop else should not reach code generation." );
     1232                output << " else ";
     1233                stmt->else_->accept( *visitor );
     1234        }
    12271235}
    12281236
Note: See TracChangeset for help on using the changeset viewer.