project
project::Deps Resolves a workspace's declared dependencies into modules the checker binds as externals (§8.3): reads `pds.lock` + `pds_modules/`, materialises each direct dependency's `.pds` modules under its dependency-name prefix, and resolves a local path dependency's directory.
Parent
- for project::Project
Scenarios
Dependencies load as prefixed externals for cross-workspace resolution.
- given a workspace declaring a git or local dependency, vendored under pds_modules/
- when its dependency modules are read
- then each direct dependency's .pds modules load under the dependency-name prefix (§8.3)
- but the dependency's own pds_modules/ are not re-exported
project::IoError A filesystem failure surfaced to the caller: the path or manifest that could not be read, with a human-readable message.
project::Loader Resolves and reads a workspace off disk: finds the root by walking up to the nearest `pds.toml`, then walks the tree for visible `.pds` files and loads each as a `(fqn, source)` module — mapping its path to a flat module FQN (§8.1) and skipping `target/` and `pds_modules/`.
Parent
- for project::Project
Inbound
- call project::Project · load
- call project::Project · findRoot
Outbound
- from → project::Result
- from → project::Result
Scenarios
The root is the nearest ancestor holding `pds.toml`.
- given a path inside a workspace directory tree
- when the root is resolved
- then the nearest ancestor directory holding a pds.toml is the root
- but a tree with no pds.toml up to the filesystem root fails with an IoError
The walk loads `.pds` modules and skips build and vendor directories.
- given a workspace whose tree includes target/ and pds_modules/ directories
- when its modules are loaded
- then every visible .pds file becomes a (fqn, source) module
- and each file's path maps to its flat module FQN (§8.1)
- but files under target/ and pds_modules/ are skipped
project::Project `crates/pseudoscript-project`. The disk-facing loader: resolves the workspace root, reads its `.pds` modules, and materialises dependency modules from the vendor directory. The only place the native toolchain touches the filesystem for project loading.
Parent
Inbound
- call cli::Loader · findRoot
- call cli::Loader · load
Outbound
- from → cli::Result
- from → cli::Result
- call → project::Loader · load
- call → project::Loader · findRoot