pub mod core_indirect;
pub mod dialect;
pub mod enforce;
pub mod interner;
pub mod io;
pub mod lowering;
pub mod migration;
pub mod mutation;
pub mod op_def;
pub mod registry;
pub mod toml_loader;
pub use core_indirect::INDIRECT_DISPATCH_OP_ID;
pub use dialect::{
default_validator, Dialect, DialectRegistration, OpBackendTarget, OpDefRegistration,
};
pub use enforce::{Chain, EnforceGate, EnforceVerdict};
pub use interner::{intern_string, InternedOpId};
pub use lowering::{
LoweringCtx, LoweringTable, NativeModule, NativeModuleBuilder, PrimaryBinaryBuilder,
PrimaryTextBuilder, ReferenceKind, SecondaryTextBuilder, TextModule,
};
pub use migration::{
deprecation_diagnostic, AttrMap, AttrValue, Deprecation, Migration, MigrationError,
MigrationRegistry, Semver,
};
pub use mutation::MutationClass;
pub use op_def::{AttrSchema, AttrType, Category, OpDef, Signature, TypedParam};
pub use registry::{DialectRegistry, DuplicateOpIdError, Target};
pub use toml_loader::{
workspace_dialect_fixture_path, DialectManifest, OpManifest, TomlDialectStore, CODE_PARSE,
};
#[cfg(test)]
pub(crate) fn registry_test_lock() -> std::sync::MutexGuard<'static, ()> {
use std::sync::{Mutex, OnceLock};
static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
LOCK.get_or_init(|| Mutex::new(()))
.lock()
.expect("Fix: registry test lock was poisoned; inspect the earlier failing registry test.")
}