Skip to main content

luaur_analysis/methods/
identifier_hash_operator_call.rs

1use crate::records::identifier::Identifier;
2use crate::records::identifier_hash::IdentifierHash;
3use core::hash::{Hash, Hasher};
4
5impl IdentifierHash {
6    pub fn identifier_hash_operator_call(ident: &Identifier) -> usize {
7        let name = ident.name();
8        let ctx = ident.ctx() as *const ();
9
10        let mut hasher = std::collections::hash_map::DefaultHasher::new();
11        name.hash(&mut hasher);
12        let hash_name = hasher.finish() as usize;
13
14        hasher = std::collections::hash_map::DefaultHasher::new();
15        (ctx as usize).hash(&mut hasher);
16        let hash_ctx = hasher.finish() as usize;
17
18        hash_name ^ hash_ctx
19    }
20}