Goose  Diff

Differences From Artifact [6d6be306ba]:

  • File bs/builtins/types/overloadset/overloadset.cpp — part of check-in [eba916730b] at 2019-03-16 20:46:59 on branch trunk — Overloading: some preliminary function parsing refactoring. (user: achavasse size: 2320)

To Artifact [8a051d29bf]:

  • File bs/builtins/types/overloadset/overloadset.cpp — part of check-in [224370818a] at 2019-03-16 21:27:19 on branch trunk — Overloading: the first time a function or function template declaration is encountered, it is stored in a new overloadset. (user: achavasse size: 2321)

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    auto argDecomp = Decompose( argsPat,
        Val< pvec >()
    );

    if( !argDecomp )
        co_return;

    for( auto&& [uniParamsVec,rtTrie,c] : m_trie->unify( *argDecomp->get(), uc ) )
    {
        auto uniParams = TERM( make_shared< Vector >( uniParamsVec ) );
        for( auto&& [rt,ovl] : Enumerate( rtTrie ) )
        {
            for( auto&& [uniRt,uc] : Unify( rt, rtPat, uc ) )
            {
                auto uniCall = TERM( Vector::Make( uniParams, uniRt ) );







|







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    auto argDecomp = Decompose( argsPat,
        Val< pvec >()
    );

    if( !argDecomp )
        co_return;

    for( auto&& [uniParamsVec,rtTrie,uc] : m_trie->unify( *argDecomp->get(), uc ) )
    {
        auto uniParams = TERM( make_shared< Vector >( uniParamsVec ) );
        for( auto&& [rt,ovl] : Enumerate( rtTrie ) )
        {
            for( auto&& [uniRt,uc] : Unify( rt, rtPat, uc ) )
            {
                auto uniCall = TERM( Vector::Make( uniParams, uniRt ) );