Changes in src/AST/Util.cpp [0658672:7675f58]
- File:
-
- 1 edited
-
src/AST/Util.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Util.cpp
r0658672 r7675f58 83 83 } 84 84 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 104 85 struct InvariantCore { 105 86 // To save on the number of visits: this is a kind of composed core. … … 127 108 } 128 109 129 void previsit( const MemberExpr * node ) {130 previsit( (const ParseNode *)node );131 memberMatchesAggregate( node );132 }133 134 110 void postvisit( const Node * node ) { 135 111 no_strong_cycles.postvisit( node );
Note:
See TracChangeset
for help on using the changeset viewer.