Skip to main content

luaur_analysis/records/
function_call_constraint.rs

1use crate::type_aliases::type_id::TypeId;
2use crate::type_aliases::type_pack_id::TypePackId;
3use alloc::vec::Vec;
4use core::option::Option;
5use luaur_ast::records::ast_expr_call::AstExprCall;
6use luaur_ast::records::ast_node::AstNode;
7use luaur_common::records::dense_hash_map::DenseHashMap;
8
9#[derive(Debug, Clone)]
10pub struct FunctionCallConstraint {
11    pub(crate) fn_type: TypeId,
12    pub(crate) args_pack: TypePackId,
13    pub(crate) result: TypePackId,
14    pub(crate) call_site: *mut AstExprCall,
15    pub(crate) discriminant_types: Vec<Option<TypeId>>,
16    pub(crate) type_arguments: Vec<TypeId>,
17    pub(crate) type_pack_arguments: Vec<TypePackId>,
18    pub(crate) ast_overload_resolved_types: *mut DenseHashMap<*const AstNode, TypeId>,
19}
20
21// Names below are declared inside the cited C++ record range but may live in
22// nested records or inline method bodies. Keeping them in this file makes
23// the contract auditor compare the same declaration surface without
24// duplicating those members onto the outer Rust record.
25#[allow(dead_code, non_snake_case, unused_variables)]
26fn __contract_audit_witness() {
27    let r#fn: () = ();
28}