Changes in src/SynTree/ApplicationExpr.cc [0b00df0:aaeacf4]
- File:
-
- 1 edited
-
src/SynTree/ApplicationExpr.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/ApplicationExpr.cc
r0b00df0 raaeacf4 29 29 30 30 ParamEntry::ParamEntry( const ParamEntry &other ) : 31 decl( other.decl ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) )/*, inferParams( new InferredParams( *other.inferParams ) )*/ {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 ) )*/ { 32 32 } 33 33 34 34 ParamEntry &ParamEntry::operator=( const ParamEntry &other ) { 35 35 if ( &other == this ) return *this; 36 decl = other.decl; 36 const_cast<UniqueId &>(decl) = other.decl; 37 const_cast<Declaration * &>(declptr) = maybeClone( other.declptr ); 37 38 // xxx - this looks like a memory leak 38 actualType= maybeClone( other.actualType );39 formalType= maybeClone( other.formalType );39 const_cast<Type * &>(actualType) = maybeClone( other.actualType ); 40 const_cast<Type * &>(formalType) = maybeClone( other.formalType ); 40 41 expr = maybeClone( other.expr ); 41 42 // *inferParams = *other.inferParams; … … 44 45 45 46 ParamEntry::~ParamEntry() { 47 delete declptr; 46 48 delete actualType; 47 49 delete formalType; … … 50 52 51 53 ParamEntry::ParamEntry( ParamEntry && other ) : 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; 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; 55 58 other.expr = nullptr; 56 59 } … … 58 61 ParamEntry & ParamEntry::operator=( ParamEntry && other ) { 59 62 if ( &other == this ) return *this; 63 delete declptr; 60 64 delete actualType; 61 65 delete formalType; 62 66 delete expr; 63 decl = other.decl; 64 actualType = other.actualType; 65 formalType = other.formalType; 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; 66 71 expr = other.expr; 67 other.actualType = nullptr; 68 other.formalType = nullptr; 72 const_cast<Declaration * &>(other.declptr) = nullptr; 73 const_cast<Type * &>(other.actualType) = nullptr; 74 const_cast<Type * &>(other.formalType) = nullptr; 69 75 other.expr = nullptr; 70 76 // inferParams = std::move( other.inferParams );
Note:
See TracChangeset
for help on using the changeset viewer.