Changes in src/CodeGen/Generate.cc [a984e65:0dd18fd]
- File:
-
- 1 edited
-
src/CodeGen/Generate.cc (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/Generate.cc
ra984e65 r0dd18fd 21 21 #include "CodeGenerator.h" // for CodeGenerator, doSemicolon, oper... 22 22 #include "GenType.h" // for genPrettyType 23 #include "Common/PassVisitor.h" // for PassVisitor24 23 #include "Parser/LinkageSpec.h" // for isBuiltin, isGeneratable 25 24 #include "SynTree/BaseSyntaxNode.h" // for BaseSyntaxNode … … 30 29 31 30 namespace CodeGen { 32 namespace {33 /// Removes misc. nodes that should not exist in CodeGen34 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 } // cleanTree45 } // namespace46 47 31 void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics, bool pretty, bool generateC, bool lineMarks ) { 48 cleanTree( translationUnit );49 50 32 CodeGen::CodeGenerator cgv( os, pretty, generateC, lineMarks ); 51 33 for ( auto & dcl : translationUnit ) { … … 70 52 os << std::endl; 71 53 } 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 } // namespace87 54 } // namespace CodeGen 88 55
Note:
See TracChangeset
for help on using the changeset viewer.