Changes in / [4406887:3c80ccc]


Ignore:
Location:
src
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Convert.cpp

    r4406887 r3c80ccc  
    2525#include "AST/Init.hpp"
    2626#include "AST/Stmt.hpp"
    27 #include "AST/TranslationUnit.hpp"
    2827#include "AST/TypeSubstitution.hpp"
    2928
     
    14051404};
    14061405
    1407 std::list< Declaration * > convert( const ast::TranslationUnit && translationUnit ) {
     1406std::list< Declaration * > convert( const std::list< ast::ptr< ast::Decl > > && translationUnit ) {
    14081407        ConverterNewToOld c;
    14091408        std::list< Declaration * > decls;
    1410         for(auto d : translationUnit.decls) {
     1409        for(auto d : translationUnit) {
    14111410                decls.emplace_back( c.decl( d ) );
    14121411        }
     
    28042803#undef GET_ACCEPT_1
    28052804
    2806 ast::TranslationUnit convert( const std::list< Declaration * > && translationUnit ) {
     2805std::list< ast::ptr< ast::Decl > > convert( const std::list< Declaration * > && translationUnit ) {
    28072806        ConverterOldToNew c;
    2808         ast::TranslationUnit unit;
     2807        std::list< ast::ptr< ast::Decl > > decls;
    28092808        for(auto d : translationUnit) {
    28102809                d->accept( c );
    2811                 unit.decls.emplace_back( c.decl() );
     2810                decls.emplace_back( c.decl() );
    28122811        }
    28132812        deleteAll(translationUnit);
    2814         return unit;
     2813        return decls;
    28152814}
  • src/AST/Convert.hpp

    r4406887 r3c80ccc  
    1818#include <list>
    1919
     20#include "AST/Node.hpp"
     21
    2022class Declaration;
    2123namespace ast {
    22         class TranslationUnit;
     24        class Decl;
    2325};
    2426
    25 std::list< Declaration * > convert( const ast::TranslationUnit && translationUnit );
    26 ast::TranslationUnit convert( const std::list< Declaration * > && translationUnit );
     27std::list< Declaration * > convert( const std::list< ast::ptr< ast::Decl > > && translationUnit );
     28std::list< ast::ptr< ast::Decl > > convert( const std::list< Declaration * > && translationUnit );
  • src/AST/Fwd.hpp

    r4406887 r3c80ccc  
    137137typedef unsigned int UniqueId;
    138138
    139 class TranslationUnit;
    140 // TODO: Get from the TranslationUnit:
    141139extern Type * sizeType;
    142140extern FunctionDecl * dereferenceOperator;
  • src/AST/Pass.hpp

    r4406887 r3c80ccc  
    103103        /// Construct and run a pass on a translation unit.
    104104        template< typename... Args >
    105         static void run( TranslationUnit & decls, Args &&... args ) {
     105        static void run( std::list< ptr<Decl> > & decls, Args &&... args ) {
    106106                Pass<core_t> visitor( std::forward<Args>( args )... );
    107107                accept_all( decls, visitor );
     
    119119        // Versions of the above for older compilers.
    120120        template< typename... Args >
    121         static void run( TranslationUnit & decls ) {
     121        static void run( std::list< ptr<Decl> > & decls ) {
    122122                Pass<core_t> visitor;
    123123                accept_all( decls, visitor );
     
    303303void accept_all( std::list< ast::ptr<ast::Decl> > &, ast::Pass<core_t> & visitor );
    304304
    305 template<typename core_t>
    306 void accept_all( ast::TranslationUnit &, ast::Pass<core_t> & visitor );
    307 
    308305//-------------------------------------------------------------------------------------------------
    309306// PASS ACCESSORIES
  • src/AST/Pass.impl.hpp

    r4406887 r3c80ccc  
    2020#include <unordered_map>
    2121
    22 #include "AST/TranslationUnit.hpp"
    2322#include "AST/TypeSubstitution.hpp"
    2423
     
    431430        pass_visitor_stats.depth--;
    432431        if ( !errors.isEmpty() ) { throw errors; }
    433 }
    434 
    435 template< typename core_t >
    436 inline void ast::accept_all( ast::TranslationUnit & unit, ast::Pass< core_t > & visitor ) {
    437         return ast::accept_all( unit.decls, visitor );
    438432}
    439433
  • src/AST/Pass.proto.hpp

    r4406887 r3c80ccc  
    2222template<typename core_t>
    2323class Pass;
    24 
    25 class TranslationUnit;
    2624
    2725struct PureVisitor;
  • src/InitTweak/FixGlobalInit.cc

    r4406887 r3c80ccc  
    109109        }
    110110
    111         void fixGlobalInit(ast::TranslationUnit & translationUnit, bool inLibrary) {
     111        void fixGlobalInit(std::list<ast::ptr<ast::Decl>> & translationUnit, bool inLibrary) {
    112112                ast::Pass<GlobalFixer_new> fixer;
    113113                accept_all(translationUnit, fixer);
     
    119119                                ast::Storage::Static, ast::Linkage::C, {new ast::Attribute("constructor", std::move(ctorParams))});
    120120
    121                         translationUnit.decls.emplace_back( initFunction );
     121                        translationUnit.emplace_back( initFunction );
    122122                } // if
    123123
     
    128128                                ast::Storage::Static, ast::Linkage::C, {new ast::Attribute("destructor", std::move(dtorParams))});
    129129
    130                         translationUnit.decls.emplace_back(destroyFunction);
     130                        translationUnit.emplace_back(destroyFunction);
    131131                } // if
    132132        }
  • src/InitTweak/FixGlobalInit.h

    r4406887 r3c80ccc  
    2929        /// function is for library code.
    3030        void fixGlobalInit( std::list< Declaration * > & translationUnit, bool inLibrary );
    31         void fixGlobalInit( ast::TranslationUnit & translationUnit, bool inLibrary );
     31        void fixGlobalInit( std::list< ast::ptr<ast::Decl> > & translationUnit, bool inLibrary );
    3232} // namespace
    3333
  • src/InitTweak/FixInit.h

    r4406887 r3c80ccc  
    1919#include <string>  // for string
    2020
     21#include <AST/Fwd.hpp>
     22
    2123class Declaration;
    22 namespace ast {
    23         class TranslationUnit;
    24 }
    2524
    2625namespace InitTweak {
     
    2827        void fix( std::list< Declaration * > & translationUnit, bool inLibrary );
    2928
    30         void fix( ast::TranslationUnit & translationUnit, bool inLibrary);
     29        void fix( std::list<ast::ptr<ast::Decl>> & translationUnit, bool inLibrary);
    3130} // namespace
    3231
  • src/InitTweak/FixInitNew.cpp

    r4406887 r3c80ccc  
    179179        /// expand each object declaration to use its constructor after it is declared.
    180180        struct FixInit : public ast::WithStmtsToAdd<> {
    181                 static void fixInitializers( ast::TranslationUnit &translationUnit );
     181                static void fixInitializers( std::list< ast::ptr<ast::Decl> > &translationUnit );
    182182
    183183                const ast::DeclWithType * postvisit( const ast::ObjectDecl *objDecl );
     
    225225} // namespace
    226226
    227 void fix( ast::TranslationUnit & translationUnit, bool inLibrary ) {
     227void fix( std::list< ast::ptr<ast::Decl> > & translationUnit, bool inLibrary ) {
    228228        ast::Pass<SelfAssignChecker>::run( translationUnit );
    229229
     
    308308        }
    309309
    310         void FixInit::fixInitializers( ast::TranslationUnit & translationUnit ) {
     310        void FixInit::fixInitializers( std::list< ast::ptr<ast::Decl> > & translationUnit ) {
    311311                ast::Pass<FixInit> fixer;
    312312
     
    314314                // can't use DeclMutator, because sometimes need to insert IfStmt, etc.
    315315                SemanticErrorException errors;
    316                 for ( auto i = translationUnit.decls.begin(); i != translationUnit.decls.end(); ++i ) {
     316                for ( auto i = translationUnit.begin(); i != translationUnit.end(); ++i ) {
    317317                        try {
    318318                                // maybeAccept( *i, fixer ); translationUnit should never contain null
    319319                                *i = (*i)->accept(fixer);
    320                                 translationUnit.decls.splice( i, fixer.core.staticDtorDecls );
     320                                translationUnit.splice( i, fixer.core.staticDtorDecls );
    321321                        } catch( SemanticErrorException &e ) {
    322322                                errors.append( e );
  • src/ResolvExpr/Resolver.cc

    r4406887 r3c80ccc  
    12741274        // size_t Resolver_new::traceId = Stats::Heap::new_stacktrace_id("Resolver");
    12751275
    1276         void resolve( ast::TranslationUnit& translationUnit ) {
     1276        void resolve( std::list< ast::ptr< ast::Decl > >& translationUnit ) {
    12771277                ast::Pass< Resolver_new >::run( translationUnit );
    12781278        }
  • src/ResolvExpr/Resolver.h

    r4406887 r3c80ccc  
    3535        class StmtExpr;
    3636        class SymbolTable;
    37         class TranslationUnit;
    3837        class Type;
    3938        class TypeEnvironment;
     
    5655
    5756        /// Checks types and binds syntactic constructs to typed representations
    58         void resolve( ast::TranslationUnit& translationUnit );
     57        void resolve( std::list< ast::ptr<ast::Decl> >& translationUnit );
    5958        /// Searches expr and returns the first DeletedExpr found, otherwise nullptr
    6059        const ast::DeletedExpr * findDeletedExpr( const ast::Expr * expr );
     
    7069                const ast::Expr * untyped, const ast::SymbolTable & symtab);
    7170        /// Resolves a constructor init expression
    72         ast::ptr< ast::Init > resolveCtorInit(
     71        ast::ptr< ast::Init > resolveCtorInit( 
    7372                const ast::ConstructorInit * ctorInit, const ast::SymbolTable & symtab );
    7473        /// Resolves a statement expression
    75         ast::ptr< ast::Expr > resolveStmtExpr(
     74        ast::ptr< ast::Expr > resolveStmtExpr( 
    7675                const ast::StmtExpr * stmtExpr, const ast::SymbolTable & symtab );
    7776} // namespace ResolvExpr
Note: See TracChangeset for help on using the changeset viewer.