Changeset 73367a8


Ignore:
Timestamp:
Jan 19, 2018, 3:50:38 PM (6 years ago)
Author:
Rob Schluntz <rschlunt@…>
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:
13deae88
Parents:
891c3e3
Message:

Add InitExpr? and UntypedInitExpr? functionality to PassVisitor?

Location:
src/Common
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Common/PassVisitor.h

    r891c3e3 r73367a8  
    119119        virtual void visit( StmtExpr *  stmtExpr ) override final;
    120120        virtual void visit( UniqueExpr *  uniqueExpr ) override final;
     121        virtual void visit( UntypedInitExpr *  initExpr ) override final;
     122        virtual void visit( InitExpr *  initExpr ) override final;
    121123
    122124        virtual void visit( VoidType * basicType ) override final;
     
    211213        virtual Expression * mutate( StmtExpr *  stmtExpr ) override final;
    212214        virtual Expression * mutate( UniqueExpr *  uniqueExpr ) override final;
     215        virtual Expression * mutate( UntypedInitExpr *  initExpr ) override final;
     216        virtual Expression * mutate( InitExpr *  initExpr ) override final;
    213217
    214218        virtual Type * mutate( VoidType * basicType ) override final;
  • src/Common/PassVisitor.impl.h

    r891c3e3 r73367a8  
    18531853}
    18541854
     1855//--------------------------------------------------------------------------
     1856// UntypedInitExpr
     1857template< typename pass_type >
     1858void PassVisitor< pass_type >::visit( UntypedInitExpr * node ) {
     1859        VISIT_START( node );
     1860
     1861        indexerScopedAccept( node->result, *this );
     1862        maybeAccept_impl   ( node->expr  , *this );
     1863        // not currently visiting initAlts, but this doesn't matter since this node is only used in the resolver.
     1864
     1865        VISIT_END( node );
     1866}
     1867
     1868template< typename pass_type >
     1869Expression * PassVisitor< pass_type >::mutate( UntypedInitExpr * node ) {
     1870        MUTATE_START( node );
     1871
     1872        indexerScopedMutate( node->env   , *this );
     1873        indexerScopedMutate( node->result, *this );
     1874        maybeMutate_impl   ( node->expr  , *this );
     1875        // not currently visiting initAlts, but this doesn't matter since this node is only used in the resolver.
     1876
     1877        MUTATE_END( Expression, node );
     1878}
     1879
     1880//--------------------------------------------------------------------------
     1881// InitExpr
     1882template< typename pass_type >
     1883void PassVisitor< pass_type >::visit( InitExpr * node ) {
     1884        VISIT_START( node );
     1885
     1886        indexerScopedAccept( node->result, *this );
     1887        maybeAccept_impl   ( node->expr  , *this );
     1888        maybeAccept_impl   ( node->designation, *this );
     1889
     1890        VISIT_END( node );
     1891}
     1892
     1893template< typename pass_type >
     1894Expression * PassVisitor< pass_type >::mutate( InitExpr * node ) {
     1895        MUTATE_START( node );
     1896
     1897        indexerScopedMutate( node->env   , *this );
     1898        indexerScopedMutate( node->result, *this );
     1899        maybeMutate_impl   ( node->expr  , *this );
     1900        maybeMutate_impl   ( node->designation, *this );
     1901
     1902        MUTATE_END( Expression, node );
     1903}
     1904
    18551905template< typename pass_type >
    18561906void PassVisitor< pass_type >::visit( VoidType * node ) {
Note: See TracChangeset for help on using the changeset viewer.