Changeset 9dcb653


Ignore:
Timestamp:
Sep 13, 2017, 2:13:59 PM (7 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
9f5ecf5
Parents:
aa72198
Message:

Clean pass visitor and enabled indexer features

Location:
src/Common
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Common/PassVisitor.impl.h

    raa72198 r9dcb653  
    807807
    808808        maybeAccept( node->block       , *this );
    809         maybeAccept  ( node->handlers    , *this );
     809        maybeAccept( node->handlers    , *this );
    810810        maybeAccept( node->finallyBlock, *this );
    811811
     
    818818
    819819        maybeMutateRef( node->block       , *this );
    820         maybeMutateRef     ( node->handlers    , *this );
     820        maybeMutateRef( node->handlers    , *this );
    821821        maybeMutateRef( node->finallyBlock, *this );
    822822
     
    918918        indexerScopedAccept( node->result  , *this );
    919919        maybeAccept        ( node->function, *this );
    920         maybeAccept          ( node->args    , *this );
     920        maybeAccept        ( node->args    , *this );
    921921
    922922        VISIT_END( node );
     
    930930        indexerScopedMutate( node->result  , *this );
    931931        maybeMutateRef     ( node->function, *this );
    932         maybeMutateRef          ( node->args    , *this );
     932        maybeMutateRef     ( node->args    , *this );
    933933
    934934        MUTATE_END( Expression, node );
     
    14671467        indexerScopedAccept( node->result     , *this );
    14681468        maybeAccept        ( node->callExpr   , *this );
    1469         maybeAccept          ( node->tempDecls  , *this );
    1470         maybeAccept          ( node->returnDecls, *this );
    1471         maybeAccept          ( node->dtors      , *this );
     1469        maybeAccept        ( node->tempDecls  , *this );
     1470        maybeAccept        ( node->returnDecls, *this );
     1471        maybeAccept        ( node->dtors      , *this );
    14721472
    14731473        VISIT_END( node );
     
    14811481        indexerScopedMutate( node->result     , *this );
    14821482        maybeMutateRef     ( node->callExpr   , *this );
    1483         maybeMutateRef          ( node->tempDecls  , *this );
    1484         maybeMutateRef          ( node->returnDecls, *this );
    1485         maybeMutateRef          ( node->dtors      , *this );
     1483        maybeMutateRef     ( node->tempDecls  , *this );
     1484        maybeMutateRef     ( node->returnDecls, *this );
     1485        maybeMutateRef     ( node->dtors      , *this );
    14861486
    14871487        MUTATE_END( Expression, node );
     
    15661566
    15671567        indexerScopedAccept( node->result, *this );
     1568        maybeAccept        ( node->exprs , *this );
     1569
     1570        VISIT_END( node );
     1571}
     1572
     1573template< typename pass_type >
     1574Expression * PassVisitor< pass_type >::mutate( UntypedTupleExpr * node ) {
     1575        MUTATE_START( node );
     1576
     1577        indexerScopedMutate( node->env   , *this );
     1578        indexerScopedMutate( node->result, *this );
     1579        maybeMutateRef     ( node->exprs , *this );
     1580
     1581        MUTATE_END( Expression, node );
     1582}
     1583
     1584//--------------------------------------------------------------------------
     1585// TupleExpr
     1586template< typename pass_type >
     1587void PassVisitor< pass_type >::visit( TupleExpr * node ) {
     1588        VISIT_START( node );
     1589
     1590        indexerScopedAccept( node->result, *this );
    15681591        maybeAccept          ( node->exprs , *this );
    15691592
     
    15721595
    15731596template< typename pass_type >
    1574 Expression * PassVisitor< pass_type >::mutate( UntypedTupleExpr * node ) {
    1575         MUTATE_START( node );
    1576 
    1577         indexerScopedMutate( node->env   , *this );
    1578         indexerScopedMutate( node->result, *this );
    1579         maybeMutateRef          ( node->exprs , *this );
    1580 
    1581         MUTATE_END( Expression, node );
    1582 }
    1583 
    1584 //--------------------------------------------------------------------------
    1585 // TupleExpr
    1586 template< typename pass_type >
    1587 void PassVisitor< pass_type >::visit( TupleExpr * node ) {
    1588         VISIT_START( node );
    1589 
    1590         indexerScopedAccept( node->result, *this );
    1591         maybeAccept          ( node->exprs , *this );
    1592 
    1593         VISIT_END( node );
    1594 }
    1595 
    1596 template< typename pass_type >
    15971597Expression * PassVisitor< pass_type >::mutate( TupleExpr * node ) {
    15981598        MUTATE_START( node );
     
    16001600        indexerScopedMutate( node->env   , *this );
    16011601        indexerScopedMutate( node->result, *this );
    1602         maybeMutateRef          ( node->exprs , *this );
     1602        maybeMutateRef     ( node->exprs , *this );
    16031603
    16041604        MUTATE_END( Expression, node );
     
    16641664        indexerScopedAccept( node->result     , *this );
    16651665        maybeAccept        ( node->statements , *this );
    1666         maybeAccept          ( node->returnDecls, *this );
    1667         maybeAccept          ( node->dtors      , *this );
     1666        maybeAccept        ( node->returnDecls, *this );
     1667        maybeAccept        ( node->dtors      , *this );
    16681668
    16691669        VISIT_END( node );
     
    16811681        indexerScopedMutate( node->result     , *this );
    16821682        maybeMutateRef     ( node->statements , *this );
    1683         maybeMutateRef          ( node->returnDecls, *this );
    1684         maybeMutateRef          ( node->dtors      , *this );
     1683        maybeMutateRef     ( node->returnDecls, *this );
     1684        maybeMutateRef     ( node->dtors      , *this );
    16851685
    16861686        MUTATE_END( Expression, node );
  • src/Common/PassVisitor.proto.h

    raa72198 r9dcb653  
    6161template< typename TreeType, typename VisitorType >
    6262inline void indexerScopedAccept( TreeType * tree, VisitorType & visitor ) {
    63         // auto guard = makeFuncGuard(
    64         //      [&visitor]() { visitor.indexerScopeEnter(); },
    65         //      [&visitor]() { visitor.indexerScopeLeave(); }
    66         // );
     63        auto guard = makeFuncGuard(
     64                [&visitor]() { visitor.indexerScopeEnter(); },
     65                [&visitor]() { visitor.indexerScopeLeave(); }
     66        );
    6767        maybeAccept( tree, visitor );
    6868}
     
    7070template< typename TreeType, typename MutatorType >
    7171inline void indexerScopedMutate( TreeType *& tree, MutatorType & mutator ) {
    72         // auto guard = makeFuncGuard(
    73         //      [&mutator]() { mutator.indexerScopeEnter(); },
    74         //      [&mutator]() { mutator.indexerScopeLeave(); }
    75         // );
     72        auto guard = makeFuncGuard(
     73                [&mutator]() { mutator.indexerScopeEnter(); },
     74                [&mutator]() { mutator.indexerScopeLeave(); }
     75        );
    7676        tree = maybeMutate( tree, mutator );
    7777}
     
    175175template<typename pass_type>
    176176static inline auto indexer_impl_enterScope( pass_type & pass, int ) -> decltype( pass.indexer.enterScope(), void() ) {
    177         // pass.indexer.enterScope();
     177        pass.indexer.enterScope();
    178178}
    179179
     
    183183template<typename pass_type>
    184184static inline auto indexer_impl_leaveScope( pass_type & pass, int ) -> decltype( pass.indexer.leaveScope(), void() ) {
    185         // pass.indexer.leaveScope();
     185        pass.indexer.leaveScope();
    186186}
    187187
     
    193193template<typename pass_type>                                                                                                   \
    194194static inline auto indexer_impl_##func ( pass_type & pass, int, type arg ) -> decltype( pass.indexer.func( arg ), void() ) {   \
    195         /*pass.indexer.func( arg );*/                                                                                                \
     195        pass.indexer.func( arg );                                                                                                \
    196196}                                                                                                                              \
    197197                                                                                                                               \
     
    209209template<typename pass_type>
    210210static inline auto indexer_impl_addStructFwd( pass_type & pass, int, StructDecl * decl ) -> decltype( pass.indexer.addStruct( decl ), void() ) {
    211         // StructDecl * fwd = new StructDecl( decl->name );
    212         // cloneAll( decl->parameters, fwd->parameters );
    213         // pass.indexer.addStruct( fwd );
     211        StructDecl * fwd = new StructDecl( decl->name );
     212        cloneAll( decl->parameters, fwd->parameters );
     213        pass.indexer.addStruct( fwd );
    214214}
    215215
     
    219219template<typename pass_type>
    220220static inline auto indexer_impl_addUnionFwd( pass_type & pass, int, UnionDecl * decl ) -> decltype( pass.indexer.addUnion( decl ), void() ) {
    221         // UnionDecl * fwd = new UnionDecl( decl->name );
    222         // cloneAll( decl->parameters, fwd->parameters );
    223         // pass.indexer.addUnion( fwd );
     221        UnionDecl * fwd = new UnionDecl( decl->name );
     222        cloneAll( decl->parameters, fwd->parameters );
     223        pass.indexer.addUnion( fwd );
    224224}
    225225
     
    229229template<typename pass_type>
    230230static inline auto indexer_impl_addStruct( pass_type & pass, int, const std::string & str ) -> decltype( pass.indexer.addStruct( str ), void() ) {
    231         // if ( ! pass.indexer.lookupStruct( str ) ) {
    232         //      pass.indexer.addStruct( str );
    233         // }
     231        if ( ! pass.indexer.lookupStruct( str ) ) {
     232                pass.indexer.addStruct( str );
     233        }
    234234}
    235235
     
    239239template<typename pass_type>
    240240static inline auto indexer_impl_addUnion( pass_type & pass, int, const std::string & str ) -> decltype( pass.indexer.addUnion( str ), void() ) {
    241         // if ( ! pass.indexer.lookupUnion( str ) ) {
    242         //      pass.indexer.addUnion( str );
    243         // }
     241        if ( ! pass.indexer.lookupUnion( str ) ) {
     242                pass.indexer.addUnion( str );
     243        }
    244244}
    245245
Note: See TracChangeset for help on using the changeset viewer.