Changeset 2ad4b49 for src/Parser/StatementNode.cc
- Timestamp:
- Jun 4, 2018, 4:29:23 PM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, with_gc
- Children:
- 41770ed1, d885a58, f77dbc0
- Parents:
- 1ddbf3b (diff), ee3c93d (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/StatementNode.cc
r1ddbf3b r2ad4b49 80 80 } 81 81 82 Statement * build_if( IfCtl * ctl, StatementNode * then_stmt, StatementNode * else_stmt ) { 83 Statement * thenb, * elseb = 0; 84 std::list< Statement * > branches; 85 buildMoveList< Statement, StatementNode >( then_stmt, branches ); 86 assert( branches.size() == 1 ); 87 thenb = branches.front(); 88 89 if ( else_stmt ) { 90 std::list< Statement * > branches; 91 buildMoveList< Statement, StatementNode >( else_stmt, branches ); 92 assert( branches.size() == 1 ); 93 elseb = branches.front(); 94 } // if 95 96 std::list< Statement * > init; 82 Expression * build_if_control( IfCtl * ctl, std::list< Statement * > & init ) { 97 83 if ( ctl->init != 0 ) { 98 84 buildMoveList( ctl->init, init ); … … 102 88 if ( ctl->condition ) { 103 89 // compare the provided condition against 0 104 cond = 90 cond = notZeroExpr( maybeMoveBuild< Expression >(ctl->condition) ); 105 91 } else { 106 92 for ( Statement * stmt : init ) { … … 113 99 } 114 100 delete ctl; 101 return cond; 102 } 103 104 Statement * build_if( IfCtl * ctl, StatementNode * then_stmt, StatementNode * else_stmt ) { 105 Statement * thenb, * elseb = 0; 106 std::list< Statement * > branches; 107 buildMoveList< Statement, StatementNode >( then_stmt, branches ); 108 assert( branches.size() == 1 ); 109 thenb = branches.front(); 110 111 if ( else_stmt ) { 112 std::list< Statement * > branches; 113 buildMoveList< Statement, StatementNode >( else_stmt, branches ); 114 assert( branches.size() == 1 ); 115 elseb = branches.front(); 116 } // if 117 118 std::list< Statement * > init; 119 Expression * cond = build_if_control( ctl, init ); 115 120 return new IfStmt( cond, thenb, elseb, init ); 116 121 } … … 144 149 buildMoveList< Statement, StatementNode >( stmt, branches ); 145 150 assert( branches.size() == 1 ); 146 return new WhileStmt( notZeroExpr( maybeMoveBuild< Expression >(ctl) ), branches.front(), kind ); 151 152 std::list< Statement * > init; 153 return new WhileStmt( notZeroExpr( maybeMoveBuild< Expression >(ctl) ), branches.front(), init, kind ); 147 154 } 148 155
Note: See TracChangeset
for help on using the changeset viewer.