Changeset 242d458
- Timestamp:
 - Aug 5, 2016, 2:53:25 PM (9 years ago)
 - Branches:
 - ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, 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, resolv-new, with_gc
 - Children:
 - a465caff
 - Parents:
 - 1b0020a (diff), 679864e1 (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. - Location:
 - src
 - Files:
 - 
      
- 2 edited
 
- 
          
  ResolvExpr/Resolver.cc (modified) (1 diff)
 - 
          
  SymTab/Validate.cc (modified) (3 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
src/ResolvExpr/Resolver.cc
r1b0020a r242d458 446 446 } else if ( StructInstType * st = dynamic_cast< StructInstType * >( initContext ) ) { 447 447 resolveAggrInit( st->get_baseStruct(), iter, end ); 448 } else if ( UnionInstType * st = dynamic_cast< UnionInstType * >( initContext ) ) {448 } else if ( UnionInstType * st = dynamic_cast< UnionInstType * >( initContext ) ) { 449 449 resolveAggrInit( st->get_baseUnion(), iter, end ); 450 } else if ( TypeInstType * tt = dynamic_cast< TypeInstType * >( initContext ) ) { 451 Type * base = tt->get_baseType()->get_base(); 452 if ( base ) { 453 // know the implementation type, so try using that as the initContext 454 initContext = base; 455 visit( listInit ); 456 } else { 457 // missing implementation type -- might be an unknown type variable, so try proceeding with the current init context 458 Visitor::visit( listInit ); 459 } 450 460 } else { 461 assert( dynamic_cast< BasicType * >( initContext ) || dynamic_cast< PointerType * >( initContext ) ); 451 462 // basic types are handled here 452 463 Visitor::visit( listInit );  - 
      
src/SymTab/Validate.cc
r1b0020a r242d458 162 162 163 163 typedef std::map< std::string, std::pair< TypedefDecl *, int > > TypedefMap; 164 typedef std::map< std::string, TypeDecl * > TypeDeclMap; 164 165 TypedefMap typedefNames; 166 TypeDeclMap typedeclNames; 165 167 int scopeLevel; 166 168 }; … … 521 523 delete typeInst; 522 524 return ret; 525 } else { 526 TypeDeclMap::const_iterator base = typedeclNames.find( typeInst->get_name() ); 527 assert( base != typedeclNames.end() ); 528 typeInst->set_baseType( base->second->clone() ); 523 529 } // if 524 530 return typeInst; … … 565 571 typedefNames.erase( i ) ; 566 572 } // if 573 574 typedeclNames[ typeDecl->get_name() ] = typeDecl; 567 575 return typeDecl; 568 576 }  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.