Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Expression.h

    r0b00df0 r2f86ddf  
    2121#include <memory>                 // for allocator, unique_ptr
    2222#include <string>                 // for string
    23 #include <vector>                 // for vector
    2423
    2524#include "BaseSyntaxNode.h"       // for BaseSyntaxNode
     
    3938/// but subject to decay-to-pointer and type parameter renaming
    4039struct ParamEntry {
    41         ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 )/*, inferParams( new InferredParams )*/ {}
    42         ParamEntry( UniqueId decl, Type * actualType, Type * formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr )/*, inferParams( new InferredParams )*/ {}
     40        ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ), inferParams( new InferredParams ) {}
     41        ParamEntry( UniqueId decl, Type * actualType, Type * formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr ), inferParams( new InferredParams ) {}
    4342        ParamEntry( const ParamEntry & other );
    4443        ParamEntry( ParamEntry && other );
     
    5150        Type * formalType;
    5251        Expression * expr;
    53         // std::unique_ptr< InferredParams > inferParams;
     52        std::unique_ptr< InferredParams > inferParams;
    5453};
    5554
     
    6059        TypeSubstitution * env;
    6160        bool extension = false;
    62         InferredParams inferParams;       ///< Post-resolution inferred parameter slots
    63         std::vector<UniqueId> resnSlots;  ///< Pre-resolution inferred parameter slots
    64        
    65         // xxx - should turn inferParams+resnSlots into a union to save some memory
     61        InferredParams inferParams;
    6662
    6763        Expression();
     
    7773        bool get_extension() const { return extension; }
    7874        Expression * set_extension( bool exten ) { extension = exten; return this; }
     75
     76        InferredParams & get_inferParams() { return inferParams; }
    7977
    8078        // move other's inferParams to this
     
    593591class ImplicitCopyCtorExpr : public Expression {
    594592public:
    595         ApplicationExpr * callExpr;
    596         std::list< ObjectDecl * > tempDecls;
    597         std::list< ObjectDecl * > returnDecls;
    598         std::list< Expression * > dtors;
     593        ApplicationExpr * callExpr = nullptr;
    599594
    600595        ImplicitCopyCtorExpr( ApplicationExpr * callExpr );
    601596        ImplicitCopyCtorExpr( const ImplicitCopyCtorExpr & other );
    602597        virtual ~ImplicitCopyCtorExpr();
    603 
    604         ApplicationExpr * get_callExpr() const { return callExpr; }
    605         void set_callExpr( ApplicationExpr * newValue ) { callExpr = newValue; }
    606 
    607         std::list< ObjectDecl * > & get_tempDecls() { return tempDecls; }
    608         std::list< ObjectDecl * > & get_returnDecls() { return returnDecls; }
    609         std::list< Expression * > & get_dtors() { return dtors; }
    610598
    611599        virtual ImplicitCopyCtorExpr * clone() const { return new ImplicitCopyCtorExpr( * this ); }
Note: See TracChangeset for help on using the changeset viewer.