pub struct CompletionCache {
pub names: Vec<CompletionItem>,
pub name_to_type: HashMap<String, String>,
pub node_members: HashMap<u64, Vec<CompletionItem>>,
pub type_to_node: HashMap<String, u64>,
pub name_to_node_id: HashMap<String, u64>,
pub method_identifiers: HashMap<u64, Vec<CompletionItem>>,
pub function_return_types: HashMap<(u64, String), String>,
pub using_for: HashMap<String, Vec<CompletionItem>>,
pub using_for_wildcard: Vec<CompletionItem>,
pub general_completions: Vec<CompletionItem>,
}Expand description
Completion cache built from the AST.
Fields§
§names: Vec<CompletionItem>All named identifiers as completion items (flat, unscoped).
name_to_type: HashMap<String, String>name → typeIdentifier (for dot-completion: look up what type a variable is).
node_members: HashMap<u64, Vec<CompletionItem>>node id → Vec
type_to_node: HashMap<String, u64>typeIdentifier → node id (resolve a type string to its definition).
name_to_node_id: HashMap<String, u64>contract/library/interface name → node id (for direct name dot-completion like FullMath.).
method_identifiers: HashMap<u64, Vec<CompletionItem>>node id → Vec
function_return_types: HashMap<(u64, String), String>(contract_node_id, fn_name) → return typeIdentifier.
For resolving foo(). — look up what foo returns.
using_for: HashMap<String, Vec<CompletionItem>>typeIdentifier → Vecusing X for Y.
using_for_wildcard: Vec<CompletionItem>Wildcard using-for: using X for * — available on all types.
general_completions: Vec<CompletionItem>Pre-built general completions (AST names + keywords + globals + units). Built once, returned by reference on every non-dot completion request.
Auto Trait Implementations§
impl Freeze for CompletionCache
impl RefUnwindSafe for CompletionCache
impl Send for CompletionCache
impl Sync for CompletionCache
impl Unpin for CompletionCache
impl UnwindSafe for CompletionCache
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more