Goose  Diff

Differences From Artifact [116b3bffec]:

  • File bs/sema/hole.cpp — part of check-in [aee388d9c0] at 2019-08-09 19:54:22 on branch trunk — Cleanup: got rid of the half-assed location and poisoning systems in ir::Terms. (user: achavasse size: 990)

To Artifact [82c217400b]:

  • File bs/sema/hole.cpp — part of check-in [75bcd81044] at 2019-08-15 01:27:35 on branch trunk —
    • Implemented the DropValue() extension point, called when a previously pushed value is dropped without being used.
    • ir, sema: the complexity of an ir expression is now directly counted by ir::Vector, so that we don't have to deal with it in every unification rule (and it was missing from most of them, which caused incorrect overload resolutions in some cases).
    (user: achavasse size: 1010)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "sema.h"

namespace empathy::sema
{
    Term MkHole( const Hole& h )
    {
        return visit( [&]( auto&& x )
        {
            return TVEC( TSID( hole ), TERM( x ) );
        }, h );
    }

    const Term& HolePattern()
    {
        static auto hp = TVEC( TSID( hole ), ANYTERM( _ ) );
        return hp;








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "sema.h"

namespace empathy::sema
{
    Term MkHole( const Hole& h )
    {
        return visit( [&]( auto&& x )
        {
            return SetComplexity( TVEC( TSID( hole ), TERM( x ) ), 0 );
        }, h );
    }

    const Term& HolePattern()
    {
        static auto hp = TVEC( TSID( hole ), ANYTERM( _ ) );
        return hp;