@@ -17,6 +17,7 @@ use std::{
1717 collections:: HashMap ,
1818 path:: { Path , PathBuf } ,
1919} ;
20+ use std:: { env, fs} ;
2021use tracing:: { error, info, warn} ;
2122use tracing_subscriber:: layer:: SubscriberExt ;
2223use tracing_subscriber:: util:: SubscriberInitExt ;
@@ -77,17 +78,19 @@ impl<'a> Extractor<'a> {
7778 }
7879 let no_location = ( LineCol { line : 0 , col : 0 } , LineCol { line : 0 , col : 0 } ) ;
7980 if let Err ( reason) = semantics_info {
80- let message = format ! ( "semantic analyzer unavailable ({reason})" ) ;
81- let full_message = format ! (
82- "{message}: macro expansion, call graph, and type inference will be skipped."
83- ) ;
84- translator. emit_diagnostic (
85- trap:: DiagnosticSeverity :: Warning ,
86- "semantics" . to_owned ( ) ,
87- message,
88- full_message,
89- no_location,
90- ) ;
81+ if !reason. is_empty ( ) {
82+ let message = format ! ( "semantic analyzer unavailable ({reason})" ) ;
83+ let full_message = format ! (
84+ "{message}: macro expansion, call graph, and type inference will be skipped."
85+ ) ;
86+ translator. emit_diagnostic (
87+ trap:: DiagnosticSeverity :: Warning ,
88+ "semantics" . to_owned ( ) ,
89+ message,
90+ full_message,
91+ no_location,
92+ ) ;
93+ }
9194 }
9295 translator. emit_source_file ( ast) ;
9396 translator. trap . commit ( ) . unwrap_or_else ( |err| {
@@ -276,5 +279,16 @@ fn main() -> anyhow::Result<()> {
276279 }
277280 }
278281 }
282+ let builtins_dir = env:: var ( "CODEQL_EXTRACTOR_RUST_ROOT" )
283+ . map ( |path| Path :: new ( & path) . join ( "tools" ) . join ( "builtins" ) ) ?;
284+ let builtins = fs:: read_dir ( builtins_dir) . context ( "failed to read builtins directory" ) ?;
285+ for entry in builtins {
286+ let entry = entry. context ( "failed to read builtins directory" ) ?;
287+ let path = entry. path ( ) ;
288+ if path. extension ( ) . is_some_and ( |ext| ext == "rs" ) {
289+ extractor. extract_without_semantics ( & path, "" ) ;
290+ }
291+ }
292+
279293 extractor. emit_extraction_diagnostics ( start, & cfg)
280294}
0 commit comments