Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Validate/GenericParameter.cpp

    r298fe57 r4ec9513  
    1010// Created On       : Fri Mar 21 10:02:00 2022
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Apr 22 16:43:00 2022
    13 // Update Count     : 1
     12// Last Modified On : Wed Apr 13 10:09:00 2022
     13// Update Count     : 0
    1414//
    1515
     
    2222#include "AST/TranslationUnit.hpp"
    2323#include "AST/Type.hpp"
    24 #include "Validate/NoIdSymbolTable.hpp"
    2524
    2625namespace Validate {
     
    139138// --------------------------------------------------------------------------
    140139
    141 struct TranslateDimensionCore :
    142                 public WithNoIdSymbolTable, public ast::WithGuards {
     140// A SymbolTable that only has the operations used in the Translate Dimension
     141// pass. More importantly, it doesn't have some methods that should no be
     142// called by the Pass template (lookupId and addId).
     143class NoIdSymbolTable {
     144        ast::SymbolTable base;
     145public:
     146#       define FORWARD_X( func, types_and_names, just_names ) \
     147        inline auto func types_and_names -> decltype( base.func just_names ) { \
     148                return base.func just_names ; \
     149        }
     150#       define FORWARD_0( func )         FORWARD_X( func, (),             () )
     151#       define FORWARD_1( func, type )   FORWARD_X( func, (type arg),     (arg) )
     152#       define FORWARD_2( func, t0, t1 ) FORWARD_X( func, (t0 a0, t1 a1), (a0, a1) )
     153
     154        FORWARD_0( enterScope )
     155        FORWARD_0( leaveScope )
     156        FORWARD_1( lookupType, const std::string &        )
     157        FORWARD_1( addType   , const ast::NamedTypeDecl * )
     158        FORWARD_1( addStruct , const ast::StructDecl *    )
     159        FORWARD_1( addEnum   , const ast::EnumDecl *      )
     160        FORWARD_1( addUnion  , const ast::UnionDecl *     )
     161        FORWARD_1( addTrait  , const ast::TraitDecl *     )
     162        FORWARD_2( addWith   , const std::vector< ast::ptr<ast::Expr> > &, const ast::Decl * )
     163};
     164
     165struct TranslateDimensionCore : public ast::WithGuards {
     166        NoIdSymbolTable symtab;
    143167
    144168        // SUIT: Struct- or Union- InstType
Note: See TracChangeset for help on using the changeset viewer.