Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Validate.cc

    r9e7236f4 r298fe57  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Nov 12 11:00:00 2021
    13 // Update Count     : 364
     12// Last Modified On : Fri Apr 29  9:45:00 2022
     13// Update Count     : 365
    1414//
    1515
     
    143143        struct LinkReferenceToTypes_old final : public WithIndexer, public WithGuards, public WithVisitorRef<LinkReferenceToTypes_old>, public WithShortCircuiting {
    144144                LinkReferenceToTypes_old( const Indexer * indexer );
     145
    145146                void postvisit( TypeInstType * typeInst );
    146147
     
    370371        }
    371372
     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
    372378        void validate_B( std::list< Declaration * > & translationUnit ) {
    373                 PassVisitor<LinkReferenceToTypes_old> lrt( nullptr );
    374379                PassVisitor<FixQualifiedTypes> fixQual;
    375380                {
    376381                        Stats::Heap::newPass("validate-B");
    377382                        Stats::Time::BlockGuard guard("validate-B");
    378                         acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions
     383                        //linkReferenceToTypes( translationUnit );
    379384                        mutateAll( translationUnit, fixQual ); // must happen after LinkReferenceToTypes_old, because aggregate members are accessed
    380385                        HoistStruct::hoistStruct( translationUnit );
     
    760765                } // if
    761766        }
     767
    762768        void LinkReferenceToTypes_old::postvisit( StructInstType * structInst ) {
    763769                const StructDecl * st = local_indexer->lookupStruct( structInst->name );
     
    885891        void LinkReferenceToTypes_old::postvisit( EnumDecl * enumDecl ) {
    886892                // 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                 }
    895893                if ( enumDecl->body ) {
    896894                        ForwardEnumsType::iterator fwds = forwardEnums.find( enumDecl->name );
Note: See TracChangeset for help on using the changeset viewer.