Skip to content
This repository was archived by the owner on Sep 9, 2025. It is now read-only.

Commit e040754

Browse files
author
Hendrik van Antwerpen
committed
Do not add project definitions if project name is empty
1 parent 60214a5 commit e040754

File tree

3 files changed

+76
-60
lines changed

3 files changed

+76
-60
lines changed

languages/tree-sitter-stack-graphs-typescript/rust/npm_package.rs

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,7 @@ impl FileAnalyzer for NpmPackageAnalyzer {
3131
_cancellation_flag: &dyn tree_sitter_stack_graphs::CancellationFlag,
3232
) -> Result<(), tree_sitter_stack_graphs::LoadError> {
3333
// read globals
34-
let proj_name = globals
35-
.get(crate::PROJECT_NAME_VAR)
36-
.map(String::as_str)
37-
.unwrap_or("");
34+
let proj_name = globals.get(crate::PROJECT_NAME_VAR).map(String::as_str);
3835

3936
// parse source
4037
let npm_pkg: NpmPackage =
@@ -44,31 +41,37 @@ impl FileAnalyzer for NpmPackageAnalyzer {
4441
let root = StackGraph::root_node();
4542

4643
// project scope
47-
let proj_scope_id = graph.new_node_id(file);
48-
let proj_scope = graph.add_scope_node(proj_scope_id, false).unwrap();
49-
add_debug_name(graph, proj_scope, "npm_package.proj_scope");
44+
let proj_scope = if let Some(proj_name) = proj_name {
45+
let proj_scope_id = graph.new_node_id(file);
46+
let proj_scope = graph.add_scope_node(proj_scope_id, false).unwrap();
47+
add_debug_name(graph, proj_scope, "npm_package.proj_scope");
5048

51-
// project definition
52-
let proj_def = add_ns_pop(
53-
graph,
54-
file,
55-
root,
56-
PROJ_NS,
57-
proj_name,
58-
"npm_package.proj_def",
59-
);
60-
add_edge(graph, proj_def, proj_scope, 0);
49+
// project definition
50+
let proj_def = add_ns_pop(
51+
graph,
52+
file,
53+
root,
54+
PROJ_NS,
55+
proj_name,
56+
"npm_package.proj_def",
57+
);
58+
add_edge(graph, proj_def, proj_scope, 0);
6159

62-
// project reference
63-
let proj_ref = add_ns_push(
64-
graph,
65-
file,
66-
root,
67-
PROJ_NS,
68-
proj_name,
69-
"npm_package.proj_ref",
70-
);
71-
add_edge(graph, proj_scope, proj_ref, 0);
60+
// project reference
61+
let proj_ref = add_ns_push(
62+
graph,
63+
file,
64+
root,
65+
PROJ_NS,
66+
proj_name,
67+
"npm_package.proj_ref",
68+
);
69+
add_edge(graph, proj_scope, proj_ref, 0);
70+
71+
proj_scope
72+
} else {
73+
root
74+
};
7275

7376
// package definition
7477
let pkg_def = add_module_pops(

languages/tree-sitter-stack-graphs-typescript/rust/tsconfig.rs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,7 @@ impl FileAnalyzer for TsConfigAnalyzer {
3333
_cancellation_flag: &dyn tree_sitter_stack_graphs::CancellationFlag,
3434
) -> Result<(), tree_sitter_stack_graphs::LoadError> {
3535
// read globals
36-
let proj_name = globals
37-
.get(crate::PROJECT_NAME_VAR)
38-
.map(String::as_str)
39-
.unwrap_or("");
36+
let proj_name = globals.get(crate::PROJECT_NAME_VAR).map(String::as_str);
4037

4138
// parse source
4239
let tsc = TsConfig::parse_str(path, source).map_err(|_| LoadError::ParseError)?;
@@ -45,17 +42,23 @@ impl FileAnalyzer for TsConfigAnalyzer {
4542
let root = StackGraph::root_node();
4643

4744
// project scope
48-
let proj_scope_id = graph.new_node_id(file);
49-
let proj_scope = graph.add_scope_node(proj_scope_id, false).unwrap();
50-
add_debug_name(graph, proj_scope, "tsconfig.proj_scope");
45+
let proj_scope = if let Some(proj_name) = proj_name {
46+
let proj_scope_id = graph.new_node_id(file);
47+
let proj_scope = graph.add_scope_node(proj_scope_id, false).unwrap();
48+
add_debug_name(graph, proj_scope, "tsconfig.proj_scope");
5149

52-
// project definition
53-
let proj_def = add_ns_pop(graph, file, root, PROJ_NS, proj_name, "tsconfig.proj_def");
54-
add_edge(graph, proj_def, proj_scope, 0);
50+
// project definition
51+
let proj_def = add_ns_pop(graph, file, root, PROJ_NS, proj_name, "tsconfig.proj_def");
52+
add_edge(graph, proj_def, proj_scope, 0);
5553

56-
// project reference
57-
let proj_ref = add_ns_push(graph, file, root, PROJ_NS, proj_name, "tsconfig.proj_ref");
58-
add_edge(graph, proj_scope, proj_ref, 0);
54+
// project reference
55+
let proj_ref = add_ns_push(graph, file, root, PROJ_NS, proj_name, "tsconfig.proj_ref");
56+
add_edge(graph, proj_scope, proj_ref, 0);
57+
58+
proj_scope
59+
} else {
60+
root
61+
};
5962

6063
// root directory
6164
let pkg_def = add_pop(graph, file, proj_scope, PKG_M_NS, "tsconfig.pkg_def");

languages/tree-sitter-stack-graphs-typescript/src/stack-graphs.tsg

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -236,22 +236,27 @@ attribute node_symbol = node => symbol = (source-text node), source_n
236236

237237
;; Project and module definitions
238238
(program)@prog {
239-
; project definition
240-
node proj_def__ns
241-
attr (proj_def__ns) pop_symbol = "%Proj"
242-
edge ROOT_NODE -> proj_def__ns
243-
;
244-
node proj_def
245-
attr (proj_def) pop_symbol = PROJECT_NAME
246-
edge proj_def__ns -> proj_def
239+
var proj_scope = ROOT_NODE
240+
if (not (eq PROJECT_NAME "")) {
241+
; project definition
242+
node proj_def__ns
243+
attr (proj_def__ns) pop_symbol = "%Proj"
244+
edge proj_scope -> proj_def__ns
245+
;
246+
node proj_def
247+
attr (proj_def) pop_symbol = PROJECT_NAME
248+
edge proj_def__ns -> proj_def
249+
;
250+
set proj_scope = proj_def
251+
}
247252

248253
; module definition
249254
let mod_name = (path-filestem FILE_PATH)
250255
let mod_path = (path-normalize (path-join (path-dir FILE_PATH) mod_name))
251256
;
252257
node mod_def__ns
253258
attr (mod_def__ns) pop_symbol = "%M"
254-
edge proj_def -> mod_def__ns
259+
edge proj_scope -> mod_def__ns
255260
;
256261
var mod_scope = mod_def__ns
257262
scan mod_path {
@@ -274,22 +279,27 @@ attribute node_symbol = node => symbol = (source-text node), source_n
274279

275280
;; Project and module reference
276281
(program)@prog {
277-
; project reference
278-
node proj_ref__ns
279-
attr (proj_ref__ns) push_symbol = "%Proj"
280-
edge proj_ref__ns -> ROOT_NODE
281-
;
282-
node proj_ref
283-
attr (proj_ref) push_symbol = PROJECT_NAME
284-
edge proj_ref -> proj_ref__ns
285-
; compose all packages files by adding edge to the package reference
286-
edge @prog.lexical_scope -> proj_ref
282+
var proj_scope = ROOT_NODE
283+
if (not (eq PROJECT_NAME "")) {
284+
; project reference
285+
node proj_ref__ns
286+
attr (proj_ref__ns) push_symbol = "%Proj"
287+
edge proj_ref__ns -> proj_scope
288+
;
289+
node proj_ref
290+
attr (proj_ref) push_symbol = PROJECT_NAME
291+
edge proj_ref -> proj_ref__ns
292+
;
293+
set proj_scope = proj_ref
294+
; compose all project files by adding edge to the project reference
295+
edge @prog.lexical_scope -> proj_scope
296+
}
287297

288298
; module reference
289299
;
290300
node mod_ref__ns
291301
attr (mod_ref__ns) push_symbol = "%M"
292-
edge mod_ref__ns -> proj_ref
302+
edge mod_ref__ns -> proj_scope
293303
;
294304
let mod_dir = (path-normalize (path-dir FILE_PATH))
295305
var mod_scope = mod_ref__ns

0 commit comments

Comments
 (0)