crates.sage_test_harness.compile_tests.fixtures

A fixture provides exactly one anonymous source or one files map. Anonymous source becomes src/lib.rs. A files map must contain src/lib.rs, the fixed crate root. There is no root-selection option or automatic root detection. Paths are relative to the materialized project and imply directories; files become modules only through Rust’s module-loading rules. An implicit mod child; with both child.rs and child/mod.rs present is rejected as ambiguous; an explicit #[path] selects its named file. Duplicate paths, absolute paths, parent traversal, a missing src/lib.rs, and file/directory conflicts are fixture errors. The generated Cargo.toml and Cargo.lock, .cargo configuration, and a root build.rs are reserved and cannot be supplied as fixture files. Unreferenced files are not implicitly compiled; annotations in files outside the selected crate are rejected rather than silently left unchecked.

The anonymous form supplies a Rust expression evaluating to source text:

compile_test! {
    source: indoc! {r#"
        pub fn value() -> u16 { 22 }
    "#},
}

The named-file form maps string-literal paths to source-text expressions. Slashes in a path create directories; there is no separate directory syntax:

compile_test! {
    files: {
        "src/lib.rs": indoc! {r#"
            pub mod model;
        "#},
        "src/model.rs": indoc! {r#"
            pub mod detail;
        "#},
        "src/model/detail.rs": indoc! {r#"
            pub fn value() -> u16 { 22 }
        "#},
    },
}

Top-level fields use name: value syntax, separated by commas. The files map uses "relative/path.rs": source_expression entries, also separated by commas. Both accept trailing commas. Field order is immaterial; duplicate or unknown field names are rejected. source and files are mutually exclusive and one is required. The crate root is always src/lib.rs. Source expressions may be ordinary or raw string literals, or expressions such as indoc! invocations. Both forms may also include edition, observations, diagnostics, and queries as illustrated in Authoring a test.

Read in specification context · design/crates/sage_test_harness/compile-tests.md

Implementation

Implemented crates/sage-ir/src/local_syms/mods.rs:2–7

sage_ir::local_syms::mods · lib:sage_ir

#![allow(unused)]
fn main() {
// {anchor}`crates.sage_test_harness.compile_tests.fixtures`
use sage_stash::{Slice, StashDirect, Stashed};

use crate::Db;
use crate::cst::attrs::{AttrCst, AttrCstKind, is_known_inert_item_attribute};
use crate::local_syms::LocalModItemSym;

}

See more source ↗

Implemented crates/sage-ir/src/parse/attrs.rs:3–8

sage_ir::parse::attrs · lib:sage_ir

#![allow(unused)]
fn main() {
// {anchor}`crates.sage_test_harness.compile_tests.fixtures`
use sage_stash::{Slice, Stash};

use crate::cst::attrs::{AttrCst, AttrCstKind};
use crate::cst::paths::Path;
use crate::span::RelativeSpan;

}

See more source ↗

Implemented crates/sage-ir/src/parse/items.rs:3–8

sage_ir::parse::items · lib:sage_ir

#![allow(unused)]
fn main() {
// {anchor}`crates.sage_test_harness.compile_tests.fixtures`
// {anchor}`crates.sage_test_harness.compile_tests.checking_scope`
use sage_stash::{Ptr, Stash, Stashed};

use crate::cst::consts::{ConstCst, ConstCstData};
use crate::cst::enums::{EnumCstData, VariantCst};

}

See more source ↗

Implemented crates/sage-ir/src/source.rs:1–6

sage_ir::source · lib:sage_ir

#![allow(unused)]
fn main() {
// {anchor}`crates.sage_test_harness.compile_tests.fixtures`
// {anchor}`crates.sage_test_harness.compile_tests.rendering`
/// Root input: one per file in the workspace.
#[salsa::input(debug)]
#[sage::item(crate::types::SourceFile)]
pub struct SourceFile {

}

See more source ↗

Implemented crates/sage-test-harness/src/compile/observe.rs:5–10

sage_test_harness::compile::observe · lib:sage_test_harness

#![allow(unused)]
fn main() {
// {anchor}`crates.sage_test_harness.compile_tests.fixtures`
use super::annotations::Compiler;
use super::types::FrozenType;
use super::{BTreeSet, Kind, Marker, Output};
use sage_host::driver::SageContext;
use sage_ir::tytree::{TyExpr, TyExprData as E, TyStmtKind};

}

See more source ↗

Implemented crates/sage-test-harness/src/compile/rustc.rs:3–8

sage_test_harness::compile::rustc · lib:sage_test_harness

#![allow(unused)]
fn main() {
// {anchor}`crates.sage_test_harness.compile_tests.fixtures`
use super::annotations::{Compiler, Marker};
use sage_ir::diagnostic::{DiagnosticSnapshot, Severity, SourceLocation};
use serde_json::Value;
use std::collections::BTreeMap;
use std::path::Path;

}

See more source ↗

Implemented crates/sage-test-harness/src/compile/mod.rs:170–202

sage_test_harness::compile · lib:sage_test_harness

#![allow(unused)]
fn main() {
// {anchor}`crates.sage_test_harness.compile_tests.fixtures`<<
fn validate_files(files: &[(String, String)]) -> Result<BTreeMap<String, String>, String> {
    let mut result = BTreeMap::new();
    for (path, source) in files {
        if path.starts_with('/')
            || matches!(path.as_str(), "Cargo.toml" | "Cargo.lock" | "build.rs")
            || path.starts_with(".cargo/")
            || path.contains('\\')
            || path
                .split('/')
                .any(|p| p.is_empty() || p == "." || p == "..")
        {
            return Err(format!(
                "invalid fixture path: {path}; paths must be relative and cannot replace project configuration"
            ));
        }
        if result.insert(path.clone(), source.clone()).is_some() {
            return Err(format!("duplicate fixture path: {path}"));
        }
    }
    if !result.contains_key("src/lib.rs") {
        return Err("fixture is missing src/lib.rs".into());
    }
    for path in result.keys() {
        for (index, _) in path.match_indices('/') {
            if result.contains_key(&path[..index]) {
                return Err(format!("file/directory conflict: {path}"));
            }
        }
    }
    Ok(result)
}
// >>

}

See more source ↗

Implemented crates/sage-host/src/driver.rs:1–6

sage_host::driver · lib:sage_host

#![allow(unused)]
fn main() {
// {anchor}`crates.sage_test_harness.compile_tests.fixtures`
//! Core entry point: `run_sage_with` sets up the full sage pipeline
//! and hands a live `SageContext` to a callback.
//!
//! Architecture: rustc runs on a spawned thread (providing `TyCtxt`).
//! Salsa work runs on the caller's thread. The two communicate via channels.

}

See more source ↗

Tests and review

Indexed tests and the implementation-completeness and test-adequacy review; no test run is implied.

Implemented sage_test_harness::compile::tests::rejects_ambiguous_or_escaping_files

crates/sage-test-harness/src/compile/mod.rs · lib:sage_test_harness

#![allow(unused)]
fn main() {
#[test]
    #[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
    fn rejects_ambiguous_or_escaping_files() {
        for files in [
            vec![("src/other.rs", "")],
            vec![("src/lib.rs", ""), ("Cargo.toml", "")],
            vec![("src/lib.rs", ""), ("Cargo.lock", "")],
            vec![("src/lib.rs", ""), ("build.rs", "")],
            vec![("src/lib.rs", ""), (".cargo/config.toml", "")],
            vec![("src/lib.rs", ""), ("src/lib.rs", "")],
            vec![("src/lib.rs", ""), ("src/../Cargo.toml", "")],
            vec![("src/lib.rs", ""), ("/tmp/out.rs", "")],
            vec![
                ("src/lib.rs", ""),
                ("src/mod", ""),
                ("src/mod/child.rs", ""),
            ],
        ] {
            let files: Vec<_> = files
                .into_iter()
                .map(|(p, s)| (p.into(), s.into()))
                .collect();
            assert!(validate_files(&files).is_err(), "{files:?}");
        }
    }
}

Conditional source: #[cfg(test)]

See more source ↗

Implemented sage_test_harness::compile::tests::unused_file_annotations_fail

crates/sage-test-harness/src/compile/mod.rs · lib:sage_test_harness

#![allow(unused)]
fn main() {
#[test]
    #[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
    fn unused_file_annotations_fail() {
        let mut test = CompileTest::default();
        test.files(vec![
            ("src/lib.rs".into(), "".into()),
            (
                "src/unused.rs".into(),
                "fn f() {} //# ERROR if rustc".into(),
            ),
        ]);
        assert!(
            test.prepare()
                .unwrap_err()
                .contains("outside the selected crate")
        );
    }
}

Conditional source: #[cfg(test)]

See more source ↗

Implemented sage_test_harness::modules_and_associated_bodies

crates/sage-test-harness/tests/compile_tests.rs · test:compile_tests

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
#[sage::test(crates.sage_test_harness.compile_tests.checking_scope)]
fn modules_and_associated_bodies() {
    compile_test! {
        files: {
            "src/lib.rs": "mod nested;",
            "src/nested/mod.rs": indoc! {r#"
                struct Value;
                impl Value {
                    fn answer() -> u16 {
                        22 //# ty
                    }
                }
            "#},
        },
        observations: expect![[r#"
            src/nested/mod.rs: literal `22`
              type: u16
        "#]],
    }
}
}

See more source ↗

Implemented sage_test_harness::source_expressions_field_order_and_optional_trailing_commas

crates/sage-test-harness/tests/fixture_grammar.rs · test:fixture_grammar

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn source_expressions_field_order_and_optional_trailing_commas() {
    compile_test! {
        observations: expect![["src/lib.rs: literal `22`\n  type: u16\n"]],
        edition: "2024",
        diagnostics: expect![""],
        source: indoc::indoc! {r#"
            fn value() -> u16 {
                22 //# ty
            }
        "#}
    };
    compile_test! {
        diagnostics: expect![""],
        files: {
            "src/model/detail.rs": "pub fn value() -> u16 { 22 }",
            "src/model.rs": "pub mod detail;",
            "src/lib.rs": r#"mod model;"#
        },
        edition: "2024",
    };
    compile_test! { source: String::from("fn value() {}") };
}
}

See more source ↗

Implemented sage_test_harness::source_selection_and_duplicate_fields_are_rejected

crates/sage-test-harness/tests/fixture_grammar.rs · test:fixture_grammar

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn source_selection_and_duplicate_fields_are_rejected() {
    let cases: &[(&str, fn())] = &[
        ("missing source or files", || {
            compile_test! {};
        }),
        ("provide exactly one source or files field", || {
            compile_test! { source: "", source: "" };
        }),
        ("provide exactly one source or files field", || {
            compile_test! { source: "", files: { "src/lib.rs": "" } };
        }),
        ("provide exactly one source or files field", || {
            compile_test! { files: { "src/lib.rs": "" }, source: "" };
        }),
        ("provide exactly one source or files field", || {
            compile_test! { files: { "src/lib.rs": "" }, files: { "src/lib.rs": "" } };
        }),
        ("duplicate edition", || {
            compile_test! { source: "", edition: "2024", edition: "2021" };
        }),
        ("duplicate field: observations", || {
            compile_test! { source: "", observations: expect![""], observations: expect![""] };
        }),
        ("duplicate field: diagnostics", || {
            compile_test! { source: "", diagnostics: expect![""], diagnostics: expect![""] };
        }),
        ("duplicate field: queries", || {
            compile_test! { source: "", queries: expect![""], queries: expect![""] };
        }),
    ];
    for (expected, run) in cases {
        let panic = std::panic::catch_unwind(*run).expect_err("invalid fields must fail");
        let message = panic
            .downcast_ref::<String>()
            .map(String::as_str)
            .or_else(|| panic.downcast_ref::<&str>().copied())
            .unwrap();
        assert!(message.contains(expected), "{message}");
    }
}
}

See more source ↗

Implemented sage_test_harness::unknown_field_and_root_selection_fail_to_compile

crates/sage-test-harness/tests/fixture_grammar.rs · test:fixture_grammar

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn unknown_field_and_root_selection_fail_to_compile() {
    let project = tempfile::tempdir().unwrap();
    let harness = std::path::Path::new(env!("CARGO_MANIFEST_DIR"));
    std::fs::create_dir(project.path().join("src")).unwrap();
    std::fs::write(project.path().join("Cargo.toml"), format!(
        "[package]\nname = \"fixture_grammar_probe\"\nversion = \"0.0.0\"\nedition = \"2024\"\n[workspace]\n[dependencies]\nsage-test-harness = {{ path = {:?} }}\n[patch.crates-io]\nsalsa = {{ path = {:?} }}\n",
        harness, harness.join("../../vendor/salsa")
    )).unwrap();
    std::fs::copy(
        harness.join("../../Cargo.lock"),
        project.path().join("Cargo.lock"),
    )
    .unwrap();
    for field in ["unknown_fixture_field", "root"] {
        std::fs::write(project.path().join("src/lib.rs"), format!(
            "#![feature(rustc_private)]\npub fn probe() {{ sage_test_harness::compile_test! {{ source: \"\", {field}: \"src/other.rs\" }} }}"
        )).unwrap();
        let output = std::process::Command::new("cargo")
            .args(["check", "--offline", "--lib", "--quiet"])
            .current_dir(project.path())
            .env("CARGO_TARGET_DIR", harness.join("../../target"))
            .env("RUSTC", sage_host::metadata::our_rustc())
            .output()
            .unwrap();
        let errors = String::from_utf8_lossy(&output.stderr);
        assert!(!output.status.success(), "unknown field must be rejected");
        assert!(
            errors.contains(&format!("no method named `{field}`")),
            "{errors}"
        );
    }
}
}

See more source ↗

Implemented sage_test_harness::ambiguous_module_files_are_not_silently_selected

crates/sage-test-harness/tests/observation_review_fixtures.rs · test:observation_review_fixtures

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn ambiguous_module_files_are_not_silently_selected() {
    let result = std::panic::catch_unwind(|| {
        compile_test! {
            files: {
                "src/lib.rs": "mod child;",
                "src/child.rs": "fn first() {}",
                "src/child/mod.rs": "fn second() {}",
            },
        }
    });
    assert!(
        result.is_err(),
        "two candidate module files must fail instead of selecting one"
    );
}
}

See more source ↗

Implemented sage_test_harness::explicit_module_path_selects_one_of_two_candidate_files

crates/sage-test-harness/tests/observation_review_fixtures.rs · test:observation_review_fixtures

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn explicit_module_path_selects_one_of_two_candidate_files() {
    compile_test! {
        files: {
            "src/lib.rs": "#[path = \"child.rs\"] mod child;",
            "src/child.rs": "fn first() -> u16 { 22 } //# ty",
            "src/child/mod.rs": "fn second() -> u16 { false }",
        },
        observations: expect_test::expect![[r#"
            src/child.rs: literal `22`
              type: u16
            src/child.rs: block `{ 22 }`
              type: u16
        "#]],
    }
}
}

See more source ↗

Implemented sage_test_harness::explicit_module_path_accepts_non_rs_source_filename

crates/sage-test-harness/tests/review_fixture.rs · test:review_fixture

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn explicit_module_path_accepts_non_rs_source_filename() {
    compile_test! {
        files: {
            "src/lib.rs": "#[path = \"module.inc\"] mod included;",
            "src/module.inc": "#[warn(dead_code)] pub fn value() {} //# WARN if rustc",
        },
    }
}
}

See more source ↗

Implemented sage_test_harness::explicit_module_path_can_reach_fixture_file_outside_src

crates/sage-test-harness/tests/review_fixture.rs · test:review_fixture

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn explicit_module_path_can_reach_fixture_file_outside_src() {
    compile_test! {
        files: {
            "src/lib.rs": "#[path = \"../other.rs\"] mod other;",
            "other.rs": "#[warn(dead_code)] pub fn included() {} //# WARN if rustc",
        },
    }
}
}

See more source ↗

Implemented sage_test_harness::explicit_module_path_in_inline_module_uses_inline_directory

crates/sage-test-harness/tests/review_fixture.rs · test:review_fixture

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn explicit_module_path_in_inline_module_uses_inline_directory() {
    compile_test! {
        files: {
            "src/lib.rs": "mod inline { #[path = \"child.rs\"] mod child; }",
            "src/inline/child.rs": "#[warn(dead_code)] pub fn included() {} //# WARN if rustc",
        },
    }
}
}

See more source ↗

Implemented sage_test_harness::explicit_path_on_inline_module_controls_child_directory

crates/sage-test-harness/tests/review_fixture.rs · test:review_fixture

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn explicit_path_on_inline_module_controls_child_directory() {
    compile_test! {
        files: {
            "src/lib.rs": "#[path = \"alternate\"] mod inline { mod child; }",
            "src/alternate/child.rs": "#[warn(dead_code)] pub fn included() {} //# WARN if rustc",
        },
    }
}
}

See more source ↗

Implemented sage_test_harness::path_attribute_inside_inline_module_uses_its_module_directory

crates/sage-test-harness/tests/review_semantics.rs · test:review_semantics

#![allow(unused)]
fn main() {
#[test]
#[sage::test(crates.sage_test_harness.compile_tests.fixtures)]
fn path_attribute_inside_inline_module_uses_its_module_directory() {
    compile_test! {
        files: {
            "src/lib.rs": "mod outer { #[path = \"renamed.rs\"] mod inner; }",
            "src/outer/renamed.rs": "fn value() -> u16 {\n22 //# ty\n}",
        },
        observations: expect_test::expect![[r#"
            src/outer/renamed.rs: literal `22`
              type: u16
        "#]],
    }
}
}

See more source ↗

Review: Accepted · Codex /root/macro_fix_expand_deps.

Reviewed the full fixtures claim including both code examples and grammar paragraphs, all eight implementation entries, and all thirteen associated tests. Requirements: exactly one source/files input; anonymous source and fixed named root src/lib.rs; source expressions and literal file paths; comma/trailing-comma/field-order rules; duplicate/unknown field rejection; relative implied directories; actual Rust module reachability with ambiguity and explicit-path handling; reserved project files and invalid path/conflict rejection; and rejection of annotations outside the selected crate.

compile_test! expands the file-map literal keys and arbitrary source expressions into setters, recursively accepting arbitrary field order and optional trailing commas. Unknown fields are rejected as nonexistent methods. source delegates to files with src/lib.rs, setters reject duplicates, and prepare rejects absent source. validate_files rejects missing fixed root, duplicate paths, absolute/backslash/empty/dot/parent components, reserved Cargo.toml/Cargo.lock/build.rs/.cargo paths, and file/directory prefix conflicts before materialization. Parent directories are created from validated keys. The harness writes its own manifest with an isolated workspace and then uses that root for both compilers; rustc names src/lib.rs explicitly. Captured metadata loading chooses the ordinary library target from this generated manifest, not a caller root option.

SageHost collects textual fixture files, including non-rs files and files outside src with logical relative paths, but registration is not compilation. The local module walker begins at the selected root and follows expanded module symbols only. Its reached-file set is checked against every annotation, including compiler-specific markers. parse_mod separately stores inline module children and resolves file-backed declarations through module directories. resolve_mod_file requires exactly one of child.rs and child/mod.rs; explicit path bypasses the implicit search. Inline directory/path overrides and normalized logical parent components are preserved. This allows a source-level #[path = ../other.rs] to reach a fixture file while still forbidding parent traversal in the file-map key. parse/attrs recognizes supported path attributes. The recent change to symbol_local_item visibility does not alter any loading or reachability path.

Test evidence covers all the grammar branches: source_expressions_field_order_and_optional_trailing_commas uses indoc/raw/String expressions, reordered fields and named nested paths without trailing commas; source_selection_and_duplicate_fields_are_rejected asserts specific failures for absence, duplicate source/files combinations, edition and every expectation field. unknown_field_and_root_selection_fail_to_compile checks actual offline compilation reports the nonexistent method for both an arbitrary field and root, so failure cannot be satisfied by unrelated compiler errors. rejects_ambiguous_or_escaping_files enumerates reserved files, absent root, duplicates, traversal, absolute paths and file/directory conflict. unused_file_annotations_fail requires outside-selected-crate failure for a rustc-only marker. modules_and_associated_bodies observes a reached nested file. The ambiguous implicit-module test requires rejection, and the explicit-path control selects one file while an invalid body in the other remains uncompiled. Four review_fixture tests require non-rs loading, loading outside src, inline-directory resolution and explicit inline path overrides; rustc warning markers make the selected file observable. The additional inline-path test snapshots a selected nested expression. No TODO/N/A evidence is present.

Executed cargo test -p sage-test-harness --test fixture_grammar --test observation_review_fixtures --test review_fixture: 3, 2 and 7 tests passed. Earlier unchanged-code runs in this review session passed the compile:: unit suite (38 tests, including both associated fixture unit tests) and compile_tests/review_semantics (14/8 tests, including the remaining two associated integration tests). No production changes were made. Captured metadata, parser-dispatch and annotation helper dependencies in addition to the initial evidence. No requested edits.

Browse crates anchors

139 anchors

Specification anchors and declared coverage
AnchorImplementationTests
crates (139)114 Implemented37 TODO2 N/A74 Implemented107 TODO
crates.sage_inspector (15)13 Implemented1 TODO2 N/A3 Implemented15 TODO
crates.sage_inspector.inspection (15)13 Implemented1 TODO2 N/A3 Implemented15 TODO
balanced_tracesImplementedTODO
canonical_ownershipImplementedImplementedTODO
derive_reflectionImplementedImplementedTODO
detail_free_indexImplementedTODO
deterministic_traceImplementedTODO
durable_navigationN/ATODO
generic_browserN/ATODO
owned_reflectionImplementedImplementedTODO
product_availabilityImplementedTODO
revision_and_demandImplementedTODO
semantic_phase_boundaryImplementedTODO
source_evidenceImplementedTODO
typed_serviceImplementedTODO
unknown_workImplementedTODOTODO
workspace_actorImplementedTODO
crates.sage_ir (90)67 Implemented34 TODO40 Implemented88 TODO
crates.sage_ir.checking (12)12 Implemented3 TODO5 Implemented12 TODO
crates.sage_ir.checking.body (5)5 Implemented2 TODO3 Implemented5 TODO
elaborationImplementedImplementedTODO
expected_typesImplementedTODOTODO
interface_dependenciesImplementedImplementedTODO
isolated_completionImplementedImplementedTODO
operator_callsImplementedTODOTODO
identity_mintingImplementedTODO
owned_productsImplementedImplementedTODO
crates.sage_ir.checking.signature (4)4 Implemented1 TODO1 Implemented4 TODO
body_independenceImplementedTODO
narrow_detailImplementedTODOTODO
owner_binderImplementedImplementedTODO
storageImplementedTODO
symbol_keyed_interfacesImplementedTODO
crates.sage_ir.crate (9)9 TODO9 TODO
explicit_restrictionsTODOTODO
identity_before_detailTODOTODO
incremental_evidenceTODOTODO
narrow_demandsTODOTODO
reexecution_and_invalidationTODOTODO
represented_completenessTODOTODO
restrictions_and_gapsTODOTODO
semantic_query_boundariesTODOTODO
terminal_incompletenessTODOTODO
crates.sage_ir.inference (8)8 Implemented6 Implemented8 TODO
atomic_checkingImplementedImplementedTODO
body_local_quiescenceImplementedImplementedTODO
canonical_boundaryImplementedImplementedTODO
completed_body_boundaryImplementedTODO
numeric_domainsImplementedImplementedTODO
subtyping_and_coercionImplementedImplementedTODO
terminal_obligationsImplementedTODO
transaction_isolationImplementedImplementedTODO
crates.sage_ir.metadata (4)4 Implemented1 TODO4 TODO
explicit_incompletenessImplementedTODO
keyed_reuseImplementedTODOTODO
product_boundariesImplementedTODO
provider_authorityImplementedTODO
crates.sage_ir.modules (8)7 Implemented1 TODO4 Implemented8 TODO
crates.sage_ir.modules.expand (4)4 Implemented2 Implemented4 TODO
completenessImplementedImplementedTODO
dependenciesImplementedTODO
direct_membersImplementedTODO
recursion_and_fixpointImplementedImplementedTODO
crates.sage_ir.modules.parse (4)3 Implemented1 TODO2 Implemented4 TODO
dependenciesImplementedTODO
detail_firewallImplementedImplementedTODO
recovery_completenessTODOTODO
syntax_identitiesImplementedImplementedTODO
crates.sage_ir.resolution (5)5 Implemented1 TODO3 Implemented4 TODO
crates.sage_ir.resolution.lookup (5)5 Implemented1 TODO3 Implemented4 TODO
completenessImplementedTODOImplementedTODO
dependenciesImplementedTODO
expansion_import_ambiguityImplementedImplemented
identity_onlyImplementedTODO
precedenceImplementedImplementedTODO
crates.sage_ir.solver (9)7 Implemented7 TODO5 Implemented9 TODO
alternative_isolationImplementedTODOImplementedTODO
bounded_completenessImplementedTODOTODO
candidate_completenessImplementedTODO
canonical_cyclesTODOTODO
canonical_outputsImplementedImplementedTODO
local_index_firewallTODOTODO
normalization_demandImplementedTODOImplementedTODO
schedule_independenceImplementedTODOImplementedTODO
shared_final_resultImplementedTODOImplementedTODO
crates.sage_ir.symbols (8)8 Implemented4 Implemented7 TODO
associated_identityImplementedImplemented
associated_interfacesImplementedTODO
body_interfacesImplementedImplementedTODO
definition_identityImplementedTODO
external_fact_queriesImplementedTODO
external_identityImplementedTODO
kind_wrappersImplementedImplementedTODO
local_identityImplementedImplementedTODO
crates.sage_ir.types (27)16 Implemented12 TODO13 Implemented27 TODO
crates.sage_ir.types.aliases (2)1 Implemented1 TODO1 Implemented2 TODO
identityImplementedImplementedTODO
revelationTODOTODO
crates.sage_ir.types.binder (1)1 Implemented1 TODO1 Implemented1 TODO
owner_parametersImplementedTODOImplementedTODO
crates.sage_ir.types.body (13)4 Implemented9 TODO3 Implemented13 TODO
awaitTODOTODO
closuresTODOTODO
conditional_patternsTODOTODO
coroutinesTODOTODO
diagnosed_recoveryImplementedImplementedTODO
elaboratedTODOImplementedTODO
for_iterationTODOTODO
indexingTODOTODO
macro_expansionTODOTODO
no_inferenceImplementedImplementedTODO
resolved_referencesImplementedTODO
try_residualTODOTODO
typed_provenanceImplementedTODO
crates.sage_ir.types.calls (2)1 Implemented1 TODO1 Implemented2 TODO
dispatch_familiesTODOTODO
selected_semanticsImplementedImplementedTODO
crates.sage_ir.types.lifetimes (2)2 Implemented2 Implemented2 TODO
dummyImplementedImplementedTODO
unchecked_borrowsImplementedImplementedTODO
crates.sage_ir.types.operators (2)2 Implemented1 Implemented2 TODO
lazy_control_flowImplementedTODO
trait_callsImplementedImplementedTODO
scoped_identitiesImplementedTODO
crates.sage_ir.types.spans (4)4 Implemented4 Implemented4 TODO
generated_identityImplementedImplementedTODO
item_originImplementedImplementedTODO
offset_reuseImplementedImplementedTODO
relative_compositionImplementedImplementedTODO
crates.sage_oracle_harness (4)4 Implemented2 TODO1 Implemented4 TODO
crates.sage_oracle_harness.crate (4)4 Implemented2 TODO1 Implemented4 TODO
deterministic_emissionImplementedTODO
exact_comparisonImplementedTODOImplementedTODO
fixed_projectionImplementedTODO
independent_coverageImplementedTODOTODO
crates.sage_stash (5)5 Implemented5 Implemented
crates.sage_stash.storage (5)5 Implemented5 Implemented
handle_ownershipImplementedImplemented
immutable_entriesImplementedImplemented
query_valueImplementedImplemented
rooted_equalityImplementedImplemented
typed_interningImplementedImplemented
crates.sage_test_harness (25)25 Implemented25 Implemented
crates.sage_test_harness.compile_tests (25)25 Implemented25 Implemented
annotation_validationImplementedImplemented
blessing_gateImplementedImplemented
callsite_updatesImplementedImplemented
checking_scopeImplementedImplemented
compiler_conditionsImplementedImplemented
completed_typesImplementedImplemented
coordinatesImplementedImplemented
dependenciesImplementedImplemented
diagnostic_countsImplementedImplemented
diagnostic_locationsImplementedImplemented
editionImplementedImplemented
fixturesImplementedImplemented
grouped_observationsImplementedImplemented
invocationImplementedImplemented
production_executionImplementedImplemented
project_isolationImplementedImplemented
query_captureImplementedImplemented
query_projectionImplementedImplemented
renderingImplementedImplemented
resolved_symbolsImplementedImplemented
review_visibilityImplementedImplemented
rustc_executionImplementedImplemented
rustc_lintsImplementedImplemented
starting_expressionsImplementedImplemented
target_lineImplementedImplemented