// exact-check const EXPECTED = [ { query: '-> trait:Some', others: [ { path: 'foo', name: 'alpha' }, { path: 'foo', name: 'alef' }, ], }, { query: '-> generic:T', others: [ { path: 'foo', name: 'beta' }, { path: 'foo', name: 'bet' }, { path: 'foo', name: 'alef' }, ], }, { query: 'A -> B', others: [ { path: 'foo', name: 'bet' }, ], }, { query: 'A -> A', others: [ { path: 'foo', name: 'beta' }, ], }, { query: 'A, A', others: [ { path: 'foo', name: 'alternate' }, ], }, { query: 'A, B', others: [ { path: 'foo', name: 'other' }, ], }, { query: 'Other, Other', others: [ { path: 'foo', name: 'alternate' }, { path: 'foo', name: 'other' }, ], }, { query: 'generic:T', in_args: [ { path: 'foo', name: 'beta' }, { path: 'foo', name: 'bet' }, { path: 'foo', name: 'alternate' }, { path: 'foo', name: 'other' }, ], }, { query: 'generic:Other', in_args: [ { path: 'foo', name: 'beta' }, { path: 'foo', name: 'bet' }, { path: 'foo', name: 'alternate' }, { path: 'foo', name: 'other' }, ], }, { query: 'trait:Other', in_args: [ { path: 'foo', name: 'alternate' }, { path: 'foo', name: 'other' }, ], }, { query: 'Other', in_args: [ // because function is called "other", it's sorted first // even though it has higher type distance { path: 'foo', name: 'other' }, { path: 'foo', name: 'alternate' }, ], }, { query: 'trait:T', in_args: [], }, ];