Skip to content

Commit 4375919

Browse files
committed
temp
1 parent 919ef88 commit 4375919

File tree

37 files changed

+4154
-28
lines changed

37 files changed

+4154
-28
lines changed

Cargo.lock

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

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ members = [
44
"crates/analyzer",
55
"crates/emitter",
66
"crates/formatter",
7+
"crates/ir",
78
"crates/languageserver",
89
"crates/mdbook",
910
"crates/metadata",
@@ -39,9 +40,12 @@ console = "0.16.1"
3940
futures = "0.3.31"
4041
fxhash = "0.2.1"
4142
handlebars = "6.3"
43+
itertools = "0.14.0"
4244
log = "0.4.28"
4345
mdbook = "0.4.51"
4446
miette = {version = "7.6"}
47+
num-bigint = "0.4.6"
48+
num-traits = "0.2.19"
4549
once_cell = "1.21"
4650
parol_runtime = "4.0"
4751
pulldown-cmark = "0.13.0"

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ install:
7777
gen_sv:
7878
cargo run --bin veryl -- build
7979

80+
gen_ir:
81+
cargo run --bin veryl -- dump --ir
82+
8083
fmt_veryl:
8184
cargo run --bin veryl -- fmt
8285

crates/analyzer/Cargo.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ edition.workspace = true
1616
bimap = "0.6.3"
1717
daggy = "0.9.0"
1818
fxhash = {workspace = true}
19-
itertools = "0.14.0"
19+
itertools = {workspace = true}
2020
log = {workspace = true}
21-
num-bigint = "0.4.6"
22-
num-traits = "0.2.19"
21+
num-bigint = {workspace = true}
22+
num-traits = {workspace = true}
2323
smallvec = {workspace = true}
2424
strnum_bitwidth = {workspace = true}
2525
thiserror = {workspace = true}
26+
veryl-ir = {version = "0.17.0", path = "../ir"}
2627
veryl-metadata = {version = "0.17.0", path = "../metadata"}
2728
veryl-parser = {version = "0.17.0", path = "../parser"}
2829

crates/analyzer/src/analyzer.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use crate::var_ref::{
2121
};
2222
use itertools::Itertools;
2323
use std::path::Path;
24+
use veryl_ir::Ir;
2425
use veryl_metadata::{Build, EnvVar, Lint, Metadata};
2526
use veryl_parser::resource_table::{self, StrId};
2627
use veryl_parser::token_range::TokenRange;
@@ -56,6 +57,10 @@ impl AnalyzerPass2 {
5657
handlers: Pass2Handlers::new(build_opt, lint_opt, env_var),
5758
}
5859
}
60+
61+
pub fn get_ir(&self) -> Ir {
62+
self.handlers.get_ir()
63+
}
5964
}
6065

6166
impl VerylWalker for AnalyzerPass2 {
@@ -382,6 +387,7 @@ impl Analyzer {
382387
project_name: &str,
383388
_path: T,
384389
input: &Veryl,
390+
ir: Option<&mut Ir>,
385391
) -> Vec<AnalyzerError> {
386392
let mut ret = Vec::new();
387393

@@ -393,6 +399,10 @@ impl Analyzer {
393399
pass2.veryl(input);
394400
ret.append(&mut pass2.handlers.get_errors());
395401

402+
if let Some(x) = ir {
403+
x.append(&mut pass2.get_ir());
404+
}
405+
396406
ret
397407
}
398408

crates/analyzer/src/handlers.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ pub mod check_statement;
1818
pub mod check_type;
1919
pub mod check_unsafe;
2020
pub mod check_var_ref;
21+
pub mod create_ir;
2122
pub mod create_symbol_table;
2223
use check_anonymous::*;
2324
use check_attribute::*;
@@ -39,9 +40,11 @@ use check_statement::*;
3940
use check_type::*;
4041
use check_unsafe::*;
4142
use check_var_ref::*;
43+
use create_ir::*;
4244
use create_symbol_table::*;
4345

4446
use crate::analyzer_error::AnalyzerError;
47+
use veryl_ir::Ir;
4548
use veryl_metadata::{Build, EnvVar, Lint};
4649
use veryl_parser::veryl_walker::Handler;
4750

@@ -114,7 +117,8 @@ pub struct Pass2Handlers {
114117
check_clock_domain: CheckClockDomain,
115118
check_proto: CheckProto,
116119
check_type: CheckType,
117-
enables: [bool; 13],
120+
create_ir: CreateIr,
121+
enables: [bool; 14],
118122
}
119123

120124
impl Pass2Handlers {
@@ -133,6 +137,7 @@ impl Pass2Handlers {
133137
check_clock_domain: CheckClockDomain::new(),
134138
check_proto: CheckProto::new(),
135139
check_type: CheckType::new(),
140+
create_ir: CreateIr::new(),
136141
enables: env_var.analyzer_pass2_enables,
137142
}
138143
}
@@ -153,6 +158,7 @@ impl Pass2Handlers {
153158
(en[10], &mut self.check_clock_domain as &mut dyn Handler),
154159
(en[11], &mut self.check_proto as &mut dyn Handler),
155160
(en[12], &mut self.check_type as &mut dyn Handler),
161+
(en[13], &mut self.create_ir as &mut dyn Handler),
156162
]
157163
}
158164

@@ -171,6 +177,11 @@ impl Pass2Handlers {
171177
ret.append(&mut self.check_clock_domain.errors);
172178
ret.append(&mut self.check_proto.errors);
173179
ret.append(&mut self.check_type.errors);
180+
ret.append(&mut self.create_ir.errors);
174181
ret
175182
}
183+
184+
pub fn get_ir(&self) -> Ir {
185+
self.create_ir.ir.clone()
186+
}
176187
}

0 commit comments

Comments
 (0)