Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ea27895
feat(native): port Verilog extractor to Rust
carlos-alm May 11, 2026
30f5d24
fix: resolve merge conflicts with main
carlos-alm May 12, 2026
cac7493
fix: address Greptile review feedback for Verilog extractor (#1107)
carlos-alm May 12, 2026
030470c
chore: sync Cargo.lock version after merge (#1107)
carlos-alm May 12, 2026
f15ffdc
test(benchmark): exempt 3.10.0:Full build for verilog grammar additio…
carlos-alm May 12, 2026
b472cc5
fix: resolve merge conflicts with main
carlos-alm May 13, 2026
5947448
fix: resolve merge conflicts with main (#1107)
carlos-alm May 13, 2026
a6e4f92
test(benchmark): exempt 3.10.0:fnDeps depth 3 and fix native-drop cou…
carlos-alm May 13, 2026
3768e60
fix: resolve merge conflicts with main
carlos-alm May 13, 2026
260ee4f
fix: extract Verilog class declarations and extends relations (#1107)
carlos-alm May 14, 2026
39c00af
fix: resolve merge conflicts with main (#1107)
carlos-alm May 14, 2026
497da19
fix: qualify Verilog tasks nested in classes with class name (#1107)
carlos-alm May 14, 2026
de1c9a3
fix: resolve merge conflicts with main
carlos-alm May 14, 2026
f50d1e0
fix: resolve merge conflicts with main
carlos-alm May 14, 2026
5a7a285
fix(test): drop .gleam/.v from WASM-only fixture after native port (#…
carlos-alm May 14, 2026
bd3550e
fix: resolve merge conflicts with main
carlos-alm May 14, 2026
7d8437b
fix: resolve merge conflicts with main
carlos-alm May 14, 2026
86f1d86
fix(extractors): remove unreachable splitn/split fallback in verilog …
carlos-alm May 14, 2026
f091d3f
fix(extractors): restore Verilog WASM engine parity for ports and inc…
carlos-alm May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/codegraph-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ tree-sitter-erlang = "0.16"
tree-sitter-groovy = "0.1"
tree-sitter-r = "1.2"
tree-sitter-solidity = "1.2"
tree-sitter-verilog = "1.0.3"
rayon = "1"
ignore = "0.4"
globset = "0.4"
Expand Down
17 changes: 10 additions & 7 deletions crates/codegraph-core/src/change_detection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -774,15 +774,18 @@ mod tests {

#[test]
fn detect_removed_skips_unsupported_extensions() {
// Files in WASM-only languages (Verilog) live in
// `file_hashes` because the JS-side WASM backfill writes them, but
// Rust's narrower file_collector never collects them. Without this
// skip, every incremental rebuild would flag them as removed and
// purge their rows — the #1066 ~2s floor.
// Files that the JS-side WASM backfill wrote into `file_hashes` for
// an extension that the Rust `file_collector` doesn't recognise must
// not be flagged as removed merely because the orchestrator's
// narrower collector never sees them — that would purge their rows
// on every incremental rebuild (the #1066 ~2s floor). All currently
// registered languages have native extractors, so this test uses
// synthetic extensions that are deliberately outside the
// `SUPPORTED_EXTENSIONS` set to exercise the skip path.
let mut existing = HashMap::new();
for path in [
"tests/fixtures/verilog/main.v",
"tests/fixtures/verilog/util.sv",
"tests/fixtures/unknown/main.unknownlang",
"tests/fixtures/unknown/util.fakelang",
] {
existing.insert(
path.to_string(),
Expand Down
17 changes: 17 additions & 0 deletions crates/codegraph-core/src/extractors/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,23 @@ pub const SOLIDITY_AST_CONFIG: LangAstConfig = LangAstConfig {
string_prefixes: &[],
};

/// Verilog/SystemVerilog AST config.
///
/// The WASM-side `AST_TYPE_MAPS` (in `src/ast-analysis/rules/index.ts`) has no
/// `verilog` entry, so the JS engine emits no `ast_nodes` rows for Verilog
/// files. Keeping every list empty produces the same outcome here: the generic
/// walker visits every node but classifies none, so nothing is pushed. If the
/// JS map ever grows a Verilog entry, mirror it here.
pub const VERILOG_AST_CONFIG: LangAstConfig = LangAstConfig {
new_types: &[],
throw_types: &[],
await_types: &[],
string_types: &[],
regex_types: &[],
quote_chars: &['"'],
string_prefixes: &[],
};

// ── Generic AST node walker ──────────────────────────────────────────────────

/// Node types that represent identifiers across languages.
Expand Down
4 changes: 4 additions & 0 deletions crates/codegraph-core/src/extractors/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ pub mod rust_lang;
pub mod scala;
pub mod solidity;
pub mod swift;
pub mod verilog;
pub mod zig;

use crate::parser_registry::LanguageKind;
Expand Down Expand Up @@ -166,5 +167,8 @@ pub fn extract_symbols_with_opts(
LanguageKind::Solidity => {
solidity::SolidityExtractor.extract_with_opts(tree, source, file_path, include_ast_nodes)
}
LanguageKind::Verilog => {
verilog::VerilogExtractor.extract_with_opts(tree, source, file_path, include_ast_nodes)
}
}
}
Loading
Loading