Changes in src/SynTree/Expression.h [df626eb:d29fa5f]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Expression.h
rdf626eb rd29fa5f 31 31 32 32 33 /// Expression is the root type for all expressions 34 class Expression : public BaseSyntaxNode{ 35 public: 36 Type * result; 37 TypeSubstitution * env; 38 bool extension = false; 39 40 Expression(); 41 Expression( const Expression & other ); 42 virtual ~Expression(); 43 44 Type *& get_result() { return result; } 45 const Type * get_result() const { return result; } 46 void set_result( Type * newValue ) { result = newValue; } 47 48 TypeSubstitution * get_env() const { return env; } 49 void set_env( TypeSubstitution * newValue ) { env = newValue; } 50 bool get_extension() const { return extension; } 51 Expression * set_extension( bool exten ) { extension = exten; return this; } 52 53 virtual Expression * clone() const override = 0; 54 virtual void accept( Visitor & v ) override = 0; 55 virtual Expression * acceptMutator( Mutator & m ) override = 0; 56 virtual void print( std::ostream & os, Indenter indent = {} ) const override; 57 }; 58 33 59 struct ParamEntry; 34 60 … … 47 73 Type * actualType; 48 74 Type * formalType; 49 Expression 75 Expression* expr; 50 76 std::unique_ptr< InferredParams > inferParams; 51 };52 53 /// Expression is the root type for all expressions54 class Expression : public BaseSyntaxNode {55 public:56 Type * result;57 TypeSubstitution * env;58 bool extension = false;59 InferredParams inferParams;60 61 Expression();62 Expression( const Expression & other );63 virtual ~Expression();64 65 Type *& get_result() { return result; }66 const Type * get_result() const { return result; }67 void set_result( Type * newValue ) { result = newValue; }68 69 TypeSubstitution * get_env() const { return env; }70 void set_env( TypeSubstitution * newValue ) { env = newValue; }71 bool get_extension() const { return extension; }72 Expression * set_extension( bool exten ) { extension = exten; return this; }73 74 InferredParams & get_inferParams() { return inferParams; }75 76 virtual Expression * clone() const override = 0;77 virtual void accept( Visitor & v ) override = 0;78 virtual Expression * acceptMutator( Mutator & m ) override = 0;79 virtual void print( std::ostream & os, Indenter indent = {} ) const override;80 77 }; 81 78 … … 86 83 Expression * function; 87 84 std::list<Expression *> args; 85 InferredParams inferParams; 88 86 89 87 ApplicationExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >() ); … … 94 92 void set_function( Expression * newValue ) { function = newValue; } 95 93 std::list<Expression *>& get_args() { return args; } 94 InferredParams & get_inferParams() { return inferParams; } 96 95 97 96 virtual ApplicationExpr * clone() const { return new ApplicationExpr( * this ); }
Note:
See TracChangeset
for help on using the changeset viewer.