Skip to main content

DocumentAnalysis

Struct DocumentAnalysis 

Source
pub struct DocumentAnalysis {
Show 14 fields pub source: String, pub line_index: LineIndex, pub root: Option<SyntaxNode>, pub include_tree: Option<IncludeTree>, pub main_path: Option<PathBuf>, pub diagnostics: Vec<SemanticDiagnostic>, pub type_map: HashMap<(u32, u32), Type>, pub scope_store: ScopeStore, pub scope_extents: Vec<(ScopeId, (u32, u32))>, pub definition_map: HashMap<(String, RootSymbolKind), (PathBuf, u32, u32)>, pub doc_map: HashMap<(u32, u32), DocComment>, pub include_doc_maps: Option<HashMap<PathBuf, HashMap<(u32, u32), DocComment>>>, pub class_super: HashMap<String, String>, pub sig_definition_locations: Option<HashMap<String, (PathBuf, u32)>>,
}
Expand description

Result of document-level analysis: source, AST, diagnostics, scope, types, definition map, doc maps, class hierarchy.

Fields§

§source: String

Main document source (what the client has).

§line_index: LineIndex

Line index for the main document.

§root: Option<SyntaxNode>

Program root (main file); None if parse failed.

§include_tree: Option<IncludeTree>

When Some, the document has includes; tree holds main + included files.

§main_path: Option<PathBuf>

Path of the main document (when file URI), for go-to-def on include.

§diagnostics: Vec<SemanticDiagnostic>

Semantic and parse diagnostics.

§type_map: HashMap<(u32, u32), Type>

Map from expression span (start, end) to inferred type.

§scope_store: ScopeStore§scope_extents: Vec<(ScopeId, (u32, u32))>

Scope extent (ScopeId, (start_byte, end_byte)) for scope_at_offset.

§definition_map: HashMap<(String, RootSymbolKind), (PathBuf, u32, u32)>

(name, kind) -> (path, start_byte, end_byte) for root-level symbols.

§doc_map: HashMap<(u32, u32), DocComment>

Map from declaration (start_byte, end_byte) to parsed Doxygen-style documentation.

§include_doc_maps: Option<HashMap<PathBuf, HashMap<(u32, u32), DocComment>>>

When Some (with include_tree), doc_map per included file path.

§class_super: HashMap<String, String>

Class name -> superclass name (for visibility: subclass can see protected).

§sig_definition_locations: Option<HashMap<String, (PathBuf, u32)>>

When Some, function/global name -> (path, 0-based line) from .sig files for hover/definition links.

Implementations§

Source§

impl DocumentAnalysis

Source

pub fn new_with_options( options: &DocumentAnalysisOptions<'_>, ) -> DocumentAnalysis

Run parsing and analysis from options.

When main_path is set and build_include_tree succeeds, uses the include tree and analyzes with included files and signature_roots. Otherwise parses a single file (or uses existing_root when provided) and optionally uses signature_roots.

Source

pub fn new( source: &str, main_path: Option<&Path>, signature_roots: &[SyntaxNode], existing_root: Option<SyntaxNode>, sig_definition_locations: Option<HashMap<String, (PathBuf, u32)>>, ) -> DocumentAnalysis

Run parsing and analysis for the given source.

Convenience wrapper around Self::new_with_options. When main_path is Some and build_include_tree succeeds, uses the include tree; otherwise parses a single file (or uses existing_root when provided, e.g. from incremental reparse).

Source

pub fn symbol_at_offset(&self, byte_offset: u32) -> Option<ResolvedSymbol>

Resolve the symbol at the given byte offset (e.g. variable, function, class, global). Returns None if there is no root, no token at offset, or the identifier does not resolve.

Source

pub fn type_at_offset(&self, byte_offset: u32) -> Option<Type>

Type at the given byte offset. Looks up the node at offset in the type map, then walks ancestors until a type is found.

Source

pub fn definition_span_for( &self, name: &str, kind: RootSymbolKind, ) -> Option<(PathBuf, u32, u32)>

Definition span for a root-level symbol: (path, start_byte, end_byte). Returns None if the name/kind is not in the definition map.

Source

pub fn minimal(source: String) -> DocumentAnalysis

Build minimal document state with only source and line index (no parse/analysis). Used by the LSP to update the document buffer immediately on did_change so that subsequent changes are applied to the correct base; analysis overwrites this when it completes.

Source

pub fn minimal_with_root(source: String, root: SyntaxNode) -> DocumentAnalysis

Like Self::minimal but keeps the given root so the next incremental reparse can reuse it. Use when reparse succeeded and analysis will run async; keeps the tree available for the next edit.

Source

pub fn from_parse_only(source: &str) -> DocumentAnalysis

Build document state from source using parse only (no semantic analysis). Use when full analysis panics so the LSP can still provide syntax highlighting and basic features.

Trait Implementations§

Source§

impl Debug for DocumentAnalysis

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.