// exact-check const EXPECTED = [ // not a HOF query { 'query': 'u32 -> !', 'others': [], }, // ML-style higher-order function notation { 'query': 'bool, (u32 -> !) -> ()', 'others': [ {"path": "hof", "name": "fn_ptr"}, ], }, { 'query': 'u8, (u32 -> !) -> ()', 'others': [ {"path": "hof", "name": "fn_once"}, ], }, { 'query': 'i8, (u32 -> !) -> ()', 'others': [ {"path": "hof", "name": "fn_mut"}, ], }, { 'query': 'char, (u32 -> !) -> ()', 'others': [ {"path": "hof", "name": "fn_"}, ], }, { 'query': '(first -> !) -> ()', 'others': [ {"path": "hof", "name": "fn_ptr"}, ], }, { 'query': '(second -> !) -> ()', 'others': [ {"path": "hof", "name": "fn_once"}, ], }, { 'query': '(third -> !) -> ()', 'others': [ {"path": "hof", "name": "fn_mut"}, ], }, { 'query': '(u32 -> !) -> ()', 'others': [ {"path": "hof", "name": "fn_"}, {"path": "hof", "name": "fn_ptr"}, {"path": "hof", "name": "fn_mut"}, {"path": "hof", "name": "fn_once"}, ], }, { 'query': '(str, str -> i8) -> ()', 'others': [ {"path": "hof", "name": "multiple"}, ], }, { 'query': '(str ->) -> ()', 'others': [ {"path": "hof", "name": "multiple"}, ], }, { 'query': '(-> i8) -> ()', 'others': [ {"path": "hof", "name": "multiple"}, ], }, { 'query': '(str -> str) -> ()', // params and return are not the same 'others': [], }, { 'query': '(i8 ->) -> ()', // params and return are not the same 'others': [], }, { 'query': '(-> str) -> ()', // params and return are not the same 'others': [], }, // Rust-style higher-order function notation { 'query': 'bool, fn(u32) -> ! -> ()', 'others': [ {"path": "hof", "name": "fn_ptr"}, ], }, { 'query': 'u8, fnonce(u32) -> ! -> ()', 'others': [ {"path": "hof", "name": "fn_once"}, ], }, { 'query': 'u8, fn(u32) -> ! -> ()', // fnonce != fn 'others': [], }, { 'query': 'i8, fnmut(u32) -> ! -> ()', 'others': [ {"path": "hof", "name": "fn_mut"}, ], }, { 'query': 'i8, fn(u32) -> ! -> ()', // fnmut != fn 'others': [], }, { 'query': 'char, fn(u32) -> ! -> ()', 'others': [ {"path": "hof", "name": "fn_"}, ], }, { 'query': 'char, fnmut(u32) -> ! -> ()', // fn != fnmut 'others': [], }, { 'query': 'fn(first) -> ! -> ()', 'others': [ {"path": "hof", "name": "fn_ptr"}, ], }, { 'query': 'fnonce(second) -> ! -> ()', 'others': [ {"path": "hof", "name": "fn_once"}, ], }, { 'query': 'fnmut(third) -> ! -> ()', 'others': [ {"path": "hof", "name": "fn_mut"}, ], }, { 'query': 'fn(u32) -> ! -> ()', 'others': [ // fn matches primitive:fn and trait:Fn {"path": "hof", "name": "fn_"}, {"path": "hof", "name": "fn_ptr"}, ], }, { 'query': 'trait:fn(u32) -> ! -> ()', 'others': [ // fn matches primitive:fn and trait:Fn {"path": "hof", "name": "fn_"}, ], }, { 'query': 'primitive:fn(u32) -> ! -> ()', 'others': [ // fn matches primitive:fn and trait:Fn {"path": "hof", "name": "fn_ptr"}, ], }, ];