Changes in src/AST/Decl.cpp [4c2fe47:c7f9f53]
- File:
-
- 1 edited
-
src/AST/Decl.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Decl.cpp
r4c2fe47 rc7f9f53 9 9 // Author : Aaron B. Moss 10 10 // Created On : Thu May 9 10:00:00 2019 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sat Dec 9 16:28:51 202313 // Update Count : 3111 // Last Modified By : Andrew Beach 12 // Last Modified On : Thu May 5 12:10:00 2022 13 // Update Count : 24 14 14 // 15 15 … … 113 113 // --- EnumDecl 114 114 115 bool EnumDecl::valueOf( const Decl * enumerator, long long & value ) const {115 bool EnumDecl::valueOf( const Decl * enumerator, long long& value ) const { 116 116 if ( enumValues.empty() ) { 117 117 Evaluation crntVal = {0, true, true}; // until expression is given, we know to start counting from 0 118 118 for ( const Decl * member : members ) { 119 const ObjectDecl * field = strict_dynamic_cast< const ObjectDecl* >( member );119 const ObjectDecl* field = strict_dynamic_cast< const ObjectDecl* >( member ); 120 120 if ( field->init ) { 121 const SingleInit * init = strict_dynamic_cast< const SingleInit * >( field->init.get() );121 const SingleInit * init = strict_dynamic_cast< const SingleInit* >( field->init.get() ); 122 122 crntVal = eval( init->value ); 123 123 if ( ! crntVal.isEvaluableInGCC ) { 124 SemanticError( init->location, "Non-constexpr in initialization of enumerator %s", field->name.c_str() ); 124 SemanticError( init->location, ::toString( "Non-constexpr in initialization of " 125 "enumerator: ", field ) ); 125 126 } 126 127 } 127 128 if ( enumValues.count( field->name ) != 0 ) { 128 SemanticError( location, "Enum %s has multiple members with %s", name.c_str(), field->name.c_str() );129 SemanticError( location, ::toString( "Enum ", name, " has multiple members with the " "name ", field->name ) ); 129 130 } 130 131 if (crntVal.hasKnownValue) {
Note:
See TracChangeset
for help on using the changeset viewer.