Changes in src/ResolvExpr/Alternative.cc [f6f0cca3:4e7cc5ce]
- File:
-
- 1 edited
-
src/ResolvExpr/Alternative.cc (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/Alternative.cc
rf6f0cca3 r4e7cc5ce 20 20 #include <utility> // for move 21 21 22 #include "Common/GC.h"23 #include "Common/PassVisitor.h"24 22 #include "Common/utility.h" // for maybeClone 25 23 #include "ResolvExpr/Cost.h" // for Cost, Cost::zero, operator<< 26 24 #include "ResolvExpr/TypeEnvironment.h" // for TypeEnvironment 27 25 #include "SynTree/Expression.h" // for Expression 28 #include "SynTree/GcTracer.h"29 26 #include "SynTree/Type.h" // for Type 30 27 31 28 namespace ResolvExpr { 32 Alternative::Alternative() : cost( Cost::zero ), cvtCost( Cost::zero ), expr( 0) {}29 Alternative::Alternative() : cost( Cost::zero ), cvtCost( Cost::zero ), expr( nullptr ) {} 33 30 34 31 Alternative::Alternative( Expression *expr, const TypeEnvironment &env, const Cost& cost ) … … 37 34 Alternative::Alternative( Expression *expr, const TypeEnvironment &env, const Cost& cost, const Cost &cvtCost ) 38 35 : cost( cost ), cvtCost( cvtCost ), expr( expr ), env( env ) {} 39 40 Alternative::Alternative( const Alternative& o ) 41 : cost( o.cost ), cvtCost( o.cvtCost ), expr( maybeClone( o.expr ) ), env( o.env ) {} 42 43 Alternative & Alternative::operator= ( const Alternative& o ) { 44 if ( &o == this ) return *this; 45 cost = o.cost; 46 cvtCost = o.cvtCost; 47 expr = maybeClone( o.expr ); 48 env = o.env; 36 37 Alternative::Alternative( const Alternative &other ) : cost( other.cost ), cvtCost( other.cvtCost ), expr( maybeClone( other.expr ) ), env( other.env ) { 38 } 39 40 Alternative &Alternative::operator=( const Alternative &other ) { 41 if ( &other == this ) return *this; 42 delete expr; 43 cost = other.cost; 44 cvtCost = other.cvtCost; 45 expr = maybeClone( other.expr ); 46 env = other.env; 49 47 return *this; 48 } 49 50 Alternative::Alternative( Alternative && other ) : cost( other.cost ), cvtCost( other.cvtCost ), expr( other.expr ), env( std::move( other.env ) ) { 51 other.expr = nullptr; 52 } 53 54 Alternative & Alternative::operator=( Alternative && other ) { 55 if ( &other == this ) return *this; 56 delete expr; 57 cost = other.cost; 58 cvtCost = other.cvtCost; 59 expr = other.expr; 60 env = std::move( other.env ); 61 other.expr = nullptr; 62 return *this; 63 } 64 65 Alternative::~Alternative() { 66 delete expr; 50 67 } 51 68 … … 79 96 } 80 97 81 const GC& operator<< ( const GC& gc, const Alternative& alt ) {82 PassVisitor<GcTracer> tracer{ gc };83 maybeAccept( alt.expr, tracer );84 tracer << alt.env;85 return gc;86 }87 88 98 } // namespace ResolvExpr 89 99
Note:
See TracChangeset
for help on using the changeset viewer.