Changes in src/SymTab/Validate.cc [298fe57:9e7236f4]
- File:
-
- 1 edited
-
src/SymTab/Validate.cc (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/Validate.cc
r298fe57 r9e7236f4 10 10 // Created On : Sun May 17 21:50:04 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Apr 29 9:45:00 202213 // Update Count : 36 512 // Last Modified On : Fri Nov 12 11:00:00 2021 13 // Update Count : 364 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 146 145 void postvisit( TypeInstType * typeInst ); 147 146 … … 371 370 } 372 371 373 void linkReferenceToTypes( std::list< Declaration * > & translationUnit ) {372 void validate_B( std::list< Declaration * > & translationUnit ) { 374 373 PassVisitor<LinkReferenceToTypes_old> lrt( nullptr ); 375 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions376 }377 378 void validate_B( std::list< Declaration * > & translationUnit ) {379 374 PassVisitor<FixQualifiedTypes> fixQual; 380 375 { 381 376 Stats::Heap::newPass("validate-B"); 382 377 Stats::Time::BlockGuard guard("validate-B"); 383 //linkReferenceToTypes( translationUnit );378 acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions 384 379 mutateAll( translationUnit, fixQual ); // must happen after LinkReferenceToTypes_old, because aggregate members are accessed 385 380 HoistStruct::hoistStruct( translationUnit ); … … 765 760 } // if 766 761 } 767 768 762 void LinkReferenceToTypes_old::postvisit( StructInstType * structInst ) { 769 763 const StructDecl * st = local_indexer->lookupStruct( structInst->name ); … … 891 885 void LinkReferenceToTypes_old::postvisit( EnumDecl * enumDecl ) { 892 886 // 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 StructEnum 888 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 node 893 } 894 } 893 895 if ( enumDecl->body ) { 894 896 ForwardEnumsType::iterator fwds = forwardEnums.find( enumDecl->name );
Note:
See TracChangeset
for help on using the changeset viewer.