Skip to content

Commit dc3812a

Browse files
committed
πŸ› Report multiple analysis errors in CLI and LSP
1 parent 95e9635 commit dc3812a

10 files changed

Lines changed: 249 additions & 116 deletions

File tree

β€ŽAGENTS.mdβ€Ž

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Repository Guidelines
2+
3+
## Project Structure & Module Organization
4+
This repository is a Rust workspace for the Andy C++ language. Core crates live at the root: `ndc_lexer`, `ndc_parser`, `ndc_analyser`, `ndc_vm`, `ndc_interpreter`, `ndc_stdlib`, `ndc_core`, `ndc_lsp`, `ndc_macros`, and the CLI in `ndc_bin`. Integration tests live in `tests/` and `compiler_tests/`. Benchmarks are split between the Criterion crate in `benches/` and the `bench.sh` runner. End-user docs are in `manual/`, and the VS Code extension is isolated in `ext/andy-cpp/`.
5+
6+
## Build, Test, and Development Commands
7+
Use workspace commands from the repository root:
8+
9+
- `cargo build --workspace` builds all Rust crates.
10+
- `cargo test --workspace` runs the main test suites and matches CI.
11+
- `cargo build --no-default-features` checks the reduced feature set used in CI.
12+
- `cargo install --path ndc_bin` installs the `ndc` CLI locally.
13+
- `cargo run -p ndc_bin -- run script.ndc` runs a script without installing.
14+
- `./bench.sh benches/programs/fibonacci.ndc` builds a release binary and benchmarks it with `hyperfine`.
15+
16+
For the VS Code extension:
17+
18+
- `cd ext/andy-cpp && npm run compile` builds the extension.
19+
- `cd ext/andy-cpp && npm test` runs the extension test workflow.
20+
21+
## Coding Style & Naming Conventions
22+
Follow standard Rust formatting and run `cargo fmt --all` before submitting changes. Use 4-space indentation, `snake_case` for functions/modules/files, `PascalCase` for types, and keep crate names prefixed with `ndc_` for language components. Prefer small, focused modules over large multi-purpose files. In the extension, keep TypeScript files under `src/` and rely on the existing `eslint` setup.
23+
24+
## Testing Guidelines
25+
Add language behavior tests as `.ndc` programs under `tests/programs/<category>/` using the existing numeric prefixes such as `001_addition.ndc`. Encode expectations inline with `// expect-output:` or `// expect-error:` comments. Add compiler bytecode assertions to `compiler_tests/tests/compiler.rs` for VM-level changes. Run `cargo test --workspace` before opening a PR.
26+
27+
## Commit & Pull Request Guidelines
28+
Recent commits use short, imperative subjects, often with an emoji prefix, for example `πŸ› Fix incorrect return types for sequence functions`. Keep subjects specific and under one line. PRs should describe the behavioral change, link the relevant issue or PR when applicable, and call out AI-generated contributions as requested in `README.md`. Include screenshots only for editor-extension UI changes.

β€ŽCargo.lockβ€Ž

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
Β (0)