Skip to main content

luaur_analysis/methods/
overload_resolver_maybe_emplace_error_overload_resolver.rs

1//! Source: `Analysis/src/OverloadResolver.cpp:645-658` (hand-ported)
2use crate::records::overload_resolver::OverloadResolver;
3use crate::records::subtyping_reasoning::SubtypingReasoning;
4use crate::type_aliases::error_vec::ErrorVec;
5use crate::type_aliases::module_name_type_fwd::ModuleName;
6use crate::type_aliases::type_id::TypeId;
7use luaur_ast::records::location::Location;
8
9impl OverloadResolver {
10    pub fn maybe_emplace_error_error_vec_location_subtyping_reasoning_optional_type_id_optional_type_id(
11        &self,
12        errors: *mut ErrorVec,
13        arg_location: Location,
14        reason: *const SubtypingReasoning,
15        wanted_type: Option<TypeId>,
16        given_type: Option<TypeId>,
17    ) {
18        // This is a temporary compatibility shim for the old API. It's ok to pass
19        // an empty ModuleName here because the caller of
20        // OverloadResolver::resolve() will overwrite the moduleName of any errors
21        // that are reported.
22        let module_name: ModuleName = ModuleName::new();
23        self.maybe_emplace_error_error_vec_location_module_name_subtyping_reasoning_optional_type_id_optional_type_id(
24            errors,
25            arg_location,
26            &module_name,
27            reason,
28            wanted_type,
29            given_type,
30        )
31    }
32}