From cf99844495f059d12aac2e502cc7590af2303f8b Mon Sep 17 00:00:00 2001 From: Schrodinger ZHU Yifan Date: Sat, 24 Feb 2024 22:10:28 -0500 Subject: [PATCH] [lir] add analysis structure --- rura-lir/Cargo.toml | 1 + rura-lir/src/pass/analysis/mod.rs | 18 ++++++++++++++++++ rura-lir/src/pass/mod.rs | 1 + 3 files changed, 20 insertions(+) create mode 100644 rura-lir/src/pass/analysis/mod.rs diff --git a/rura-lir/Cargo.toml b/rura-lir/Cargo.toml index 5aed8f8..8d0f008 100644 --- a/rura-lir/Cargo.toml +++ b/rura-lir/Cargo.toml @@ -12,6 +12,7 @@ proc-macro2 = "1.0.78" quote = "1.0.35" winnow = "0.6.2" thiserror = "1.0.57" +serde_json = "1.0.114" [dependencies.rura-parsing] path = "../rura-parsing" diff --git a/rura-lir/src/pass/analysis/mod.rs b/rura-lir/src/pass/analysis/mod.rs new file mode 100644 index 0000000..e5f87e9 --- /dev/null +++ b/rura-lir/src/pass/analysis/mod.rs @@ -0,0 +1,18 @@ +#![allow(unused)] +use std::any::Any; + +use rura_parsing::QualifiedName; + +pub trait AnalysisInfo { + fn from_json(json: &str) -> Self; + fn to_json(&self) -> String; + fn module_level_info(&self) -> Option<&dyn Any> { + None + } + fn function_level_info(&self, name: &QualifiedName) -> Option<&dyn Any> { + None + } + fn operand_level_info(&self, function: &QualifiedName, operand: usize) -> Option<&dyn Any> { + None + } +} diff --git a/rura-lir/src/pass/mod.rs b/rura-lir/src/pass/mod.rs index 1568a8d..f4f6b27 100644 --- a/rura-lir/src/pass/mod.rs +++ b/rura-lir/src/pass/mod.rs @@ -1,3 +1,4 @@ +pub mod analysis; pub mod diagnostic; pub trait Pass {