laburnum 1.17.1

An LSP framework for building language servers and compilers, powered by an incremental query tree with content-addressed storage, task-based dataflow, and parallel queries.
Documentation
// Copyright Two Neutron Stars Incorporated and contributors
// SPDX-License-Identifier: BlueOak-1.0.0


// filesystem_test!(
//   nested_docs,
//   files: {
//     "docs": {
//         "index.md": "# Documentation",
//         "api": {
//             "v1.md": "## API v1",
//             "v2.md": "## API v2",
//             "examples": {
//                 "basic.md": "Basic example",
//                 "advanced.md": "Advanced example"
//             }
//         }
//     }
//    },
//    glob {
//       "docs/*.md": ["docs/index.md"],
//       "docs/api/*.md": ["docs/api/v1.md", "docs/api/v2.md"],
//       "docs/api/examples/*.md": [
//         "docs/api/examples/basic.md",
//         "docs/api/examples/advanced.md"
//       ]
//     }
// );

// // Test case 1: Mixed file extensions and nested directories
// filesystem_test!(
//     mixed_extensions,
//     files: {
//         "src": {
//             "main.rs": "fn main() {}",
//             "lib.rs": "pub mod test {}",
//             "tests": {
//                 "test1.rs": "#[test]",
//                 "data.json": "{\"test\": true}",
//                 "config.yaml": "test: true"
//             }
//         }
//     },
//     glob {
//         "src/*.rs": ["src/main.rs", "src/lib.rs"],
//         "src/tests/*.rs": ["src/tests/test1.rs"],
//         "src/tests/*.{json,yaml}": ["src/tests/data.json",
// "src/tests/config.yaml"],         "**/*.rs": ["src/main.rs", "src/lib.rs",
// "src/tests/test1.rs"]     }
// );

// // Test case 2: Deep nesting with similar names
// filesystem_test!(
//     deep_nesting,
//     files: {
//         "project": {
//             "config.json": "{\"root\": true}",
//             "src": {
//                 "config.json": "{\"src\": true}",
//                 "modules": {
//                     "config.json": "{\"modules\": true}",
//                     "core": {
//                         "config.json": "{\"core\": true}",
//                         "main.js": "console.log('core')"
//                     }
//                 }
//             }
//         }
//     },
//     glob {
//         "project/*.json": ["project/config.json"],
//         "project/src/*.json": ["project/src/config.json"],
//         "project/**/config.json": [
//             "project/config.json",
//             "project/src/config.json",
//             "project/src/modules/config.json",
//             "project/src/modules/core/config.json"
//         ],
//         "project/**/*.js": ["project/src/modules/core/main.js"]
//     }
// );

// // Test case 3: Different file types and patterns
// filesystem_test!(
//     web_project,
//     files: {
//         "web": {
//             "styles": {
//                 "main.css": "body {}",
//                 "components": {
//                     "button.css": ".button {}",
//                     "card.css": ".card {}"
//                 },
//                 "themes": {
//                     "dark.css": ".dark {}",
//                     "light.css": ".light {}"
//                 }
//             },
//             "scripts": {
//                 "main.js": "init()",
//                 "utils": {
//                     "helper.js": "export function help() {}",
//                     "test.js": "test()"
//                 }
//             },
//             "assets": {
//                 "images": {
//                     "logo.png": "binary",
//                     "icon.svg": "<svg></svg>"
//                 },
//                 "fonts": {
//                     "main.woff": "binary",
//                     "main.woff2": "binary"
//                 }
//             }
//         }
//     },
//     glob {
//         "web/styles/*.css": ["web/styles/main.css"],
//         "web/styles/**/*.css": [
//             "web/styles/main.css",
//             "web/styles/components/button.css",
//             "web/styles/components/card.css",
//             "web/styles/themes/dark.css",
//             "web/styles/themes/light.css"
//         ],
//         "web/scripts/**/*.js": [
//             "web/scripts/main.js",
//             "web/scripts/utils/helper.js",
//             "web/scripts/utils/test.js"
//         ],
//         "web/assets/images/*.{png,svg}": [
//             "web/assets/images/logo.png",
//             "web/assets/images/icon.svg"
//         ],
//         "web/assets/fonts/*.woff*": [
//             "web/assets/fonts/main.woff",
//             "web/assets/fonts/main.woff2"
//         ]
//     }
// );

// filesystem_test!(
//     complex_workspace,
//     files: {
//         "my-workspace": {
//             "workspace.bld": r#"Workspace(
//                 edition: 2026,
//                 name: "my-workspace",
//                 packages: [
//                     "packages/**",
//                 ],
//             )"#,
//             "packages": {
//                 "core": {
//                     "package.bld": r#"Package(
//                         name: "core",
//                         dependencies: [
//                             .local("utils"),
//                         ]
//                     )"#,
//                     "lib.bl": r#"
//                         pub mod data;
//                         pub mod transforms;

//                         pub use data::*;
//                         pub use transforms::*;
//                     "#,
//                     "data": {
//                         "types.bl": r#"
//                             pub struct User {
//                                 id: i32,
//                                 name: String,
//                             }

