Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    red9a1ae rb0d9ff7  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug  8 17:07:00 2022
    13 // Update Count     : 1185
     12// Last Modified On : Wed Jul 14 17:36:57 2021
     13// Update Count     : 1154
    1414//
    1515
     
    128128        if ( name ) {
    129129                os << *name << ": ";
     130        } else {
     131                os << "unnamed: ";
    130132        } // if
    131133
     
    152154                initializer->printOneLine( os );
    153155                os << " maybe constructed? " << initializer->get_maybeConstructed();
    154         } // if
    155 
    156         for ( Attribute * attr: reverseIterate( attributes ) ) {
    157                 os << string( indent + 2, ' ' ) << "attr " << attr->name.c_str();
    158         } // for
     156
     157        } // if
    159158
    160159        os << endl;
     
    244243        newnode->type = new TypeData( TypeData::Aggregate );
    245244        newnode->type->aggregate.kind = kind;
    246         newnode->type->aggregate.name = name == nullptr ? new string( DeclarationNode::anonymous.newName() ) : name;
     245        newnode->type->aggregate.name =  name == nullptr ? new string( DeclarationNode::anonymous.newName() ) : name;
    247246        newnode->type->aggregate.actuals = actuals;
    248247        newnode->type->aggregate.fields = fields;
     
    254253} // DeclarationNode::newAggregate
    255254
    256 DeclarationNode * DeclarationNode::newEnum( const string * name, DeclarationNode * constants, bool body, DeclarationNode * base) {
     255DeclarationNode * DeclarationNode::newEnum( const string * name, DeclarationNode * constants, bool body, bool typed, DeclarationNode * base) {
    257256        DeclarationNode * newnode = new DeclarationNode;
    258257        newnode->type = new TypeData( TypeData::Enum );
     
    261260        newnode->type->enumeration.body = body;
    262261        newnode->type->enumeration.anon = name == nullptr;
     262        newnode->type->enumeration.typed = typed;
    263263        if ( base && base->type)  {
    264                 newnode->type->base = base->type;
    265         } // if
    266 
    267         // Check: if base has TypeData
     264                newnode->type->base = base->type;       
     265        } // if
     266
    268267        return newnode;
    269268} // DeclarationNode::newEnum
     
    285284
    286285DeclarationNode * DeclarationNode::newEnumValueGeneric( const string * name, InitializerNode * init ) {
    287         if ( init ) { // list init {} or a singleInit
    288                 if ( init->get_expression() ) { // singleInit
     286        if ( init ) {
     287                if ( init->get_expression() ) {
    289288                        return newEnumConstant( name, init->get_expression() );
    290                 } else { // TODO: listInit
     289                } else {
    291290                        DeclarationNode * newnode = newName( name );
    292291                        newnode->initializer = init;
     
    294293                } // if
    295294        } else {
    296                 return newName( name ); // Not explicitly inited enum value;
     295                return newName( name );
    297296        } // if
    298297} // DeclarationNode::newEnumValueGeneric
     
    505504                        } // for
    506505                        // src is the new item being added and has a single bit
    507                 } else if ( ! src->storageClasses.is_threadlocal_any() ) { // conflict ?
     506                } else if ( ! src->storageClasses.is_threadlocal ) { // conflict ?
    508507                        appendError( error, string( "conflicting " ) + Type::StorageClassesNames[storageClasses.ffs()] +
    509508                                                 " & " + Type::StorageClassesNames[src->storageClasses.ffs()] );
     
    519518        storageClasses |= q->storageClasses;
    520519
    521         for ( Attribute * attr: reverseIterate( q->attributes ) ) {
     520        for ( Attribute *attr: reverseIterate( q->attributes ) ) {
    522521                attributes.push_front( attr->clone() );
    523522        } // for
     
    684683        } // if
    685684        delete o;
    686 
    687685        return this;
    688686}
Note: See TracChangeset for help on using the changeset viewer.