From 313cca66cc14638cf947c3e980604a04a1724405 Mon Sep 17 00:00:00 2001 From: Puck Meerburg Date: Sun, 2 Mar 2025 20:29:57 +0000 Subject: [PATCH] (zilch lang rust cargo): track check-cfg flags in Cargo files --- lang/rust/src/cargo.sld | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/lang/rust/src/cargo.sld b/lang/rust/src/cargo.sld index b4d6dc4..1ca1611 100644 --- a/lang/rust/src/cargo.sld +++ b/lang/rust/src/cargo.sld @@ -32,7 +32,7 @@ cargo-crate-name cargo-crate-version cargo-crate-edition cargo-crate-dependencies cargo-crate-features cargo-crate-lib-target cargo-crate-targets cargo-crate-build-dependencies cargo-crate-build-script - cargo-crate-links + cargo-crate-links cargo-crate-check-cfg-lint make-cargo-workspace cargo-workspace? cargo-workspace-members cargo-workspace-exclude cargo-workspace-dependencies @@ -149,7 +149,7 @@ (cargo-dependency-optional entry))) (define-record-type - (make-cargo-crate name version edition workspace dependencies build-dependencies features lib-target build-script targets links) + (make-cargo-crate name version edition workspace dependencies build-dependencies features lib-target build-script targets links check-cfg-lint) cargo-crate? (name cargo-crate-name) (version cargo-crate-version) @@ -161,7 +161,8 @@ (lib-target cargo-crate-lib-target) (build-script cargo-crate-build-script) (targets cargo-crate-targets) - (links cargo-crate-links)) + (links cargo-crate-links) + (check-cfg-lint cargo-crate-check-cfg-lint)) (define-record-printer ( entry out) (fprintf out "#" @@ -174,13 +175,14 @@ (cargo-crate-targets entry))) (define-record-type - (make-cargo-workspace members exclude dependencies edition version) + (make-cargo-workspace members exclude dependencies edition version check-cfg-lint) cargo-workspace? (members cargo-workspace-members) (exclude cargo-workspace-exclude) (dependencies cargo-workspace-dependencies set-cargo-workspace-dependencies!) (edition cargo-workspace-edition) - (version cargo-workspace-version)) + (version cargo-workspace-version) + (check-cfg-lint cargo-workspace-check-cfg-lint)) (define-record-printer ( entry out) (fprintf out "#" @@ -344,6 +346,11 @@ (define package-links (and-cdr (assoc "links" package))) (define package-edition (or (and-cdr (assoc "edition" package)) "2015")) + (define lints (vector->list (or (and-cdr (assoc "lints" internals)) #()))) + (define lints-rust (vector->list (or (and-cdr (assoc "rust" lints)) #()))) + (define lints-rust-unexpected-cfgs (vector->list (or (and-cdr (assoc "unexpected_cfgs" lints-rust)) #()))) + (define check-cfg (or (and-cdr (assoc "check-cfg" lints-rust-unexpected-cfgs)) '())) + (when (and (vector? package-edition) (and-cdr (assoc "workspace" (vector->list package-edition)))) (unless workspace (error "Package used edition.workspace = true, but no workspace provided" package-name)) (set! package-edition (cargo-workspace-edition workspace))) @@ -406,18 +413,23 @@ (vector->list (or (and-cdr (assoc "target" internals)) #()))) (define own-features (parse-features (vector->list (or (and-cdr (assoc "features" internals)) #())) (map cargo-dependency-name dependencies) (map cargo-dependency-name build-dependencies))) - (make-cargo-crate package-name package-version package-edition workspace dependencies build-dependencies own-features lib-target build-script-target other-targets package-links)) + (make-cargo-crate package-name package-version package-edition workspace dependencies build-dependencies own-features lib-target build-script-target other-targets package-links (append check-cfg (if workspace (cargo-workspace-check-cfg-lint workspace) '())))) (define (parse-cargo-workspace internals) (define workspace (vector->list (cdr (assoc "workspace" internals)))) (define workspace-members (or (and-cdr (assoc "members" workspace)) '())) (define workspace-exclude (or (and-cdr (assoc "exclude" workspace)) '())) + (define lints (vector->list (or (and-cdr (assoc "lints" internals)) #()))) + (define lints-rust (vector->list (or (and-cdr (assoc "rust" lints)) #()))) + (define lints-rust-unexpected-cfgs (vector->list (or (and-cdr (assoc "unexpected_cfgs" lints-rust)) #()))) + (define check-cfg (or (and-cdr (assoc "check-cfg" lints-rust-unexpected-cfgs)) '())) + (define package (vector->list (or (and-cdr (assoc "package" workspace)) #()))) (define package-edition (and-cdr (assoc "edition" package))) (define package-version (and-cdr (assoc "version" package))) - (define workspace-record (make-cargo-workspace workspace-members workspace-exclude #f package-edition package-version)) + (define workspace-record (make-cargo-workspace workspace-members workspace-exclude #f package-edition package-version check-cfg)) (define dependencies (map (lambda (kv)