Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/ApplicationExpr.cc

    raaeacf4 r0b00df0  
    2929
    3030ParamEntry::ParamEntry( const ParamEntry &other ) :
    31                 decl( other.decl ), declptr( maybeClone( other.declptr ) ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) )/*, inferParams( new InferredParams( *other.inferParams ) )*/ {
     31                decl( other.decl ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) )/*, inferParams( new InferredParams( *other.inferParams ) )*/ {
    3232}
    3333
    3434ParamEntry &ParamEntry::operator=( const ParamEntry &other ) {
    3535        if ( &other == this ) return *this;
    36         const_cast<UniqueId &>(decl) = other.decl;
    37         const_cast<Declaration * &>(declptr) = maybeClone( other.declptr );
     36        decl = other.decl;
    3837        // xxx - this looks like a memory leak
    39         const_cast<Type * &>(actualType) = maybeClone( other.actualType );
    40         const_cast<Type * &>(formalType) = maybeClone( other.formalType );
     38        actualType = maybeClone( other.actualType );
     39        formalType = maybeClone( other.formalType );
    4140        expr = maybeClone( other.expr );
    4241        // *inferParams = *other.inferParams;
     
    4544
    4645ParamEntry::~ParamEntry() {
    47         delete declptr;
    4846        delete actualType;
    4947        delete formalType;
     
    5250
    5351ParamEntry::ParamEntry( ParamEntry && other ) :
    54                 decl( other.decl ), declptr( other.declptr ), actualType( other.actualType ), formalType( other.formalType ), expr( other.expr )/*, inferParams( std::move( other.inferParams ) )*/ {
    55         const_cast<Declaration * &>(other.declptr) = nullptr;
    56         const_cast<Type * &>(other.actualType) = nullptr;
    57         const_cast<Type * &>(other.formalType) = nullptr;
     52                decl( other.decl ), actualType( other.actualType ), formalType( other.formalType ), expr( other.expr )/*, inferParams( std::move( other.inferParams ) )*/ {
     53        other.actualType = nullptr;
     54        other.formalType = nullptr;
    5855        other.expr = nullptr;
    5956}
     
    6158ParamEntry & ParamEntry::operator=( ParamEntry && other ) {
    6259        if ( &other == this ) return *this;
    63         delete declptr;
    6460        delete actualType;
    6561        delete formalType;
    6662        delete expr;
    67         const_cast<UniqueId &>(decl) = other.decl;
    68         const_cast<Declaration * &>(declptr) = other.declptr;
    69         const_cast<Type * &>(actualType) = other.actualType;
    70         const_cast<Type * &>(formalType) = other.formalType;
     63        decl = other.decl;
     64        actualType = other.actualType;
     65        formalType = other.formalType;
    7166        expr = other.expr;
    72         const_cast<Declaration * &>(other.declptr) = nullptr;
    73         const_cast<Type * &>(other.actualType) = nullptr;
    74         const_cast<Type * &>(other.formalType) = nullptr;
     67        other.actualType = nullptr;
     68        other.formalType = nullptr;
    7569        other.expr = nullptr;
    7670        // inferParams = std::move( other.inferParams );
Note: See TracChangeset for help on using the changeset viewer.