Differences From Artifact [d982fea706]:
- File bs/eir/term.h — part of check-in [176ee856a6] at 2021-02-12 23:57:22 on branch trunk — Added a "flavor" term to holes to be able to have specific rules for TVar holes and for forwarding holes. Refactored forwarding holes to use this, instead of being represented as compound expressions (which would probably have broken down horribly in some complex type checking scenarios) (user: achavasse size: 2918)
To Artifact [d8bba26684]:
- File
bs/eir/term.h
— part of check-in
[9b058524b4]
at
2021-02-18 19:35:07
on branch trunk
— Implemented reference initialization, so reference local variables can now be declared, and added a typechecking rule preventing template variables to bind to reference types.
Then fixed a MILLION horrible problems caused by all that. Now almost everything works again. *sobs* (user: achavasse size: 2915)
| ︙ | ︙ | |||
76 77 78 79 80 81 82 |
extern bool operator!=( const Term& lhs, const Term& rhs );
struct STerm
{
Term content;
};
| | | 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
extern bool operator!=( const Term& lhs, const Term& rhs );
struct STerm
{
Term content;
};
inline Hole::Hole( const StringId& name ) : Hole( name, Term( "anyflavor"_sid ) ) {}
inline const auto& Hole::flavor() const { return m_flavor->content; }
extern ostream& operator<<( ostream& out, const Term& t );
// A term associated with a location id.
// Used to represent tokens and tokens/values coming out of the resolver.
using TermLoc = pair< eir::Term, uint32_t >;
|
| ︙ | ︙ |