Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/InstantiateGenericNew.cpp

    r01865fb r8f1e035  
    2222
    2323#include "AST/Copy.hpp"                // for deepCopy
     24#include "AST/Create.hpp"              // for asForward
    2425#include "AST/Pass.hpp"                // for Pass, WithGuard, WithShortCi...
    2526#include "AST/TranslationUnit.hpp"     // for TranslationUnit
     
    8586
    8687/// Maps a key and a TypeList to a valuue. Also supports scoping.
    87 class InstantiationMap {
     88class InstantiationMap final {
    8889        /// Wraps value for a specific (AggregateDecl, TypeList) combination.
    8990        using Instantiation = std::pair<TypeList, ast::ptr<ast::AggregateDecl>>;
     
    255256void stripInstParams( ast::BaseInstType * inst ) {
    256257        inst->params.clear();
    257 }
    258 
    259 // TODO: I think this should become a generic helper.
    260 template<typename Aggr>
    261 Aggr * asForward( Aggr const * decl ) {
    262         if ( !decl->body ) {
    263                 return nullptr;
    264         }
    265         Aggr * mut = ast::deepCopy( decl );
    266         mut->body = false;
    267         mut->members.clear();
    268         return mut;
    269258}
    270259
     
    553542                        // Forward declare before recursion. (TODO: Only when needed, #199.)
    554543                        insert( inst, typeSubs, newDecl );
    555                         if ( AggrDecl const * forwardDecl = asForward( newDecl ) ) {
     544                        if ( AggrDecl const * forwardDecl = ast::asForward( newDecl ) ) {
    556545                                declsToAddBefore.push_back( forwardDecl );
    557546                        }
Note: See TracChangeset for help on using the changeset viewer.