Changeset df626eb for src/SynTree
- Timestamp:
- Oct 24, 2017, 1:09:33 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- b45d4b2
- Parents:
- 85d340d
- git-author:
- Rob Schluntz <rschlunt@…> (10/24/17 13:08:34)
- git-committer:
- Rob Schluntz <rschlunt@…> (10/24/17 13:09:33)
- Location:
- src/SynTree
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/ApplicationExpr.cc
r85d340d rdf626eb 59 59 60 60 ApplicationExpr::ApplicationExpr( const ApplicationExpr &other ) : 61 Expression( other ), function( maybeClone( other.function ) ) , inferParams( other.inferParams ){61 Expression( other ), function( maybeClone( other.function ) ) { 62 62 cloneAll( other.args, args ); 63 63 } -
src/SynTree/Expression.cc
r85d340d rdf626eb 35 35 Expression::Expression() : result( 0 ), env( 0 ) {} 36 36 37 Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ) {37 Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ), inferParams( other.inferParams ) { 38 38 } 39 39 -
src/SynTree/Expression.h
r85d340d rdf626eb 31 31 32 32 33 /// Expression is the root type for all expressions34 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 59 33 struct ParamEntry; 60 34 … … 73 47 Type * actualType; 74 48 Type * formalType; 75 Expression * expr;49 Expression * expr; 76 50 std::unique_ptr< InferredParams > inferParams; 51 }; 52 53 /// Expression is the root type for all expressions 54 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; 77 80 }; 78 81 … … 83 86 Expression * function; 84 87 std::list<Expression *> args; 85 InferredParams inferParams;86 88 87 89 ApplicationExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >() ); … … 92 94 void set_function( Expression * newValue ) { function = newValue; } 93 95 std::list<Expression *>& get_args() { return args; } 94 InferredParams & get_inferParams() { return inferParams; }95 96 96 97 virtual ApplicationExpr * clone() const { return new ApplicationExpr( * this ); }
Note: See TracChangeset
for help on using the changeset viewer.