Skip to content

Commit 4073c4d

Browse files
committed
Fixes rust-analyzer include_dirs for crates with generated sources
1 parent b0daae0 commit 4073c4d

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

rust/private/rust_analyzer.bzl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,10 @@ def _create_single_crate(ctx, attrs, info):
256256
src_map = {src.short_path: src for src in srcs if src.is_source}
257257
if info.crate.root.short_path in src_map:
258258
crate["root_module"] = _WORKSPACE_TEMPLATE + src_map[info.crate.root.short_path].path
259-
crate["source"]["include_dirs"].append(path_prefix + info.crate.root.dirname)
259+
crate["source"]["include_dirs"].extend([
260+
_WORKSPACE_TEMPLATE + src_map[info.crate.root.short_path].dirname,
261+
path_prefix + info.crate.root.dirname,
262+
])
260263

261264
if info.build_info != None and info.build_info.out_dir != None:
262265
out_dir_path = info.build_info.out_dir.path

test/rust_analyzer/generated_srcs_test/rust_project_json_test.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@ mod tests {
5050
assert!(with_gen.root_module.ends_with("/lib.rs"));
5151

5252
let include_dirs = &with_gen.source.as_ref().unwrap().include_dirs;
53-
assert!(include_dirs.len() == 1);
54-
assert!(include_dirs[0].starts_with(output_base));
53+
assert_eq!(include_dirs.len(), 2);
54+
55+
// The first entry is the workspace directory.
56+
assert!(!include_dirs[0].starts_with(output_base));
57+
58+
// The second entry is the ouput base, where the generated files are located.
59+
assert!(include_dirs[1].starts_with(output_base));
5560
}
5661
}

0 commit comments

Comments
 (0)