- Timestamp:
- May 22, 2019, 5:32:46 PM (6 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 489bacf, f23de79d
- Parents:
- 893e106
- Location:
- src/AST
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Expr.cpp
r893e106 r722c4831 159 159 assert( aggregate->result ); 160 160 161 <<<<<<< HEAD 162 // #warning Needs GenericSubsitution.cpp building to work correctly 163 // result.set_and_mutate( mem->get_type() )->qualifiers |= aggregate->result->qualifiers | CV::Lvalue; // FIXME temporary patch 164 165 // take ownership of member type 166 result = mem->get_type(); 167 // substitute aggregate generic parameters into member type 168 genericSubsitution( aggregate->result ).apply( result ); 169 // ensure lvalue and appropriate restrictions from aggregate type 170 result.get_and_mutate()->qualifiers |= aggregate->result->qualifiers | CV::Lvalue; 171 ======= 172 // assert(!"unimplemented; need TypeSubstitution, genericSubstitution"); 173 >>>>>>> ef5ef56042ce2b547da955746d9986e26cf628ca 161 #warning Needs GenericSubsitution.cpp building to work correctly 162 result.set_and_mutate( mem->get_type() )->qualifiers |= aggregate->result->qualifiers | CV::Lvalue; // FIXME temporary patch 163 164 // // take ownership of member type 165 // result = mem->get_type(); 166 // // substitute aggregate generic parameters into member type 167 // genericSubsitution( aggregate->result ).apply( result ); 168 // // ensure lvalue and appropriate restrictions from aggregate type 169 // result.get_and_mutate()->qualifiers |= aggregate->result->qualifiers | CV::Lvalue; 174 170 } 175 171 -
src/AST/GenericSubstitution.cpp
r893e106 r722c4831 31 31 TypeSubstitution sub; 32 32 33 const Type *previsit( const Type * ty ) {33 void previsit( const Type * ty ) { 34 34 assertf( false, "Attempted generic substitution for non-aggregate type: %s", 35 35 toString( ty ).c_str() ); 36 return ty;37 36 } 38 37 39 const ReferenceType *previsit( const ReferenceType * ty ) {38 void previsit( const ReferenceType * ty ) { 40 39 // do nothing; allows substitution from base type 41 return ty;42 40 } 43 41 44 const ReferenceToType *previsit( const ReferenceToType * ty ) {42 void previsit( const ReferenceToType * ty ) { 45 43 visit_children = false; 46 44 // build substitution from base parameters 47 45 const AggregateDecl * aggr = ty->aggr(); 48 46 sub = TypeSubstitution{ aggr->params.begin(), aggr->params.end(), ty->params.begin() }; 49 return ty;50 47 } 51 48 }; -
src/AST/module.mk
r893e106 r722c4831 21 21 AST/DeclReplacer.cpp \ 22 22 AST/Expr.cpp \ 23 AST/GenericSubstitution.cpp \24 23 AST/Init.cpp \ 25 24 AST/LinkageSpec.cpp \
Note: See TracChangeset
for help on using the changeset viewer.