microcad_lang/resolve/mod.rs
1// Copyright © 2025 The µcad authors <info@ucad.xyz>
2// SPDX-License-Identifier: AGPL-3.0-or-later
3
4//! Single symbol resolving
5//!
6//! After parsing a source file (see [`mod@crate::parse`]) it must be resolved to get a symbol out of it:
7//!
8//! ```no_run
9//! use microcad_lang::{syntax::*, parse::*, resolve::*, diag::*};
10//! let source_file = SourceFile::load("my.µcad").expect("parsing success");
11//! let mut context = ResolveContext::create(
12//! source_file,
13//! &["./lib"],
14//! None,
15//! DiagHandler::default(),
16//! ).unwrap();
17//! ```
18//!
19//! To "run" the source file (and get the expected output) it must now be evaluated (see [`crate::eval`]) .
20
21mod externals;
22mod grant;
23mod lookup;
24mod names;
25mod resolve_context;
26mod resolve_error;
27mod sources;
28mod symbol;
29mod symbol_table;
30mod symbolize;
31
32use crate::{diag::*, syntax::*};
33pub use externals::*;
34pub use lookup::*;
35pub use resolve_context::*;
36pub use resolve_error::*;
37pub use sources::*;
38pub use symbol::*;
39pub use symbol_table::*;
40
41use grant::*;
42use names::*;
43
44/// Trait for items which can be fully qualified.
45pub trait FullyQualify {
46 /// Get a fully (up to root of symbol map) qualified name.
47 fn full_name(&self) -> QualifiedName;
48}