Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r85b2300 r13073be  
    133133                output << "__attribute__ ((";
    134134                for ( list< Attribute * >::iterator attr( attributes.begin() );; ) {
    135                         output << (*attr)->name;
    136                         if ( ! (*attr)->parameters.empty() ) {
     135                        output << (*attr)->get_name();
     136                        if ( ! (*attr)->get_parameters().empty() ) {
    137137                                output << "(";
    138                                 genCommaList( (*attr)->parameters.begin(), (*attr)->parameters.end() );
     138                                genCommaList( (*attr)->get_parameters().begin(), (*attr)->get_parameters().end() );
    139139                                output << ")";
    140140                        } // if
     
    172172        // *** Declarations
    173173        void CodeGenerator::postvisit( FunctionDecl * functionDecl ) {
    174                 // deleted decls should never be used, so don't print them
    175                 if ( functionDecl->isDeleted && genC ) return;
    176174                extension( functionDecl );
    177175                genAttributes( functionDecl->get_attributes() );
     
    187185                        functionDecl->get_statements()->accept( *visitor );
    188186                } // if
    189                 if ( functionDecl->isDeleted ) {
    190                         output << " = void";
    191                 }
    192187        }
    193188
    194189        void CodeGenerator::postvisit( ObjectDecl * objectDecl ) {
    195                 // deleted decls should never be used, so don't print them
    196                 if ( objectDecl->isDeleted && genC ) return;
    197190                if (objectDecl->get_name().empty() && genC ) {
    198191                        // only generate an anonymous name when generating C code, otherwise it clutters the output too much
     
    213206                        objectDecl->get_init()->accept( *visitor );
    214207                } // if
    215                 if ( objectDecl->isDeleted ) {
    216                         output << " = void";
    217                 }
    218208
    219209                if ( objectDecl->get_bitfieldWidth() ) {
     
    837827                expr->expr->accept( *visitor );
    838828        }
    839 
    840         void CodeGenerator::postvisit( DefaultArgExpr * arg ) {
    841                 assertf( ! genC, "Default argument expressions should not reach code generation." );
    842                 arg->expr->accept( *visitor );
    843         }
    844 
    845         void CodeGenerator::postvisit( GenericExpr * expr ) {
    846                 assertf( ! genC, "C11 _Generic expressions should not reach code generation." );
    847                 output << "_Generic(";
    848                 expr->control->accept( *visitor );
    849                 output << ", ";
    850                 unsigned int numAssocs = expr->associations.size();
    851                 unsigned int i = 0;
    852                 for ( GenericExpr::Association & assoc : expr->associations ) {
    853                         if (assoc.isDefault) {
    854                                 output << "default: ";
    855                         } else {
    856                                 output << genType( assoc.type, "", pretty, genC ) << ": ";
    857                         }
    858                         assoc.expr->accept( *visitor );
    859                         if ( i+1 != numAssocs ) {
    860                                 output << ", ";
    861                         }
    862                         i++;
    863                 }
    864                 output << ")";
    865         }
    866 
    867829
    868830        // *** Statements
Note: See TracChangeset for help on using the changeset viewer.