// exact-check const EXPECTED = [ { 'query': 'mytrait, mytrait2 -> T', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyTrait', 'name': 'fold' }, ], }, { 'query': 'mytrait, mytrait2 -> T', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyTrait', 'name': 'fold' }, ], }, { 'query': 'cloned, mytrait2 -> T', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::Cloned', 'name': 'fold' }, ], }, { 'query': 'cloned>, mytrait2 -> T', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::Cloned', 'name': 'fold' }, ], }, { 'query': 'mytrait, mytrait2 -> T', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyTrait', 'name': 'fold' }, ], }, { 'query': 'mytrait, mytrait2 -> T', 'correction': null, 'others': [], }, { 'query': 'mytrait, mytrait2 -> T', 'correction': null, 'others': [], }, { 'query': 'mytrait -> Option', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyTrait', 'name': 'next' }, ], }, { 'query': 'mytrait -> Option', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyTrait', 'name': 'next' }, ], }, { 'query': 'cloned> -> Option', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::Cloned', 'name': 'next' }, ], }, { 'query': 'cloned> -> Option', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::Cloned', 'name': 'next' }, ], }, // The first two define the base case. { 'query': 'myintofuture> -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future' }, { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, { 'query': 'myintofuture>, myintofuture> -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, // Unboxings of the one-argument case. { 'query': 'myfuture -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future' }, { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, { 'query': 'myintofuture> -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future' }, { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, // Unboxings of the one-argument case. { 'query': 'myintofuture -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future' }, { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, // Unboxings of the two-argument case. { 'query': 'myintofuture, myintofuture -> t', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, { 'query': 'myintofuture, myintofuture -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, { 'query': 'myintofuture, myintofuture -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, { 'query': 'myfuture, myfuture -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, // If you unbox one of the myfutures, you don't need to unbox all of them. { 'query': 'myintofuture, myintofuture> -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, { 'query': 'myintofuture>, myintofuture -> myfuture', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, { 'query': 'myintofuture>, myintofuture> -> t', 'correction': null, 'others': [ { 'path': 'assoc_type_backtrack::MyIntoFuture', 'name': 'into_future_2' }, ], }, // different generics must match up { 'query': 'myintofuture>, myintofuture> -> myfuture', 'correction': null, 'others': [], }, { 'query': 'myintofuture -> myfuture', 'correction': null, 'others': [], }, ];