diff --git a/lib/std/sort/sort.c3 b/lib/std/sort/sort.c3 index 5748f7c1c..b35e1163b 100644 --- a/lib/std/sort/sort.c3 +++ b/lib/std/sort/sort.c3 @@ -33,4 +33,15 @@ macro bool @is_cmp_fn(#cmp, #list) $case $defined(#cmp(&&(#list[0]), &&(#list[0]))): return true; $default: return false; $endswitch +} + +macro bool @is_cmp_key_fn(#key_fn, #list) +{ + $switch + $case $typeof(#key_fn).kindof != FUNC: return false; + $case $typeof(#key_fn).returns.kindof != UNSIGNED_INT: return false; + $case $defined(#key_fn(#list[0])): return true; + $case $defined(#key_fn(&&(#list[0]))): return true; + $default: return false; + $endswitch } \ No newline at end of file