Changes in src/SynTree/Expression.h [2f86ddf:0b00df0]
- File:
-
- 1 edited
-
src/SynTree/Expression.h (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Expression.h
r2f86ddf r0b00df0 21 21 #include <memory> // for allocator, unique_ptr 22 22 #include <string> // for string 23 #include <vector> // for vector 23 24 24 25 #include "BaseSyntaxNode.h" // for BaseSyntaxNode … … 38 39 /// but subject to decay-to-pointer and type parameter renaming 39 40 struct ParamEntry { 40 ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ) , inferParams( new InferredParams ){}41 ParamEntry( UniqueId decl, Type * actualType, Type * formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr ) , inferParams( new InferredParams ){}41 ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 )/*, inferParams( new InferredParams )*/ {} 42 ParamEntry( UniqueId decl, Type * actualType, Type * formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr )/*, inferParams( new InferredParams )*/ {} 42 43 ParamEntry( const ParamEntry & other ); 43 44 ParamEntry( ParamEntry && other ); … … 50 51 Type * formalType; 51 52 Expression * expr; 52 std::unique_ptr< InferredParams > inferParams;53 // std::unique_ptr< InferredParams > inferParams; 53 54 }; 54 55 … … 59 60 TypeSubstitution * env; 60 61 bool extension = false; 61 InferredParams inferParams; 62 InferredParams inferParams; ///< Post-resolution inferred parameter slots 63 std::vector<UniqueId> resnSlots; ///< Pre-resolution inferred parameter slots 64 65 // xxx - should turn inferParams+resnSlots into a union to save some memory 62 66 63 67 Expression(); … … 73 77 bool get_extension() const { return extension; } 74 78 Expression * set_extension( bool exten ) { extension = exten; return this; } 75 76 InferredParams & get_inferParams() { return inferParams; }77 79 78 80 // move other's inferParams to this … … 591 593 class ImplicitCopyCtorExpr : public Expression { 592 594 public: 593 ApplicationExpr * callExpr = nullptr; 595 ApplicationExpr * callExpr; 596 std::list< ObjectDecl * > tempDecls; 597 std::list< ObjectDecl * > returnDecls; 598 std::list< Expression * > dtors; 594 599 595 600 ImplicitCopyCtorExpr( ApplicationExpr * callExpr ); 596 601 ImplicitCopyCtorExpr( const ImplicitCopyCtorExpr & other ); 597 602 virtual ~ImplicitCopyCtorExpr(); 603 604 ApplicationExpr * get_callExpr() const { return callExpr; } 605 void set_callExpr( ApplicationExpr * newValue ) { callExpr = newValue; } 606 607 std::list< ObjectDecl * > & get_tempDecls() { return tempDecls; } 608 std::list< ObjectDecl * > & get_returnDecls() { return returnDecls; } 609 std::list< Expression * > & get_dtors() { return dtors; } 598 610 599 611 virtual ImplicitCopyCtorExpr * clone() const { return new ImplicitCopyCtorExpr( * this ); }
Note:
See TracChangeset
for help on using the changeset viewer.