Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/GenericSubstitution.cpp

    r60aaa51d r335f2d8  
    3131                TypeSubstitution sub;
    3232
    33                 void previsit( const Type * ) {
    34                         // allow empty substitution for non-generic type
    35                         visit_children = false;
     33                void previsit( const Type * ty ) {
     34                        assertf( false, "Attempted generic substitution for non-aggregate type: %s",
     35                                toString( ty ).c_str() );
    3636                }
    3737
     
    4040                }
    4141
    42         private:
    43                 // make substitution for generic type
    44                 void makeSub( const ReferenceToType * ty ) {
     42                void previsit( const ReferenceToType * ty ) {
    4543                        visit_children = false;
     44                        // build substitution from base parameters
    4645                        const AggregateDecl * aggr = ty->aggr();
    4746                        sub = TypeSubstitution{ aggr->params.begin(), aggr->params.end(), ty->params.begin() };
    48                 }
    49 
    50         public:
    51                 void previsit( const StructInstType * ty ) {
    52                         makeSub( ty );
    53                 }
    54 
    55                 void previsit( const UnionInstType * ty ) {
    56                         makeSub( ty );
    5747                }
    5848        };
    5949}
    6050
    61 TypeSubstitution genericSubstitution( const Type * ty ) {
     51TypeSubstitution genericSubsitution( const Type * ty ) {
    6252        Pass<GenericSubstitutionBuilder> builder;
    6353        maybe_accept( ty, builder );
Note: See TracChangeset for help on using the changeset viewer.