Changeset df626eb for src/SynTree


Ignore:
Timestamp:
Oct 24, 2017, 1:09:33 PM (6 years ago)
Author:
Rob Schluntz <rschlunt@…>
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)
Message:

Move inferred parameters to Exception base class

Location:
src/SynTree
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/ApplicationExpr.cc

    r85d340d rdf626eb  
    5959
    6060ApplicationExpr::ApplicationExpr( const ApplicationExpr &other ) :
    61                 Expression( other ), function( maybeClone( other.function ) ), inferParams( other.inferParams ) {
     61                Expression( other ), function( maybeClone( other.function ) ) {
    6262        cloneAll( other.args, args );
    6363}
  • src/SynTree/Expression.cc

    r85d340d rdf626eb  
    3535Expression::Expression() : result( 0 ), env( 0 ) {}
    3636
    37 Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ) {
     37Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ), inferParams( other.inferParams ) {
    3838}
    3939
  • src/SynTree/Expression.h

    r85d340d rdf626eb  
    3131
    3232
    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 
    5933struct ParamEntry;
    6034
     
    7347        Type * actualType;
    7448        Type * formalType;
    75         Expression* expr;
     49        Expression * expr;
    7650        std::unique_ptr< InferredParams > inferParams;
     51};
     52
     53/// Expression is the root type for all expressions
     54class 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;
    7780};
    7881
     
    8386        Expression * function;
    8487        std::list<Expression *> args;
    85         InferredParams inferParams;
    8688
    8789        ApplicationExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >() );
     
    9294        void set_function( Expression * newValue ) { function = newValue; }
    9395        std::list<Expression *>& get_args() { return args; }
    94         InferredParams & get_inferParams() { return inferParams; }
    9596
    9697        virtual ApplicationExpr * clone() const { return new ApplicationExpr( * this ); }
Note: See TracChangeset for help on using the changeset viewer.