Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Validate/HoistStruct.cpp

    rfc1a3e2 r8b4faf6  
    149149template<typename InstType>
    150150InstType const * HoistStructCore::preCollectionInstType( InstType const * type ) {
    151         if ( !type->base->parent ) return type;
    152         if ( type->base->params.empty() ) return type;
    153 
    154         InstType * mut = ast::mutate( type );
    155         ast::AggregateDecl const * parent =
    156                 commonParent( this->parent, mut->base->parent );
    157         assert( parent );
    158 
    159         std::vector<ast::ptr<ast::Expr>> args;
    160         for ( const ast::ptr<ast::TypeDecl> & param : parent->params ) {
    161                 args.emplace_back( new ast::TypeExpr( param->location,
    162                         new ast::TypeInstType( param )
    163                 ) );
    164         }
    165         spliceBegin( mut->params, args );
    166         return mut;
     151    if ( !type->base->parent ) return type;
     152    if ( type->base->params.empty() ) return type;
     153
     154    InstType * mut = ast::mutate( type );
     155    ast::AggregateDecl const * parent =
     156        commonParent( this->parent, mut->base->parent );
     157    assert( parent );
     158
     159    std::vector<ast::ptr<ast::Expr>> args;
     160    for ( const ast::ptr<ast::TypeDecl> & param : parent->params ) {
     161        args.emplace_back( new ast::TypeExpr( param->location,
     162            new ast::TypeInstType( param )
     163        ) );
     164    }
     165    spliceBegin( mut->params, args );
     166    return mut;
    167167}
    168168
Note: See TracChangeset for help on using the changeset viewer.