Changeset 0bcc2b7


Ignore:
Timestamp:
Jul 9, 2018, 10:31:54 AM (3 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer
Children:
036dd5f
Parents:
062e8df
Message:

Fix handling of traits and TypeDecls? in ReplaceTypedef?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Validate.cc

    r062e8df r0bcc2b7  
    200200                void premutate( UnionDecl * unionDecl );
    201201                void premutate( EnumDecl * enumDecl );
     202                void premutate( TraitDecl * );
    202203
    203204                void premutate( FunctionType * ftype );
     
    211212                typedef std::unique_ptr<TypedefDecl> TypedefDeclPtr;
    212213                typedef ScopedMap< std::string, std::pair< TypedefDeclPtr, int > > TypedefMap;
    213                 typedef std::map< std::string, TypeDecl * > TypeDeclMap; // xxx - convert to ScopedMap
     214                typedef ScopedMap< std::string, TypeDecl * > TypeDeclMap;
    214215                TypedefMap typedefNames;
    215216                TypeDeclMap typedeclNames;
     
    981982                } // if
    982983
    983                 typedeclNames[ typeDecl->name ] = typeDecl;
     984                typedeclNames.insert( typeDecl->name, typeDecl );
    984985        }
    985986
    986987        void ReplaceTypedef::premutate( FunctionDecl * ) {
    987988                GuardScope( typedefNames );
     989                GuardScope( typedeclNames );
    988990        }
    989991
    990992        void ReplaceTypedef::premutate( ObjectDecl * ) {
    991993                GuardScope( typedefNames );
     994                GuardScope( typedeclNames );
    992995        }
    993996
     
    10061009        void ReplaceTypedef::premutate( CastExpr * ) {
    10071010                GuardScope( typedefNames );
     1011                GuardScope( typedeclNames );
    10081012        }
    10091013
    10101014        void ReplaceTypedef::premutate( CompoundStmt * ) {
    10111015                GuardScope( typedefNames );
     1016                GuardScope( typedeclNames );
    10121017                scopeLevel += 1;
    10131018                GuardAction( [this](){ scopeLevel -= 1; } );
     
    10421047
    10431048                GuardScope( typedefNames );
     1049                GuardScope( typedeclNames );
    10441050                mutateAll( aggr->parameters, *visitor );
    10451051
     
    10801086                GuardValue( inFunctionType );
    10811087                inFunctionType = true;
     1088        }
     1089
     1090        void ReplaceTypedef::premutate( TraitDecl * ) {
     1091                GuardScope( typedefNames );
     1092                GuardScope( typedeclNames);
    10821093        }
    10831094
Note: See TracChangeset for help on using the changeset viewer.