Changeset 63bde81 for src/AST


Ignore:
Timestamp:
Jul 19, 2021, 4:03:19 PM (5 years ago)
Author:
caparsons <caparson@…>
Branches:
ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum, stuck-waitfor-destruct
Children:
f9b68d6
Parents:
12a1013 (diff), fcaa1e4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Location:
src/AST
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Convert.cpp

    r12a1013 r63bde81  
    99// Author           : Thierry Delisle
    1010// Created On       : Thu May 09 15::37::05 2019
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar 12 18:43:51 2021
    13 // Update Count     : 36
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Wed Jul 14 16:15:00 2021
     13// Update Count     : 37
    1414//
    1515
     
    13561356        }
    13571357
     1358        const ast::Type * visit( const ast::VTableType * node ) override final {
     1359                return visitType( node, new VTableType{
     1360                        cv( node ),
     1361                        get<Type>().accept1( node->base )
     1362                } );
     1363        }
     1364
    13581365        const ast::Type * visit( const ast::VarArgsType * node ) override final {
    13591366                return visitType( node, new VarArgsType{ cv( node ) } );
     
    27992806        }
    28002807
     2808        virtual void visit( const VTableType * old ) override final {
     2809                visitType( old, new ast::VTableType{
     2810                        GET_ACCEPT_1( base, Type ),
     2811                        cv( old )
     2812                } );
     2813        }
     2814
    28012815        virtual void visit( const AttrType * ) override final {
    28022816                assertf( false, "AttrType deprecated in new AST." );
  • src/AST/Fwd.hpp

    r12a1013 r63bde81  
    117117class TupleType;
    118118class TypeofType;
     119class VTableType;
    119120class VarArgsType;
    120121class ZeroType;
  • src/AST/Pass.hpp

    r12a1013 r63bde81  
    213213        const ast::Type *             visit( const ast::TupleType            * ) override final;
    214214        const ast::Type *             visit( const ast::TypeofType           * ) override final;
     215        const ast::Type *             visit( const ast::VTableType           * ) override final;
    215216        const ast::Type *             visit( const ast::VarArgsType          * ) override final;
    216217        const ast::Type *             visit( const ast::ZeroType             * ) override final;
  • src/AST/Pass.impl.hpp

    r12a1013 r63bde81  
    18731873
    18741874//--------------------------------------------------------------------------
     1875// VTableType
     1876template< typename core_t >
     1877const ast::Type * ast::Pass< core_t >::visit( const ast::VTableType * node ) {
     1878        VISIT_START( node );
     1879
     1880        VISIT(
     1881                maybe_accept( node, &VTableType::base );
     1882        )
     1883
     1884        VISIT_END( Type, node );
     1885}
     1886
     1887//--------------------------------------------------------------------------
    18751888// VarArgsType
    18761889template< typename core_t >
  • src/AST/Print.cpp

    r12a1013 r63bde81  
    14161416        }
    14171417
     1418        virtual const ast::Type * visit( const ast::VTableType * node ) override final {
     1419                preprint( node );
     1420                os << "vtable for ";
     1421                safe_print( node->base );
     1422
     1423                return node;
     1424        }
     1425
    14181426        virtual const ast::Type * visit( const ast::VarArgsType * node ) override final {
    14191427                preprint( node );
  • src/AST/Type.hpp

    r12a1013 r63bde81  
    1010// Created On       : Thu May 9 10:00:00 2019
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Thu Jul 23 14:15:00 2020
    13 // Update Count     : 6
     12// Last Modified On : Wed Jul 14 15:54:00 2021
     13// Update Count     : 7
    1414//
    1515
     
    491491};
    492492
     493/// Virtual Table Type `vtable(T)`
     494class VTableType final : public Type {
     495public:
     496        ptr<Type> base;
     497
     498        VTableType( const Type * b, CV::Qualifiers q = {} ) : Type(q), base(b) {}
     499
     500        const Type * accept( Visitor & v ) const override { return v.visit( this ); }
     501private:
     502        VTableType * clone() const override { return new VTableType{ *this }; }
     503        MUTATE_FRIEND
     504};
     505
    493506/// GCC built-in varargs type
    494507class VarArgsType final : public Type {
  • src/AST/Visitor.hpp

    r12a1013 r63bde81  
    105105    virtual const ast::Type *             visit( const ast::TupleType            * ) = 0;
    106106    virtual const ast::Type *             visit( const ast::TypeofType           * ) = 0;
     107    virtual const ast::Type *             visit( const ast::VTableType           * ) = 0;
    107108    virtual const ast::Type *             visit( const ast::VarArgsType          * ) = 0;
    108109    virtual const ast::Type *             visit( const ast::ZeroType             * ) = 0;
Note: See TracChangeset for help on using the changeset viewer.