Skip to main content

code_moniker_core/lang/sdk/
mod.rs

1//! Shared extraction SDK for the target multi-pass language pipeline.
2//!
3//! This module defines the stable IR exchanged by language extraction phases:
4//! discover definitions and imports, elaborate unresolved references, resolve
5//! them locally, then emit the public `CodeGraph`.
6
7mod emit;
8mod imports;
9mod model;
10mod resolve;
11mod scope;
12mod types;
13
14pub use emit::{EmitError, GraphEmitter};
15pub use imports::{
16	ImportLeaf, ImportLeafKind, ImportTree, flatten_import_tree, import_leaf_binding_name,
17	importable_parent,
18};
19pub(crate) use model::ResolvedRefDeduper;
20pub use model::{
21	DefIndex, DefNameKey, DiscoveredDef, DiscoveredFile, ImportKind, ImportTable, ImportTarget,
22	RefHints, ResolvedRef, TargetExpr, UnresolvedRef,
23};
24pub use resolve::{LangResolverStrategy, LocalResolver, Resolution};
25pub use scope::{Namespace, Rib, Scope, ScopeId, ScopeTree};
26pub use types::{TypeEnv, TypeExpr};
27
28use crate::core::moniker::MonikerBuilder;
29
30/// Starts a target owned by a language runtime or standard SDK.
31/// `sdk:<lang>` is the root; callers append every lexical namespace segment,
32/// including Java's repeated `path:java`.
33pub(crate) fn sdk_target_builder(project: &[u8], language: &[u8]) -> MonikerBuilder {
34	let mut builder = MonikerBuilder::new();
35	builder.project(project);
36	builder.segment(crate::lang::kinds::SDK, language);
37	builder
38}