From cd457a7d6bced5a117b9ac73bdb16a1c61c66af1 Mon Sep 17 00:00:00 2001 From: Asger F Date: Thu, 7 May 2026 09:47:27 +0200 Subject: [PATCH] Move Swift language into its own module --- unified/extractor/src/extractor.rs | 24 ++++--------------- .../extractor/src/languages/swift/swift.rs | 23 ++++++++++++++++++ 2 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 unified/extractor/src/languages/swift/swift.rs diff --git a/unified/extractor/src/extractor.rs b/unified/extractor/src/extractor.rs index 5a250257c84..137b2f3c0e4 100644 --- a/unified/extractor/src/extractor.rs +++ b/unified/extractor/src/extractor.rs @@ -3,7 +3,9 @@ use std::path::PathBuf; use codeql_extractor::extractor::simple; use codeql_extractor::trap; -use yeast::{rule, DesugaringConfig}; + +#[path = "languages/swift/swift.rs"] +mod swift; #[derive(Args)] pub struct Options { @@ -20,31 +22,13 @@ pub struct Options { file_list: PathBuf, } -fn swift_desugaring_rules() -> Vec { - vec![ - rule!( - (additive_expression) - => - (simple_identifier "blah") - ), - ] -} - pub fn run(options: Options) -> std::io::Result<()> { codeql_extractor::extractor::set_tracing_level("ql"); - let swift_desugar = DesugaringConfig::new(swift_desugaring_rules()); - let extractor = simple::Extractor { prefix: "unified".to_string(), languages: vec![ - simple::LanguageSpec { - prefix: "swift", - ts_language: tree_sitter_swift::LANGUAGE.into(), - node_types: tree_sitter_swift::NODE_TYPES, - file_globs: vec!["*.swift".into(), "*.swiftinterface".into()], - desugar: Some(swift_desugar), - }, + swift::language_spec(), ], trap_dir: options.output_dir, trap_compression: trap::Compression::from_env("CODEQL_QL_TRAP_COMPRESSION"), diff --git a/unified/extractor/src/languages/swift/swift.rs b/unified/extractor/src/languages/swift/swift.rs new file mode 100644 index 00000000000..5b21473874c --- /dev/null +++ b/unified/extractor/src/languages/swift/swift.rs @@ -0,0 +1,23 @@ +use codeql_extractor::extractor::simple; +use yeast::{rule, DesugaringConfig}; + +fn desugaring_rules() -> Vec { + vec![ + rule!( + (additive_expression) + => + (simple_identifier "blah") + ), + ] +} + +pub fn language_spec() -> simple::LanguageSpec { + let desugar = DesugaringConfig::new(desugaring_rules()); + simple::LanguageSpec { + prefix: "swift", + ts_language: tree_sitter_swift::LANGUAGE.into(), + node_types: tree_sitter_swift::NODE_TYPES, + file_globs: vec!["*.swift".into(), "*.swiftinterface".into()], + desugar: Some(desugar), + } +}