Changeset d9fa60a for src/SynTree
- Timestamp:
- Nov 16, 2016, 4:37:50 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 186fd86
- Parents:
- 33a7b6d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/SynTree/Expression.cc ¶
r33a7b6d rd9fa60a 332 332 } 333 333 334 namespace { 335 TypeSubstitution makeSub( Type * t ) { 336 if ( StructInstType * aggInst = dynamic_cast< StructInstType * >( t ) ) { 337 return TypeSubstitution( aggInst->get_baseParameters()->begin(), aggInst->get_baseParameters()->end(), aggInst->get_parameters().begin() ); 338 } else if ( UnionInstType * aggInst = dynamic_cast< UnionInstType * >( t ) ) { 339 return TypeSubstitution( aggInst->get_baseParameters()->begin(), aggInst->get_baseParameters()->end(), aggInst->get_parameters().begin() ); 340 } else { 341 assertf( false, "makeSub expects struct or union type for aggregate" ); 342 } 343 } 344 } 345 334 346 335 347 MemberExpr::MemberExpr( DeclarationWithType *_member, Expression *_aggregate, Expression *_aname ) : 336 348 Expression( _aname ), member(_member), aggregate(_aggregate) { 337 set_result( member->get_type()->clone() ); 349 350 TypeSubstitution sub( makeSub( aggregate->get_result() ) ); 351 Type * res = member->get_type()->clone(); 352 sub.apply( res ); 353 set_result( res ); 338 354 get_result()->set_isLvalue( true ); 339 355 }
Note: See TracChangeset
for help on using the changeset viewer.