Changes in src/SymTab/Validate.cc [9e7236f4:298fe57]
- File:
-
- 1 edited
-
src/SymTab/Validate.cc (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/Validate.cc
r9e7236f4 r298fe57 10 10 // Created On : Sun May 17 21:50:04 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Nov 12 11:00:00 202113 // Update Count : 36 412 // Last Modified On : Fri Apr 29 9:45:00 2022 13 // Update Count : 365 14 14 // 15 15 … … 143 143 struct LinkReferenceToTypes_old final : public WithIndexer, public WithGuards, public WithVisitorRef<LinkReferenceToTypes_old>, public WithShortCircuiting { 144 144 LinkReferenceToTypes_old( const Indexer * indexer ); 145 145 146 void postvisit( TypeInstType * typeInst ); 146 147 … … 370 371 } 371 372 373 void linkReferenceToTypes( std::list< Declaration * > & translationUnit ) { 374 PassVisitor<LinkReferenceToTypes_old> lrt( nullptr ); 375 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions 376 } 377 372 378 void validate_B( std::list< Declaration * > & translationUnit ) { 373 PassVisitor<LinkReferenceToTypes_old> lrt( nullptr );374 379 PassVisitor<FixQualifiedTypes> fixQual; 375 380 { 376 381 Stats::Heap::newPass("validate-B"); 377 382 Stats::Time::BlockGuard guard("validate-B"); 378 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions383 //linkReferenceToTypes( translationUnit ); 379 384 mutateAll( translationUnit, fixQual ); // must happen after LinkReferenceToTypes_old, because aggregate members are accessed 380 385 HoistStruct::hoistStruct( translationUnit ); … … 760 765 } // if 761 766 } 767 762 768 void LinkReferenceToTypes_old::postvisit( StructInstType * structInst ) { 763 769 const StructDecl * st = local_indexer->lookupStruct( structInst->name ); … … 885 891 void LinkReferenceToTypes_old::postvisit( EnumDecl * enumDecl ) { 886 892 // visit enum members first so that the types of self-referencing members are updated properly 887 // Replace the enum base; right now it works only for StructEnum888 if ( enumDecl->base && dynamic_cast<TypeInstType*>(enumDecl->base) ) {889 std::string baseName = static_cast<TypeInstType*>(enumDecl->base)->name;890 const StructDecl * st = local_indexer->lookupStruct( baseName );891 if ( st ) {892 enumDecl->base = new StructInstType(Type::Qualifiers(),const_cast<StructDecl *>(st)); // Just linking in the node893 }894 }895 893 if ( enumDecl->body ) { 896 894 ForwardEnumsType::iterator fwds = forwardEnums.find( enumDecl->name );
Note:
See TracChangeset
for help on using the changeset viewer.