16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
+
+
-
+
-
+
-
+
|
auto sigDecomp = Decompose( *signature,
Val< pvec >()
);
assert( sigDecomp );
auto pOverload = make_shared< Overload >( Overload{ pInvRule, callee } );
bool success = false;
m_trie = m_trie->merge( *sigDecomp->get(), [&]( auto&& previous ) -> Overload
m_trie = m_trie->merge( *sigDecomp->get(), [&]( auto&& previous ) -> ptr< Overload >
{
if( previous.callee )
if( previous )
return move( previous );
success = true;
return { pInvRule, callee };
return pOverload;
} );
return success;
}
OverloadSet::TCGen OverloadSet::typeCheck( const Term& callPat, const TypeCheckingContext& tcc ) const
{
|