Goose  Diff

Differences From Artifact [d4d8af4146]:

  • File bs/builtins/types/localvar/unify.cpp — part of check-in [4d5cc07d86] at 2020-06-13 13:34:50 on branch trunk — Implemented new rules for implicit dereferencing and implicit referencing. (user: achavasse size: 1408)

To Artifact [1de0042dbe]:

  • File bs/builtins/types/localvar/unify.cpp — part of check-in [947b9d7cfc] at 2020-06-13 22:59:24 on branch trunk —
    • Implemented Initialize overloads for tuples.
    • Lots of cleanup.
    (user: achavasse size: 1414)

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
            ParamPat( localVarPattern ),

            ValueToIRExpr( ValuePattern(
                ANYTERM( _ ),
                localVarPattern,
                ANYTERM( _ ) ) ),

            []( const Term& lhs, const Term& rhs, UnificationContext& uc ) -> UniGen
            {
                auto lvarType = *FromValue< LocalVarType >( *ValueFromIRExpr( ValuePatternFromIRExpr( lhs )->type() ) );

                auto rhsVal = *ValuePatternFromIRExpr( rhs );
                auto rvarType = *FromValue< LocalVarType >( *ValueFromIRExpr( rhsVal.type() ) );

                for( auto&& [s, uc] : Unify( lvarType.type(), rvarType.type(), uc ) )







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
            ParamPat( localVarPattern ),

            ValueToIRExpr( ValuePattern(
                ANYTERM( _ ),
                localVarPattern,
                ANYTERM( _ ) ) ),

            []( const Term& lhs, const Term& rhs, const UnificationContext& uc ) -> UniGen
            {
                auto lvarType = *FromValue< LocalVarType >( *ValueFromIRExpr( ValuePatternFromIRExpr( lhs )->type() ) );

                auto rhsVal = *ValuePatternFromIRExpr( rhs );
                auto rvarType = *FromValue< LocalVarType >( *ValueFromIRExpr( rhsVal.type() ) );

                for( auto&& [s, uc] : Unify( lvarType.type(), rvarType.type(), uc ) )