Changeset 6c3744e for translator/ResolvExpr
- Timestamp:
- Jan 19, 2015, 6:29:10 PM (10 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
- Children:
- f7f6785
- Parents:
- 0b8cd722
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
translator/ResolvExpr/Resolver.cc
r0b8cd722 r6c3744e 246 246 singleInit->set_value( newExpr ); 247 247 } // if 248 singleInit->get_value()->accept( *this );248 // singleInit->get_value()->accept( *this ); 249 249 } 250 250 251 251 void Resolver::visit( ListInit *listInit ) { 252 // no cast necessary 252 if ( ArrayType *at = dynamic_cast<ArrayType*>(initContext) ) { 253 initContext = at->get_base(); 254 Visitor::visit( listInit ); 255 } else if ( StructInstType *st = dynamic_cast<StructInstType*>(initContext) ) { 256 StructDecl *baseStruct = st->get_baseStruct(); 257 std::list<Declaration *>::iterator iter1( baseStruct->get_members().begin() ); 258 std::list<Initializer *>::iterator iter2( listInit->begin_initializers() ); 259 for ( ; iter1 != baseStruct->get_members().end() && iter2 != listInit->end_initializers() ; ++iter1, ++iter2 ) { 260 DeclarationWithType *dt = dynamic_cast<DeclarationWithType *>( *iter1 ); 261 initContext = dt->get_type(); 262 (*iter2)->accept( *this ); 263 } 264 } else if ( UnionInstType *st = dynamic_cast<UnionInstType*>(initContext) ) { 265 DeclarationWithType *dt = dynamic_cast<DeclarationWithType *>( *st->get_baseUnion()->get_members().begin() ); 266 initContext = dt->get_type(); 267 (*listInit->begin_initializers())->accept( *this ); 268 } // if 253 269 } 254 270 } // namespace ResolvExpr
Note: See TracChangeset
for help on using the changeset viewer.