From d1fc10fb85956c944f23628303b057a90b1a1999 Mon Sep 17 00:00:00 2001 From: Sean Li <22557931+sean0407@users.noreply.github.com> Date: Tue, 20 Oct 2026 02:06:06 +0800 Subject: [PATCH] Fix AlwaysListMatcher behavior --- engine/src/list_matcher.rs | 2 +- engine/src/scheme.rs | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/engine/src/list_matcher.rs b/engine/src/list_matcher.rs index 2de813ed..dd5c263c 100644 --- a/engine/src/list_matcher.rs +++ b/engine/src/list_matcher.rs @@ -102,7 +102,7 @@ impl ListDefinition for AlwaysList { impl ListMatcher for AlwaysListMatcher { fn match_value(&self, _: &str, _: &LhsValue<'_>) -> bool { - false + true } fn clear(&mut self) {} diff --git a/engine/src/scheme.rs b/engine/src/scheme.rs index 3e6b0343..e55c0b64 100644 --- a/engine/src/scheme.rs +++ b/engine/src/scheme.rs @@ -2070,6 +2070,22 @@ fn test_scheme_json_rejects_invalid_identifier() { assert!(err.to_string().contains("invalid identifier 1invalid")); } +#[test] +fn test_always_list_matches() { + use crate::{AlwaysList, ExecutionContext}; + + let mut builder = Scheme! { num: Int }; + builder.add_list(Type::Int, AlwaysList {}).unwrap(); + let scheme = builder.build(); + + let filter = scheme.parse("num in $numbers").unwrap().compile(); + let mut ctx = ExecutionContext::new(&scheme); + ctx.set_field_value(scheme.get_field("num").unwrap(), 42) + .unwrap(); + + assert_eq!(filter.execute(&ctx), Ok(true)); +} + #[test] fn test_nil_not_equal_behavior_true() { use crate::{Array, ExecutionContext, Map};