Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/Generate.cc

    ra984e65 r0dd18fd  
    2121#include "CodeGenerator.h"           // for CodeGenerator, doSemicolon, oper...
    2222#include "GenType.h"                 // for genPrettyType
    23 #include "Common/PassVisitor.h"      // for PassVisitor
    2423#include "Parser/LinkageSpec.h"      // for isBuiltin, isGeneratable
    2524#include "SynTree/BaseSyntaxNode.h"  // for BaseSyntaxNode
     
    3029
    3130namespace CodeGen {
    32         namespace {
    33                 /// Removes misc. nodes that should not exist in CodeGen
    34                 struct TreeCleaner {
    35                         void visit( CompoundStmt * stmt );
    36 
    37                         static bool shouldClean( Declaration * );
    38                 };
    39 
    40                 void cleanTree( std::list< Declaration * > & translationUnit ) {
    41                         PassVisitor<TreeCleaner> cleaner;
    42                         filter( translationUnit, [](Declaration * decl) { return TreeCleaner::shouldClean(decl); }, false );
    43                         acceptAll( translationUnit, cleaner );
    44                 } // cleanTree
    45         } // namespace
    46 
    4731        void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics, bool pretty, bool generateC, bool lineMarks ) {
    48                 cleanTree( translationUnit );
    49 
    5032                CodeGen::CodeGenerator cgv( os, pretty, generateC, lineMarks );
    5133                for ( auto & dcl : translationUnit ) {
     
    7052                os << std::endl;
    7153        }
    72 
    73         namespace {
    74                 void TreeCleaner::visit( CompoundStmt * cstmt ) {
    75                         filter( cstmt->kids, [](Statement * stmt) {
    76                                 if ( DeclStmt * declStmt = dynamic_cast< DeclStmt * >( stmt ) ) {
    77                                         return shouldClean( declStmt->decl );
    78                                 }
    79                                 return false;
    80                         }, false );
    81                 }
    82 
    83                 bool TreeCleaner::shouldClean( Declaration * decl ) {
    84                         return dynamic_cast< TraitDecl * >( decl );
    85                 }
    86         } // namespace
    8754} // namespace CodeGen
    8855
Note: See TracChangeset for help on using the changeset viewer.