//                             pub enum Status {
//                                 Active,
//                                 Inactive,
//                             }
//                         "#,
//                         "mod.bl": r#"
//                             mod types;
//                             pub use types::*;
//                         "#
//                     },
//                     "transforms": {
//                         "convert.bl": r#"
//                             pub fn to_string(value: i32) -> String {
//                                 value.to_string()
//                             }

//                             test "can convert to string" {
//                                 assert to_string(42) == "42";
//                             }
//                         "#,
//                         "mod.bl": r#"
//                             mod convert;
//                             pub use convert::*;
//                         "#
//                     }
//                 },
//                 "utils": {
//                     "package.bld": r#"Package(
//                         name: "utils"
//                     )"#,
//                     "lib.bl": r#"
//                         pub mod logging;
//                         pub mod validation;

//                         pub use logging::*;
//                         pub use validation::*;
//                     "#,
//                     "logging": {
//                         "logger.bl": r#"
//                             pub fn log(msg: String) {
//                                 println!("{}", msg);
//                             }

//                             pub fn error(msg: String) {
//                                 eprintln!("Error: {}", msg);
//                             }
//                         "#,
//                         "mod.bl": r#"
//                             mod logger;
//                             pub use logger::*;
//                         "#
//                     },
//                     "validation": {
//                         "rules.bl": r#"
//                             pub fn is_valid_email(email: String) -> bool {
//                                 email.contains("@")
//                             }

//                             test "validates email" {
//                                 assert is_valid_email("test@example.com");
//                             }
//                         "#,
//                         "mod.bl": r#"
//                             mod rules;
//                             pub use rules::*;
//                         "#
//                     }
//                 },
//                 "cli": {
//                     "package.bld": r#"Package(
//                         name: "cli",
//                         dependencies: [
//                             .local("core"),
//                             .local("utils"),
//                         ]
//                     )"#,
//                     "main.bl": r#"
//                         use core::User;
//                         use utils::log;

//                         pub fn main() {
//                             log("CLI started");
//                         }
//                     "#,
//                     "commands": {
//                         "run.bl": r#"
//                             pub fn execute() {
//                                 // Run command implementation
//                             }
//                         "#,
//                         "mod.bl": r#"
//                             mod run;
//                             pub use run::*;
//                         "#
//                     }
//                 }
//             }
//         }
//     },
//     glob {
//         // Workspace configuration
//         "my-workspace/workspace.bld": ["my-workspace/workspace.bld"],

//         // Package configurations
//         "my-workspace/**/package.bld": [
//             "my-workspace/packages/core/package.bld",
//             "my-workspace/packages/utils/package.bld",
//             "my-workspace/packages/cli/package.bld"
//         ],

//         // All source files
//         "my-workspace/**/*.bl": [
//             "my-workspace/packages/core/lib.bl",
//             "my-workspace/packages/core/data/types.bl",
//             "my-workspace/packages/core/data/mod.bl",
//             "my-workspace/packages/core/transforms/convert.bl",
//             "my-workspace/packages/core/transforms/mod.bl",
//             "my-workspace/packages/utils/lib.bl",
//             "my-workspace/packages/utils/logging/logger.bl",
//             "my-workspace/packages/utils/logging/mod.bl",
//             "my-workspace/packages/utils/validation/rules.bl",
//             "my-workspace/packages/utils/validation/mod.bl",
//             "my-workspace/packages/cli/main.bl",
//             "my-workspace/packages/cli/commands/run.bl",
//             "my-workspace/packages/cli/commands/mod.bl"
//         ],

//         // Core package files
//         "my-workspace/packages/core/**/*.bl": [
//             "my-workspace/packages/core/lib.bl",
//             "my-workspace/packages/core/data/types.bl",
//             "my-workspace/packages/core/data/mod.bl",
//             "my-workspace/packages/core/transforms/convert.bl",
//             "my-workspace/packages/core/transforms/mod.bl"
//         ],

//         // Utils package files
//         "my-workspace/packages/utils/**/*.bl": [
//             "my-workspace/packages/utils/lib.bl",
//             "my-workspace/packages/utils/logging/logger.bl",
//             "my-workspace/packages/utils/logging/mod.bl",
//             "my-workspace/packages/utils/validation/rules.bl",
//             "my-workspace/packages/utils/validation/mod.bl"
//         ],

//         // CLI package files
//         "my-workspace/packages/cli/**/*.bl": [
//             "my-workspace/packages/cli/main.bl",
//             "my-workspace/packages/cli/commands/run.bl",
//             "my-workspace/packages/cli/commands/mod.bl"
//         ],

//         // All mod.bl files
//         "my-workspace/**/mod.bl": [
//             "my-workspace/packages/core/data/mod.bl",
//             "my-workspace/packages/core/transforms/mod.bl",
//             "my-workspace/packages/utils/logging/mod.bl",
//             "my-workspace/packages/utils/validation/mod.bl",
//             "my-workspace/packages/cli/commands/mod.bl"
//         ],

//         // Files containing test blocks
//         // Note: Changed from "my-workspace/**/**.bl" to specific files we
// know contain tests         "my-workspace/**/{convert,rules}.bl": [
//             "my-workspace/packages/core/transforms/convert.bl",
//             "my-workspace/packages/utils/validation/rules.bl"
//         ]
//     }
// );