Changeset 77de429 for src/Validate


Ignore:
Timestamp:
Oct 19, 2022, 1:42:29 PM (19 months ago)
Author:
JiadaL <j82liang@…>
Branches:
ADT, ast-experimental, master
Children:
72b5805e, e874605
Parents:
9511841
Message:

Fix overriding enum value

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Validate/LinkReferenceToTypes.cpp

    r9511841 r77de429  
    209209                if ( member->enumInLine ) {
    210210                        auto targetEnum = symtab.lookupEnum( member->name );
    211                         if (targetEnum) {                       
    212                                 for (auto singleMamber : targetEnum->members) {
     211                        if ( targetEnum ) {                     
     212                                for ( auto singleMamber : targetEnum->members ) {
    213213                                        auto tm = singleMamber.as<ast::ObjectDecl>();
    214214                                        auto t = new ast::ObjectDecl(
     
    224224                                                tm->funcSpec
    225225                                        );
     226                                        t->importValue = true;
    226227                                        buffer.push_back(t);
    227228                                }
    228229                        }
    229230                } else {
     231                        auto search_it = std::find_if( buffer.begin(), buffer.end(), [member](ast::ptr<ast::Decl> cur) {
     232                                auto curAsObjDecl = cur.as<ast::ObjectDecl>();
     233                                return (curAsObjDecl->importValue) && (curAsObjDecl->name == member->name);
     234                        });
     235                        if ( search_it != buffer.end() ) {
     236                                buffer.erase( search_it ); // Found an import enum value that has the same name
     237                                // override the imported value
     238                        }
    230239                        buffer.push_back( *it );
    231240                }
Note: See TracChangeset for help on using the changeset viewer.