From f8966fe2a8c982ff9334ab24f05fa6fd198007a5 Mon Sep 17 00:00:00 2001 From: alexion Date: Fri, 18 Sep 2026 23:57:08 -0400 Subject: [PATCH] feat(xatu): report deprecated toPath calls --- src/xatu/BUILD | 3 + src/xatu/ast.rs | 23 +++++++ src/xatu/parser.rs | 62 +++++++++++++++++++ src/xatu/rules.rs | 19 +++--- src/xatu/rules/deprecated_to_path.rs | 39 ++++++++++++ src/xatu/rules/empty_inherit.rs | 1 + .../testdata/deprecated_to_path_ident.nix | 1 + .../testdata/deprecated_to_path_select.nix | 1 + src/xatu/xatu_test.rs | 32 +++++++++- 9 files changed, 173 insertions(+), 8 deletions(-) create mode 100644 src/xatu/rules/deprecated_to_path.rs create mode 100644 src/xatu/testdata/deprecated_to_path_ident.nix create mode 100644 src/xatu/testdata/deprecated_to_path_select.nix diff --git a/src/xatu/BUILD b/src/xatu/BUILD index 3b3550b..85abfea 100644 --- a/src/xatu/BUILD +++ b/src/xatu/BUILD @@ -8,6 +8,7 @@ rust_library( "file_store.rs", "parser.rs", "rules.rs", + "rules/deprecated_to_path.rs", "rules/empty_inherit.rs", "xatu.rs", ], @@ -29,6 +30,8 @@ rust_test( srcs = ["xatu_test.rs"], data = [ "testdata/clean.nix", + "testdata/deprecated_to_path_ident.nix", + "testdata/deprecated_to_path_select.nix", "testdata/empty_inherit.nix", "testdata/invalid.nix", ], diff --git a/src/xatu/ast.rs b/src/xatu/ast.rs index 3e22150..d64e63c 100644 --- a/src/xatu/ast.rs +++ b/src/xatu/ast.rs @@ -1,5 +1,27 @@ use crate::FileId; +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Apply { + pub function: Expr, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum Expr { + Ident(Ident), + Select(Box