Skip to content

Commit e8797ed

Browse files
committed
Rust: extract declarations of builtin types
1 parent 254789c commit e8797ed

File tree

4 files changed

+43
-0
lines changed

4 files changed

+43
-0
lines changed

rust/BUILD.bazel

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ pkg_filegroup(
3636
srcs = [
3737
":tools-arch",
3838
"//rust/tools",
39+
"//rust/tools/builtins",
3940
],
4041
prefix = "tools",
4142
)

rust/extractor/src/main.rs

+9
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use std::{
1717
collections::HashMap,
1818
path::{Path, PathBuf},
1919
};
20+
use std::{env, fs};
2021
use tracing::{error, info, warn};
2122
use tracing_subscriber::layer::SubscriberExt;
2223
use tracing_subscriber::util::SubscriberInitExt;
@@ -276,5 +277,13 @@ fn main() -> anyhow::Result<()> {
276277
}
277278
}
278279
}
280+
let builtins_dir = env::var("CODEQL_EXTRACTOR_RUST_ROOT")
281+
.map(|path| Path::new(&path).join("tools").join("builtins"))?;
282+
let builtins = fs::read_dir(builtins_dir).context("failed to read builtins directory")?;
283+
for entry in builtins {
284+
let entry = entry.context("failed to read builtins directory")?;
285+
extractor.extract_without_semantics(&entry.path(), "builtins");
286+
}
287+
279288
extractor.emit_extraction_diagnostics(start, &cfg)
280289
}

rust/tools/builtins/BUILD.bazel

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
load("//misc/bazel:pkg.bzl", "codeql_pkg_files")
2+
3+
codeql_pkg_files(
4+
name = "builtins",
5+
srcs = glob(["*.rs"]),
6+
prefix = "builtins",
7+
visibility = ["//rust:__subpackages__"],
8+
)

rust/tools/builtins/types.rs

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// The Language Prelude: https://doc.rust-lang.org/reference/names/preludes.html#language-prelude
2+
3+
// Type namespace
4+
// Boolean type
5+
pub struct bool;
6+
// Textual types
7+
pub struct char;
8+
pub struct str;
9+
// Integer types
10+
pub struct i8;
11+
pub struct i16;
12+
pub struct i32;
13+
pub struct i64;
14+
pub struct i128;
15+
pub struct u8;
16+
pub struct u16;
17+
pub struct u32;
18+
pub struct u64;
19+
pub struct u128;
20+
// Machine-dependent integer types
21+
pub struct usize;
22+
pub struct isize;
23+
// floating-point types
24+
pub struct f32;
25+
pub struct f64;

0 commit comments

Comments
 (0)