Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r5ea7a22 rd67cdb7  
    540540                extension( nameExpr );
    541541                OperatorInfo opInfo;
    542                 if ( operatorLookup( nameExpr->name, opInfo ) ) {
    543                         if ( opInfo.type == OT_CONSTANT ) {
    544                                 output << opInfo.symbol;
    545                         } else {
    546                                 output << opInfo.outputName;
    547                         }
     542                if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
     543                        assert( opInfo.type == OT_CONSTANT );
     544                        output << opInfo.symbol;
    548545                } else {
    549546                        output << nameExpr->get_name();
     
    946943                output << ";";
    947944        }
    948         void CodeGenerator::postvisit( CatchStmt * stmt ) {
    949                 assertf( ! genC, "Catch statements should not reach code generation." );
    950 
    951                 output << ((stmt->get_kind() == CatchStmt::Terminate) ?
    952                 "catch" : "catchResume");
    953                 output << "( ";
    954                 stmt->decl->accept( *visitor );
    955                 output << " ) ";
    956 
    957                 if( stmt->cond ) {
    958                         output << "if/when(?) (";
    959                         stmt->cond->accept( *visitor );
    960                         output << ") ";
    961                 }
    962                 stmt->body->accept( *visitor );
    963         }
    964 
    965         void CodeGenerator::postvisit( WaitForStmt * stmt ) {
    966                 assertf( ! genC, "Waitfor statements should not reach code generation." );
    967 
    968                 bool first = true;
    969                 for( auto & clause : stmt->clauses ) {
    970                         if(first) { output << "or "; first = false; }
    971                         if( clause.condition ) {
    972                                 output << "when(";
    973                                 stmt->timeout.condition->accept( *visitor );
    974                                 output << ") ";
    975                         }
    976                         output << "waitfor(";
    977                         clause.target.function->accept( *visitor );
    978                         for( Expression * expr : clause.target.arguments ) {
    979                                 output << ",";
    980                                 expr->accept( *visitor );
    981                         }
    982                         output << ") ";
    983                         clause.statement->accept( *visitor );
    984                 }
    985 
    986                 if( stmt->timeout.statement ) {
    987                         output << "or ";
    988                         if( stmt->timeout.condition ) {
    989                                 output << "when(";
    990                                 stmt->timeout.condition->accept( *visitor );
    991                                 output << ") ";
    992                         }
    993                         output << "timeout(";
    994                         stmt->timeout.time->accept( *visitor );
    995                         output << ") ";
    996                         stmt->timeout.statement->accept( *visitor );
    997                 }
    998 
    999                 if( stmt->orelse.statement ) {
    1000                         output << "or ";
    1001                         if( stmt->orelse.condition ) {
    1002                                 output << "when(";
    1003                                 stmt->orelse.condition->accept( *visitor );
    1004                                 output << ")";
    1005                         }
    1006                         output << "else ";
    1007                         stmt->orelse.statement->accept( *visitor );
    1008                 }
    1009         }
    1010 
    1011945
    1012946        void CodeGenerator::postvisit( WhileStmt * whileStmt ) {
Note: See TracChangeset for help on using the changeset viewer.