Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Util.cpp

    r0658672 r7675f58  
    8383}
    8484
    85 /// Check that the MemberExpr has an aggregate type and matching member.
    86 void memberMatchesAggregate( const MemberExpr * expr ) {
    87         const Type * aggrType = expr->aggregate->result->stripReferences();
    88         const AggregateDecl * decl = nullptr;
    89         if ( auto inst = dynamic_cast<const StructInstType *>( aggrType ) ) {
    90                 decl = inst->base;
    91         } else if ( auto inst = dynamic_cast<const UnionInstType *>( aggrType ) ) {
    92                 decl = inst->base;
    93         }
    94         assertf( decl, "Aggregate of member not correct type." );
    95 
    96         for ( auto aggrMember : decl->members ) {
    97                 if ( expr->member == aggrMember ) {
    98                         return;
    99                 }
    100         }
    101         assertf( false, "Member not found." );
    102 }
    103 
    10485struct InvariantCore {
    10586        // To save on the number of visits: this is a kind of composed core.
     
    127108        }
    128109
    129         void previsit( const MemberExpr * node ) {
    130                 previsit( (const ParseNode *)node );
    131                 memberMatchesAggregate( node );
    132         }
    133 
    134110        void postvisit( const Node * node ) {
    135111                no_strong_cycles.postvisit( node );
Note: See TracChangeset for help on using the changeset viewer.