Goose  Diff

Differences From Artifact [170b4be177]:

  • File bs/sema/unify.h — 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: 737)

To Artifact [88e3bccc09]:

  • File bs/sema/unify.h — part of check-in [af650a9e95] at 2019-09-22 14:37:55 on branch trunk — Project renaming. (user: achavasse size: 731)

1
2
3
4
5
6
7
8
9
10
11
#ifndef EMPATHY_SEMA_UNIFY_H
#define EMPATHY_SEMA_UNIFY_H

namespace empathy::sema
{
    using UniGen = Generator< pair< Term, UnificationContext > >;

    // Perform one unification pass, or two if holes need to be substituted.
    UniGen FullUnify( const Term& lhs, const Term& rhs, const Context& context );

    // If substitution is needed, perform substitution on lhs and rhs and then
|
|

|







1
2
3
4
5
6
7
8
9
10
11
#ifndef GOOSE_SEMA_UNIFY_H
#define GOOSE_SEMA_UNIFY_H

namespace goose::sema
{
    using UniGen = Generator< pair< Term, UnificationContext > >;

    // Perform one unification pass, or two if holes need to be substituted.
    UniGen FullUnify( const Term& lhs, const Term& rhs, const Context& context );

    // If substitution is needed, perform substitution on lhs and rhs and then