Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Decl.cpp

    r8f557161 r3e94a23  
    142142bool EnumDecl::valueOf( const Decl * enumerator, long long& value ) const {
    143143        if ( enumValues.empty() ) {
    144                 Evaluation crntVal = {0, true, true};  // until expression is given, we know to start counting from 0
     144                long long crntVal = 0;
    145145                for ( const Decl * member : members ) {
    146146                        const ObjectDecl* field = strict_dynamic_cast< const ObjectDecl* >( member );
    147147                        if ( field->init ) {
    148148                                const SingleInit * init = strict_dynamic_cast< const SingleInit* >( field->init.get() );
    149                                 crntVal = eval( init->value );
    150                                 if ( ! crntVal.isEvaluableInGCC ) {
     149                                auto result = eval( init->value );
     150                                if ( ! result.second ) {
    151151                                        SemanticError( init->location, ::toString( "Non-constexpr in initialization of "
    152152                                                "enumerator: ", field ) );
    153153                                }
     154                                crntVal = result.first;
    154155                        }
    155156                        if ( enumValues.count( field->name ) != 0 ) {
    156157                                SemanticError( location, ::toString( "Enum ", name, " has multiple members with the "   "name ", field->name ) );
    157158                        }
    158                         if (crntVal.hasKnownValue) {
    159                                 enumValues[ field->name ] = crntVal.knownValue;
    160                         }
    161                         ++crntVal.knownValue;
     159                        enumValues[ field->name ] = crntVal;
     160                        ++crntVal;
    162161                }
    163162        }
Note: See TracChangeset for help on using the changeset viewer.