Changes in src/Parser/InitializerNode.cc [e4d829b:faddbd8]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/InitializerNode.cc
re4d829b rfaddbd8 74 74 75 75 InitializerNode *moreInit; 76 if ( (moreInit = dynamic_cast< InitializerNode * >( get_next() ) ) ) {76 if ( get_next() != 0 && ((moreInit = dynamic_cast< InitializerNode * >( get_next() ) ) != 0) ) 77 77 moreInit->printOneLine( os ); 78 }79 78 } 80 79 81 80 Initializer *InitializerNode::build() const { 82 81 if ( aggregate ) { 83 // steal designators from children84 std::list< Designation * > designlist;85 InitializerNode * child = next_init();86 for ( ; child != nullptr; child = dynamic_cast< InitializerNode * >( child->get_next() ) ) {87 std::list< Expression * > desList;88 buildList< Expression, ExpressionNode >( child->designator, desList );89 designlist.push_back( new Designation( desList ) );90 } // for91 82 std::list< Initializer * > initlist; 92 83 buildList< Initializer, InitializerNode >( next_init(), initlist ); 84 85 std::list< Expression * > designlist; 86 87 if ( designator != 0 ) { 88 buildList< Expression, ExpressionNode >( designator, designlist ); 89 } // if 90 93 91 return new ListInit( initlist, designlist, maybeConstructed ); 94 92 } else { 95 if ( get_expression() != 0) { 96 return new SingleInit( maybeBuild< Expression >( get_expression() ), maybeConstructed ); 97 } 93 std::list< Expression * > designators; 94 95 if ( designator != 0 ) 96 buildList< Expression, ExpressionNode >( designator, designators ); 97 98 if ( get_expression() != 0) 99 return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed ); 98 100 } // if 101 99 102 return 0; 100 103 }
Note:
See TracChangeset
for help on using the changeset viewer.