1
Fork 0

for purely return-type based searches, deprioritize clone-like functions

A clone-like function in a function that takes as an argument the type
that it returns.

However, functions that return a type variable are not counted as
clone-line. Because we're not unifying the whole function at once,
a function like `U -> T` would otherwise be counted as "clone-like"
because the generics will just unify with anything when done seperatly.

Co-authored-by: Michael Howell <michael@notriddle.com>
This commit is contained in:
binarycat 2025-01-09 14:16:05 -06:00
parent 251206c27b
commit ebd5ce1828
2 changed files with 76 additions and 0 deletions

View file

@ -0,0 +1,30 @@
// test that `clone`-like functions are sorted lower when
// a search is based soley on return type
const FILTER_CRATE = "core";
const EXPECTED = [
{
'query': '-> AllocError',
'others': [
{ 'path': 'core::alloc::Allocator', 'name': 'allocate' },
{ 'path': 'core::alloc::AllocError', 'name': 'clone' },
],
},
{
'query': 'AllocError',
'returned': [
{ 'path': 'core::alloc::Allocator', 'name': 'allocate' },
{ 'path': 'core::alloc::AllocError', 'name': 'clone' },
],
},
{
'query': '-> &str',
'others': [
// type_name_of_val should not be consider clone-like
{ 'path': 'core::any', 'name': 'type_name_of_val' },
// this returns `Option<&str>`, and thus should be sorted lower
{ 'path': 'core::str::Split', 'name': 'next' },
],
},
]