#[non_exhaustive]pub struct CompileEnvironment {
pub directives: Vec<CompileDirective>,
pub pragma_effects: Vec<PragmaEffect>,
pub pragma_state_facts: Vec<PragmaStateFact>,
pub inc_roots: Vec<IncRootFact>,
pub module_requests: Vec<ModuleRequest>,
pub phase_blocks: Vec<CompilePhaseBlock>,
pub dynamic_boundaries: Vec<CompileEnvironmentBoundary>,
}Expand description
HIR-local compile environment for compiler-substrate proof.
This model records compile-time directives, pragma state changes, include roots, module requests, phase blocks, and dynamic boundaries without changing LSP provider behavior.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.directives: Vec<CompileDirective>use, no, and require directives in stable source order.
pragma_effects: Vec<PragmaEffect>Pragma or feature effects in stable source order.
pragma_state_facts: Vec<PragmaStateFact>Effective strict/warnings/feature state facts in source order.
inc_roots: Vec<IncRootFact>Include-root effects such as use lib and no lib.
module_requests: Vec<ModuleRequest>Static and dynamic module requests observed in the file.
phase_blocks: Vec<CompilePhaseBlock>Compile-time phase blocks observed in source order.
dynamic_boundaries: Vec<CompileEnvironmentBoundary>Unsupported or dynamic compile-environment boundaries.
Implementations§
Source§impl CompileEnvironment
impl CompileEnvironment
Sourcepub fn pragma_state_facts(&self) -> &[PragmaStateFact]
pub fn pragma_state_facts(&self) -> &[PragmaStateFact]
Effective pragma state facts in source order.
Sourcepub fn pragma_state_at(&self, offset: usize) -> Option<&PragmaStateFact>
pub fn pragma_state_at(&self, offset: usize) -> Option<&PragmaStateFact>
Return the latest effective pragma state fact at or before offset.
Sourcepub fn import_specs(&self, file_id: FileId) -> Vec<ImportSpec>
pub fn import_specs(&self, file_id: FileId) -> Vec<ImportSpec>
Project HIR compile directives into canonical import facts.
This is a compiler-substrate projection only. It does not inspect the filesystem, execute Perl, or change workspace/LSP provider behavior.
Sourcepub fn module_resolution_candidates(
&self,
supplied_roots: &[ModuleResolutionRoot],
) -> Vec<ModuleResolutionCandidate>
pub fn module_resolution_candidates( &self, supplied_roots: &[ModuleResolutionRoot], ) -> Vec<ModuleResolutionCandidate>
Build module-resolution candidate facts from static module requests.
The HIR layer records lexical include-root effects and module requests,
but it does not read process environment, inspect the filesystem, or
depend on the downstream perl-module resolver. Callers provide
configured, PERL5LIB, and system roots explicitly; this method combines
them with source-order lexical use lib roots active at each request.
Sourcepub fn resolved_module_resolution_candidates(
&self,
supplied_roots: &[ModuleResolutionRoot],
path_exists: impl FnMut(&str) -> bool,
) -> Vec<ModuleResolutionCandidate>
pub fn resolved_module_resolution_candidates( &self, supplied_roots: &[ModuleResolutionRoot], path_exists: impl FnMut(&str) -> bool, ) -> Vec<ModuleResolutionCandidate>
Resolve static module candidate facts using a caller-supplied path predicate.
This preserves the HIR layer’s explicit boundary: the caller supplies roots and the existence check, so parser-core still does not read ambient process state or spawn Perl.
Trait Implementations§
Source§impl Clone for CompileEnvironment
impl Clone for CompileEnvironment
Source§fn clone(&self) -> CompileEnvironment
fn clone(&self) -> CompileEnvironment
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CompileEnvironment
impl Debug for CompileEnvironment
Source§impl Default for CompileEnvironment
impl Default for CompileEnvironment
Source§fn default() -> CompileEnvironment
fn default() -> CompileEnvironment
Source§impl PartialEq for CompileEnvironment
impl PartialEq for CompileEnvironment
Source§fn eq(&self, other: &CompileEnvironment) -> bool
fn eq(&self, other: &CompileEnvironment) -> bool
self and other values to be equal, and is used by ==.